Home About & Resume Contact

Survival Of The Cutest


1 / 7
2 / 7
3 / 7
4 / 7
5 / 7
6 / 7
7 / 7

Game concept art.
Game screenshot.
Game screenshot.
Game screenshot.
Hiding mechanic.
Sacrifice mechanic.
Flash mechanic.

About the project:

Survival of the Cutest is developed in the style of old school survival horrors, within a much more miniature world. Set in a dollhouse, you play as a bunny rabbit doll as they flee from a relentless, dart-throwing action man. Players can sacrifice friends, complete quests, and make use of tools within the environment to ensure their escape.

Engine:

Unreal Engine 5

Platform:

Windows

Team size:

12

Development time:

In development

Download:

Itch.io

   

My responsibilities:

While this page contains a lot of my work it is best to simply have a chat with me about ALL the work I have done for the project!


Game trailer:

Details


Sarge AI Brain.

The main enemy in the game, Sarge, is a simple AI using a behaviour tree with various branches deciding his behaviour. While the majority of Sarge's behaviour is dictated by the behaviour tree some of his abilities such as pawn sensing, special abilities to use and extra functionality is being stored and processed in the AI controller. Inspired by Mr X from Resident Evil and the Alien from Alien Isolation this AI has been an amazing challenge and great fun to design and develop!

Sarge's abilities:

To create this AI I had to usilise the power of behaviour trees in Unreal Engine. Different custom tasks were created for Sarge's different behaviours with decorators and services to update the blackboard and check the conditions required to perform a task.

Example of Sarge's abilities in the behaviour tree:

The selector node can choose one of two abilities to perform. But firstly the decorators must allow this branch of the tree to be exectued. For the game's purposes I used two decorators. The first one checks the distance from the AI pawn to the player, if it is above 600 units this decorator will pass the test. The second one is a blackboard key decorator, it will check if the set key (in this case the CanUseAbilities bool) is true. The CanUseAbilities bool is being calculated in the pawn AI controller as it is a simple cooldown. Lastly we have a service which will randomly return an intiger in range, I then use that intiger to select a random ability for Sarge to perform (as both abilities have a decorator to check it).

Game UI.

I have created the majority of the game's UI. I have created the look of the main menu, the settings widgets, the death animation and many more in the game. By using Unreal Engines built in widget creator and animation tools I was able to create smooth and polished looking UI that let's the player easly navigate through the game's UI.

Konami code secrets in menu:

Partly as a joke to hide an easter egg (No hints here, try to guess the combination), but also as a tool to hide development tools, I have created a very simple mechanic to trigger an event after a special set of keys had been pressed in the right order. Obviously inspired by the legendary Konami code.

Firstly I needed an array of Key values to create the secret code, then whenever the player triggers the "AnyKey" event I check if the triggered key matches the key at the current index. If it does not match we simply reset the index back to 0. If it does on the other hand we will check if we are at the last possible index by comparing the index value to the length of the secret Key values array. If we are it means we can trigger whetever event or function we want and we reset the index to 0. If we are not at the end of the array we simply increase the index by one.

Doors (I know... the devil.).

To increase the dificulty and feel of a dollhouse I created simple doors. As the player will be running fast through the dollhouse they can open both ways. The door can be locked needing a key to open or simple just opened. The angle of the door can be adjusted by designers as well as the duration of locked door prompt. The door can also be opened by default.

How do they work:

To preserve memory each door has a trigger box, it will detect if player is near them. Once the player enters the triggerbox I can calucate on which side of the door the player is. This is so we can know what angle to rotate the door to as to always have it open outwards. I enable a Trace for objects that will check if player is looking at the door itself. Then we can simply open the door using a timeline.

The core logic:

For AI interactions I use a different logic. As we want the AI to smoothly open and close doors when necessarry I will only check for them when they collide with the door itself. I simply cast to the 2 types of AI we have in the game and call the event for them.

Once we know which event to call we can trigger the logic to open the door based on AI type. If a friend has collided with the door we only check if the door is opened, if not we can calculate the dot product and open the door. For sarge we have to check in which state he is as we want to destroy the door upon collision if he is chasing the player. To do this I use the switch on MrXStates. If he is not chasing we use the same logic as for friends, but if he is then we call the destroy door function.

To destroy the door I simply get the current door location and rotation, then I can destroy the door component to then replace it with a breakable door (Chaos) and apply the old door transforms. Simple but very effective.