Step Lightly
Project 7 at The Game Assembly: the exam project, a little nightmares inspired horror game

Trailer TBA
Synopsis
As a neglected child, sneak through the mess of your house to escape your abusive family.
Development
This game is a work in progress and is scheduled to be released by mid june!
Contributions
My primary contributions this project is programming of enemy AI, companion AI and VFX and animation implementation.
Enemy AI
State Machine – modular behavior blocks
Both enemies in the game use a state machine where I've created states to be modular and be used for both enemies but with differnt logic within the specific states. This makes it easy to debug their behavior and continously iterate on specific states.
The Mother – reacting to sound
The mother is a blind enemy that is triggered by sound. I created a component that is attached to all objects that emits sound. I use information gained from physX to determine how loud the impact is and send an event to the mother to notify her of sounds being made in the environment.
I also had to combine physX with navmesh to make the enemies pathfind through the navmesh but move through our physx system in order from them to be able to interact with physX colliders.
The Father – reacting to sound and sight
The father is basically just an extension of the mother. The only thing that separates them is that he has the ability to see the player. He uses the sound system mentioned above and a combination of a detection cone and raycasts to determine if he can see the player. When the player hides behind or under game objects in the scene, the father will receive an event that the player is hidden and move to the last location where he saw the player and search there.



Companion AI
The dog uses a state machine and navmesh pathfinding. The levels are however not built to suit the dog, which required me to use some creative solutions to make the dog traverse the levels in a natural-ish way. I ended up with a default state (idle, standing and eventually sitting), follow state (keep close to the player), parked state (move to specific spots and idle there), backpack state (jumping in or out of backpack and activating the additive backpack animation) and scripted event state (do specific movement when there’s no available navmesh).
To make the dog jump up on stuff and into or out of the backpack I implemented a sinus curve into the jump that created a smoother arc towards the goal.



VFX Implementation
Flipbook VFX in a 3D environment
In order for flip book VFX to work in a 3D environment I had to project it onto a 2D plane that’s rotated towards the camera. This worked really well as a component that I placed on a specific joint of skeleton models in the game. The plane rotates so it’s always facing the camera when the VFX is active, thereby making it seem like a 3D object in the environment.
For the lighter I also used raycasts to make sure that the spotlight didn’t clip through walls and instead moved closer to the player when it would intersect with other colliders.




What I learned
During this game project I learned a lot about using physX components in character movement. I also more gained insights on state machines and how to create dynamic and modular AI behavior using this system. I would also say that I gained more experience using linear algebra to tweak movement.
Credits
Water Leaks Studio
Programming
- Ylver Blum Buer
- Elias Ronefors
- David Grahn
- Abraham Alberto
- Erik Edfors
- Jonathan Rozenberg
Graphics
- Melker Ljung
- Marcus Carlsson
- Kim Betsgren
- Milla Jaakkola Landin
- Emmett Motamed
Level Design
- Johan Rosdahl
- Erik Gatewood
- Ahab Ibrahim
Animators
- Theo Hübner Sallis
- Emilia Eriksson
- Rebecca Kornemalm
Technical Art
- Isabelle Neuman
- Elvira Paxborn
- Philip Bäcklund
Third Party
WWise by Audiokinetic
Level building in Unreal Engine by Epic Games Inc.



