Fear Systems

📅 2023-05-04

So, I’ve been in engine most of the day and I’m slowly progressing with what I want for the experience of the snow levels. I spent most of that time fleshing out the concept of a dynamic environment that changes based on some sort of game tracking, and of course to leverage the procedural nature of the game, I tried to come up with something that isn’t heavily curated or based on event or story progression. Apologies up front, today won’t be a very visual update, because we’ll be discussing a paper that I’ve mentioned in passing on both stream and in the discord called “Level of Fear: Analysis of Fear Spectrum Into A Tool To Support Horror Game Design For Immersion And Fear” by Konstantinos Ntokos - what a mouthful.



The reason this paper struck my fancy, is because a big problem I have in our explorations of indie and AA horror alike, is how fear progression is handled. Some are better than others, for sure, but many have a tendency to use ‘Jump Scares’ at the wrong times, in the wrong places, and in the wrong ways. It does it’s job of course, for many of the people you see playing, but it works only in that sneaking up to anyone and suddenly shouting at them would have a similar effect - is it effective horror design? We hear all the time, for example in horror films and games alike, that they’re full of ‘cheap’ jumpscares - what do they mean?



To be clear, I’m not anti-jumpscare by any means. The reaction to ‘cheap’ jumpscares by many is to fault them conceptually, but the paper I mentioned above does a good job of explaining why and when they are useful - as would any light experience in film theory and specifically how horror as a film genre uses them.


Jumpscares are a crescendo, they sit on one end of a long build up of tension, and once they occur, that tension is “spent”, and the player, while shocked, will probably laugh or feel relief in some way, having survived the jumpscare and being in a newly discovered state of safety. Jumpscares, when looking at the paper above, occur specifically between the fear levels 7 and 10, with those occuring at level 7 being of the weak variety, and building up to the strong sort at fear level 10.



But if we’re not experiencing jumpscares throughout a horror game, what the heck are we there for? What are we supposed to yell in response to, for those sweet sweet youtube views? Most horror games are structured with a calm beginning point, and a build up to a hectic end point, while some may choose to ‘loopify’ the horror build up (longer horror games) by using many rises and falls, most indie horrors use the entire game as a single progression along a tension spectrum - a single build up and release. And if we look to that paper again, we can see that fear as a game design tool is split across 10 levels of fear, with level 1 representing the calm before the storm, and level 10 on the opposite end of the spectrum representing outright panic. Helpfully, it also explains each level in detail, describing the sorts of events that create the build up we’re talking about.


For example, at level 3 we may begin seeing blood in the environment, or hearing distant sounds that unsettle us. At level 5, we may see a painting fall off a wall, a door slam for no reason, sounds that are getting all the closer, and following that we may be introduced to a physical presence which is scary and must be avoided, sending us into Level 8.



It’s the designers job then, to spread out these levels of fear build up across the game, or loop. This is usually done via a curated level progression, for example: in Silent Hill 4, we begin in relative safety after the unsettling dream we have. The environment is normal with the exception of the locks on the door, which may fit neatly in Level 2, a use of an unsettling environmental oddity to alert the player that something is wrong. We see the inciting incident of Cynthia going into the subway, and we begin to hear sounds (Level 4) that indicate an environmental change. Upon exploring we find a hole in the wall, and climbing through, we end up in the Subway. Here, we talk to Cynthia with some strange somewhat disjointed dialogue, and after she goes into the bathroom, Henry spends some time waiting for her before the door slowly swings open, and we get introduced to the first enemy in the game, bringing us to Level 8 - fight or flight. It’s not a perfect overlay of our framework, but it’s unmistakably a ramp up from 0 to 8 over a series of events.



‘Mirrors’ as a first person horror game, is very much utilizing the work of Ntokos, and the general intuitive understanding of tension as a device in it’s design philosophy. This isn’t a new concept by any means, but Ntokos gives us a nice framework to apply as we build. And since this isn’t a heavily curated experience, we need a way to manage these levels in an automated way. In Push/Pull, for example, we discussed the building of the Haunt Mother, an AI that levels up as it scares the player, giving it access to higher level haunt abilities. This is split up over 5 levels, which is roughly analogous to the Ntokos breakdown of fear.



For the haunt mother, Level 1 is analogous to Fear Level 2 - 4, the Anxiety phase. These are environmental cues and light distant audio cues, for the most part. At the very end of this anxiety spectrum we introduce some minor visual hullicinations, lights flickering, doors slamming in the distance, objects moving behind you, etc. Level 2 in analogous to the Fear Levels 5 - 6 then, the stress stage. This includes surreal events that are unexplained, more severe object movement, environmental shifts, visual cues in the distance, sounds of footsteps behind you, etc.


Level 3 then, is Fear Levels 7 - 8, the Fear stage. Here is when we begin to come face to face with danger, our life is threatened, we have our fight or flight response, we may need to hide, or stay out of sight of the enemies who are present. And it’s here we can begin to get minor jumpscares. Finally, Levels 4 and 5 are analogous to the final two levels of our fear breakdown - Terror and Panic respectively. Terror is what occurs when we have failed at staying out of sight, or our hiding spot has been noticed. It is a sudden instinctual shift into a new level of terror as we come face to face once again with our enemy. This reminds me of Clock Tower 3, where once discovered, we can hide in the environment, but if we do it too late or too close to the chaser, we are then given a brief window to escape or suffer potentially a one hit kill.



Panic, as the final stage, is the highest possible moments of tension, strong jumpscares, hectic audio and visual hallucinations, a descent into madness that may be too much for the player to handle. They may at this point begin dovetailing for a safe zone, or put the controller down entirely, if the tension isn’t reduced in some way. So jumpscares at this level are effective at driving us back down to the anxiety stage, before we come face to face with the enemy once again. Most horror games then probably want to - at their most intense - loop between the last 5 of so levels, building up and releasing at the right moments. And in building the Haunt Mother with these final levels of possible abilities directed by the fear levels, that would be the goal.


All that being said, the AI cannot be the only driving factor behind all of this, we need a more encompassing system to manage both the AI and other elements in the environment, such as the music being played, the visual and audio effects being experienced, and this should all be based again, around our breakdown of fear levels presented by Ntokos. So for this reason, today, we built a Ntokos Manager, the overarching system that can track and control our game experience. Here is how it works:




The Ntokos Manager is built primarily around a single float, a number between 0 and 100. This bar represents the varying levels of escalation we see throughout the game and maps roughly to 5 different haunt levels, so just 100 divided by 5, to match our haunt mother. So, if our escalation value is 25, for example, we are at Haunt level 2. We then give our manager free access to all of the important systems in our game - our Labyrinth manager, our AI Haunt Mother, our Globals loop tracker, our Light manager, our Sound manager, etc. And when our escalation level changes, it changes all of these management systems to reflect the new escalation level. We change the escalation value by having objects in the environment indicate that our value should change, and this can be attached to any occurrence in the game, from picking up a note, to healing with a herb, to opening a door. It’s instanced, so we can call it as easy as a globals script and add any value we like. For example, if a door is opened in a script somewhere, we can simply do:



And in our Ntokos Manager, we have the method like so:



As you can see, when a value is changed, we send out an event that can be listened to by any object in the entire scene, all they need to do is subscribe to the event, like so:



Once it gets the event, it will run it’s UpdateLights method, and change the lights depending on our escalation level. The Ntokos Manager itself doesn’t need to be overly complicated as a result, it can handle minor system changes and then just send out events when it needs to. Here is a simple method that changes which background music we play depending on the escalation level:



We even change our volume level depending on what level of escalation we’re at. This is a super flexible, and super powerful tool to build, in order to support a potential horror game experience. Instead of curating individual heavily scripted occurrence to micro-manage the player’s fear, the player’s own behavior can cause potential escalation to occur. We can also throw additional escalation at the player from AI in the environment, by simply having it add escalation if it sees the player, for example. You could also remove escalation upon the enemies death, and by controlling it in this way, you could have the entire environment react - essentially - to the sudden appearance, battling of, and defeat, of an enemy. Lights may go blood red, sounds may layer haphazardly over another, doors may start slamming, or they might all lock suddenly. This doesn't have to be individually programmed in an event by event basis, it can be all linked and managed by one single script, and then the rest is just up to how the player plays the game. What makes this so interesting, is you can very quickly have emergent ‘fear’ events occurring.


If doors are programmed to lock briefly at a specific escalation level, for example, and the player is running along the wall trying not to be seen - depending on what level the player is at, suddenly being seen may render the door they're running toward, unusable. This will put the player in a worse position where they now have no escape and must defend. Likewise, if they’re taking say - some sort of resource that lowers escalation, such as sanity pills or what have you - they can then unlock the door by taking a pill. The potential for this is really quite endless.


And by integrating the system into AI systems, such as our haunt mother, it means that not only will it level up upon successfully scaring the player, but if the player has been escalating away from the AI on the otherside of the map, and has never seen the enemy thus far - once they meet, the AI mother reacts in an appropriate way since it knows the overall escalation level the game state is in. You can also link general AI state machines along with animations, sounds, behaviors, directly to the escalation value, so enemies at level 1 may calmly amble around, but at escalation level 3, they may be darting around with extreme purpose, yelling loudly and banging on items as they pass, searching for a target.



This may call to mind the system in Eternal Darkness, that changes the environment based on your sanity level. Or Shattered Memories, which changes the story flavor depending on what the player did throughout the game. These systems were early attempts at something like this that left memorable marks on the genre as a whole, and I think it’s important as designers we think about how we can advance these sorts of mechanically interesting systems to better build horror experiences.


So yes, apologies for the lack of a visual development blog today, because I felt like this system was too much fun not to talk about. They say make what you want to play, and that’s what I’m trying to do. Something that takes the curated haunted house experience, and makes it much more dynamic, driven by player agency. And while I’ve certainly played games that do similar things, it’s my hope that we can start to see this sort of approach to horror design in the indie space. We’re not talking complicated systems here, we’re just taking a more ludological mechanized approach to designing the horror experience. I am tired of experiencing the exact same type of jumpscare, linked to a triggerbox, in the same location every time. It’s time, perhaps, to throw away the string of pearls approach to design, actually utilize what the player is doing in your world, to give them an interesting experience.


Will it work in practice? I guess we’ll see as we move further along with ‘Mirrors’, but in testing the system, even in their rudimentary forms, the dynamism is really quite special, and I can’t wait to show it off. Remember to sign up to be a playtester if you're interested on the front page of the site, as I'd love some diverse responses to whatever we end up coming up with.