Sounds of Shadows is a Horror Survival game with Stealth aspects.
The main character is a robot that wakes up in an abandoned and destroyed underground facility. There are no light sources anywhere so the player can only see by using the echolocation module of the robot. You walk around slowly getting the story of what happened and who you are. Eventually you get introduced to the enemy. The game takes you through 3 levels slowly letting the player discover the story and what is really going on and ramping up the difficulty with enemy encounters.
Responsibilities
Designed all and implemented most of the enemy behaviour.
Implemented blend spaces and animations for the enemy.
Tested and iterated upon the enemy and game regularly.
About my work
Player Experience
The enemy is there as an ever looming presence, you can hear its footsteps echoing in the distance reminding you of its existence and growing threat. It definitely is a threat, but the player has a lot of counters to the behaviours of the enemy making sure it is ‘easily’ beatable.
With the way the echolocation works (not quite like actual echolocation) the player can see the anything around a sound source I.E; humming electronics, doors opening/closing, throwables hitting a surface and any footsteps.
Behaviour
One of the main tropes with this echolocation as our main mechanic is that when there is complete silence it creates a real fear factor for the players since they can’t see anything. This has created some great player experiences where the enemy stops walking in front of them and they literally freeze in fear.
On this game I was the only Enemy AI designer. So, I carried a lot of weight with the Enemy AI being the so called ‘star’ of the show. I worked in close proximity with animators, level designer and the team in charge of the main character.
The enemy is a mutated human which has been trapped in this facility for a long time now and has adapted to the lack of light and has its other senses heightened. The main inspiration for the enemy was the Xenomorph from Alien Isolation. I designed to entire enemy going through multiple iterations but always with the idea of the Xenomorph at its base. I wrote all of its behaviour in the prototype we made and then in later development I got a single programmer to help me with implementation.
At base the enemy would always roam around. It would have a priority for using high traffic sections and had an extra check that would make sure that every now and then it would go towards the current objective of the player and kind of ‘be in the way’.
Any sound the player would make either by walking or throwing objects, would put the enemy in an Investigating/Alerted state. Here it would run at the source of the sound and attack it, In the case of the player being the source the player could either quickly distract it with a new sound or disorient it with the sound blast gun the player has. If the enemy did not register a hit on the attack it would give it self a moment to process where it ran to and then run to the closest place that the player could be hiding behind; giving it that intelligent feel.
If the player gets in too close proximity of the enemy, it will enter the Attacking state. This could either happen by the player having made a sound and having failed to evade the enemies charge or by positioning themselves badly and having the enemy run into you. In this case the enemy would attack you instantly killing you.
Some screenshots of the behaviourtree and how it grew throughout development.
This was my first time creating an enemy of this size logic wise, while also working in a team this size for the first time. It really brought some lessons for me as a designer. Originally the level designer and I talked a lot about our work, but never put it together. This caused an issue later down the line where I had created an AI that could; go outside of the map in a backstage mode (this was to create periods of down time for the player if the enemy was too prominent for a longer period of time and if the enemy needed to retreat because it was being attacked or because it wanted to fast travel). It also had a menace gauge (This was to create an balanced player experience where it would stay further away on purpose at the start and slowly become more aggressive, faster and would stay closer the player).
When we eventually put this into the level to test, it was almost useless. The level was way too short of an experience for this to ever come into effect. This was a wake up call for us both and we then decided to cut a lot of this logic and re design the level to make sure they fit together and created a coherent experience. (The process of redesigning was done in Miro and can be seen on the image to the right)
Since the project was only 8 weeks, we got the animations quite late into the project. The artists had to first create an enemy, model it, rig it and then animate it. So, when I got the animations to finally implement them in the character with the behaviour this was a very exciting moment for me and the entire team. I finally saw my AI come to life. this feeling is really something that proved to me that I want to keep creating AI’s for games and I want to keep creating experiences.
(This is old footage from when I first got the walk and run animations, I took this video to show it in action to the team and it created a real morale boost to see this horrifying monster walk around our level.)
Take-Aways
Enemy AI Designer | Tech Designer
Apr 2024 - Jun 2024 (8 weeks)
23 people
Unreal Engine 5.3, Jira, Perforce