I was the main systems and gameplay programmer and technical designer on the project, tasked with refactoring prototype code/systems into shippable, performant code, as well as implement content and additional systems to get us toward ship.

My role on this project started with developing a custom audio system to handle spatialization and acoustics without relying on middleware. My system emulates Wwise to some degree, where my custom Emitter objects will spawn instances of AudioSources—and then route the signal to one reverb effects bus, so that the expensive effects processing only occurs once (as opposed to on each audio instance—which Unity’s vanilla workflow would have you do by attaching a ReverbFilter component to each AudioSource). I also handle obstruction/occlusion of audio with a zoning system, to reduce the need to path or raycast from each and every audio emitter to the audio listener.

II also developed the main AI agent of the game, and implemented a custom Goal Oriented Action Planning system; we went with GOAP because we wanted the agent to be able to surprise us, but didn’t want it’s behavior to seem “random”. We thought that adjusting costs of Actions dynamically might result in some of the behavior we were seeking.

A lot of the agent’s behavior was inspired by tools and talks that exposed how the alien in Alien: Isolation and Mr. X from Resident Evil 2 remake behave. For example, rather than cheating and magically “knowing” where the player’s location is, Mr. X will move 4x faster when a certain distance from the player, as he continues to patrol through the entire level—resulting in him crossing paths with the player more frequently. I created a system to emulate that behavior. This stands at stark contrast to the alien’s behavior, which had a director AI pointing it towards the players positions; in my opinion and experience, this kind of design results in the player sensing that the AI is somehow cheating, and feeling frustrated that they can’t shake them.

I also helped redesign several areas in the game, to create more tense encounters with our AI agent— a lot more blind corners (rather than big open spaces) to both be able to lose the agent when its on your tail, as well as be surprised when you accidentally round the corner and come face to face with it.

I also implemented a way to timeslice initialize components, to help with performance, based on this talk from Playdead developer Kristian Kjems, and implemented other performance enhancements in the game besides.

I also designed the last puzzle in the game! But, it’s a secret : )

Homebody

Previous
Previous

The Feast

Next
Next

Untitled Stealth Project