Main contributions
- Created a dynamic flocking system supporting 700+ agents at 60fps with Unity Job system and Burst Compiler
- Developer the enemy AI so our predators react to player actions, patrol areas, chase player and show frustration when player hides during a chase
- Created a robust decoupled code architecture for all the systems using observer, singleton and state patterns across the project
- Polished game feel through VFX, lighting, and animation tuning
- Support our audio team by taking the role of audio programmer, dealing with fmod in Unity
- Built a programmable cinematic system for in-game storytelling. Using the power of procedural animation our cinematic system is 100% by code and not Unity Timeline
- Coordinated and analyzed insights from 20+ player playtests
Experience and Design goals
After multiple iterations (checkout the design process for more) I wanted to achieve specific goals:
- Make the player feel scared and alone in an unknown world. A feeling of “I shouldn’t be here” caused by the environment and the AI behaviors of predators and other creatures around.
- Embrace minimalist design by having just one core mechanic and using visuals to tell the player how to play and progress. The only text you see is the main menu and the pause menu.
- Deliver a strong sense of vulnerability and tension through game feel (vfx, sound and visuals) and pacing
This is an effort on minimalist design with inspirations from games like Alien Isolation and Amnesia.
Making the enemy AI
The main idea was to mimic sight and sound perception. If the predator sees you, it will follow or chase you depending on how far away you are. I also created a way for the chase to continue even if the predator loses sight of you for a moment. I also added a frustration state the Predator shows when the player hides just in time during a chase. All this is done through behavior tress that talk to our Predator script that handles the states (default, investigate, follow, chasing and frustrated). Check the image below for a graphic representation of how the AI works.

Flocking System
In an effort to make the world feel more alive I created a flocking system with Unity Job system and Burst compiler. First, I started by actually reading a Craig Reynolds original Boids paper, learning about the principles of alignment, cohesion and separation. Afterwards I added my own twist to get specific behavior like following, orbit, hard and soft avoidance.
The FlockManager is responsible for creating and managing the agents, as well as establishing the behaviors that specific flock will have.
- FlockCore behavior that handles the base alignment, cohesion and separation code. Without this theres no flock really
- FlockGoal behavior handles if we want the flock to go somewhere specific like follow the player or patrol a route.
- FlockContainment that handles if we want to contain the flock in a specific area (a collider is used for this)
- FlockAvoid handles if the agents must avoid externals objects. A Hard void is that the agent will act like scary fish, if say the player gets near we make the agent go to the opposite direction with an extra acceleration. A soft avoid is the idea that the agent must “swim around” said object. This is still in progress as it is very costly.
The Design Process
Ideation: Visit to CSC
After experimenting with a few mechanic-based prototypes, my teammate and I visited the California Science Center for inspiration. Observing strange sea creatures turned out to be exactly what we needed. I became fascinated by organisms with reactive, tentacle-like filaments—they sparked the idea of capturing a living, surreal underwater ecosystem that is in constant movement by the use of procedural 2D animation.

Preproduction: experimenting with goals and constraints
First couple of weeks experimenting. I built movement-focused prototypes and experiments to convey character emotions without dialogue. A trip to the California Science Center and procedural animation prototypes inspired our alien underwater world setting, also leading to our key design constraint: no dialogue, minimal text.
Every single prototype tried to answer a design question:


Minimalist stealth gameplay
Aiming for accessibility and simplicity, I focused on movement and a single versatile mechanic, a “call” mechanic. Inspired by games like Super Meat Boy, our character remains unchanged, you get no power ups or anything like that, is the situations that change. Playtesting proved to very extremely important to get the movement just right so that players feel as a fast but fragile underwater creature.

Using the “Call” to communicate with your friend

Using “Call” to get the monster’s attention

Using “Call” to open gates
