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. 
Mom reacting to thrown items
Mom interacting with physX objects while chasing the player
Mom reacting to the sound of your footsteps while running

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.

The dog jumping in and out of the backpack
Showcase of follow and default behavior variation with player speed
Snippet from scripted event in level 1 and scripted event state movement

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.

Cigarette smoke and smoke puff showcase
Flipbook implementation on a static object
Early implementation of lighter flame flipbook VFX
Lighter flame and spotlight in a vent

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.