Once a Stray

Once a Stray is an action-platformer, Third-Person game that takes place in a fictional plague ridden city. The player combats undead rats with supernatural abilities. The game strikes a balance between ability based combat and platforming.

During the life cycle of Once a Stray, I was responsible for designing, scripting, and implementing all Enemy AI and creating our most intricate and technical system. I was given a fair bit of creative freedom to design and script all AI within our game. Here I was able to establish 3 unique enemy types and a Multi-Stage Boss Encounter. In addition to AI, I was responsible for scripting our modular Quick Time Event System.

Role: Technical Designer

Project Details:
• Team Size: 13
• Project Life Cycle: 4 months
• Game Engine: Unreal Engine 4

Highlighted Contributions:
• Designed and Scripted 3 Unique Enemy Types
• Designed and Scripted a Multi-Stage Boss Encounter
• Scripted a Modular Quick Time Event System
• Created all Animation Controllers and Implemented All Animations within Enemy AI Blueprints 
• Designed and Scripted all Unique Win Conditions Across Each Level
• Self-published Once a Stray to Steam

Enemy AI

Half of Once a Stray’s gameplay loop is vanquishing undead rats. I was tasked with creating 3 interesting enemy types and a final boss encounter. My Creative Director gave me a general idea for each type of enemy, but I was given the creative freedom to establish their movement and combat. With the sheer number of enemies on the screen at one time, I decided to place enemy health bars above their heads in worldspace.

Enemy #1 (Trague Rat):

Design:

The initial idea I was given for the Trague Rat was an enemy that would not pose much of a threat to the player on their own. This enemy would serve as the most common enemy type and serve as fodder for the player’s ultimate ability. I decided to design the Trague Rat with the idea of strength in numbers, but individually cowards.

Combat:

Trague Rats have the ability to swarm around the player. When moving towards the player, if a rat is unable to get close enough to attack, they will move to an available position on the other side of the player. This allows for up to about 8 Trague Rats to attack the player at once. If the Trague Rat is damaged, they will have a chance to run away. If it was spawned by a Kreier Rat or the final boss, it will return to the parent.

Enemy #2 (Mourder Rat):

Design:

The initial design I was given for the Mourder Rat was an enemy that would function as a bruiser. This enemy would be much harder to kill that the other 2 enemy types. I decided to take steps towards making this enemy more of a threat than the Trague Rat. Besides giving them more health and more damage, I decided to give them the ability to patrol and make it immune to knockback. This gives them more chances to catch the player off guard.

Combat:

Originally, I wanted to give the Mourder Rat a charge attack and a basic attack. Unfortunately, the animations required were out of scope, so I decided to combine the two into a single attack. Each basic attack knocks the player back. Since the Mourder Rat is immune to knockback, the player has no means of displacing the enemy to relieve pressure. This enemy also has more chances to spot the player on its patrol, making the area in which it patrol’s drastically more dangerous to the player.

Enemy #3 (Kreier Rat):

Design:

The initial design I was given for the Kreier Rat was an immobile, ranged enemy. This enemy was created because the animations required would not heavily tax our animators. As a Technical Designer, I wanted to get more value out of this enemy type and saw it as an opportunity to create a unique gameplay dynamic using the Kreier Rat. I designed its attacks to afford for the idea that this enemy would defend its home. These rats are placed upon the objectives for Level 2, which adds another layer of challenge for the player.

Combat:

Kreier Rats have two attacks that help them defend their territory. Their ranged, lightning-based attack strikes the player’s last recorded position after a brief delay. Kreier Rats can also spawn a Trague Rat to attack the player as well. If this enemy type is left unchecked after entering combat against it, it will amass a small army of Trague Rats and make dealing with it more difficult. 

Boss #1 (Lazarus the Necromancer):

Design:

Unlike the other 3 enemies, I had the opportunity to design and script Lazarus from the ground up. As a necromancer. As a bringer of plague and the undead, Lazarus is a Necromancer. All of his attack feature a sickly green hue and many are accented with skulls. Similarly to the Mourder Rat, the animations I was going to be able to utilize were limited. With that limitation in mind, I decided to design Lazarus with a focus on what could be done without animations and as a culmination of all of the enemy types. One of the interesting design choices I decided to go with was to have the boss fight plays out in 3 stages. As Lazarus’ health depletes, similarly to the Trague Rat, the boss will run away, further up the Bell Tower. As the boss transitions to the next floor, he spawns Trague Rats on the path the player must take to reach him.

Combat:

Most of Lazarus’ attacks are based on the other enemy types as well. Similarly to the Mourder Rat, Lazarus has an attack that displaces the player. Instead of the attack being an extension of a melee attack, the boss emits a repulsive ring that knocks the player back a great deal on impact. At the peak of the Bell Tower, this attack has the potential to knock the player off the building for a swift demise. Similarly to the Kreier Rat, Lazarus can spawn Rats and has a ranged, lightning-based attack. In addition to Trague Rats, the boss has a chance to spawn a Kreier Rat as well. The ranged, lightning-based attack strikes 3 times instead of only once. This attack will also trigger while the player is platforming, making it more difficult for the player to reach the next floor. I did, however decide to give Lazarus a unique attack all of his own. The “Surge” attack, after a brief delay, turns each floor of the Bell Tower against the player. Contact with the “Surge” deals damage over time.

Quick Time Event System

Before our team decided to pivot our the overall design of Once a Stray, the initial idea was to make a primarily stealth focused game with combat taking place within Quick Time Events. I was tasked with creating the QTE system and its application as the player’s primary method of attack. Soon after the Prototype phase of our project came to an end, I had felt that a QTE-based combat system was not very fun for the player. My Creative Director agreed with me, but still wanted to use the functional system to within our game to some extent and left it up to me to determine how.

The Ultimate Attack (Keys of Ghirel):

System:

Although the original system was intended to result from the interaction between the player and an enemy, I redesigned the Quick Time Event system to be modular and expansive. Each “event” can be called separately or be used in combination. It has the ability to substitute out the parameters for success and failure. For the purposes of our game, it takes Xbox Controller face buttons as its desired inputs. Any other input besides the displayed face button will result in a fail state. The correct input must be made within a predetermined window of time. Inaction results in a fail state.

Application:

Quick Time Events are used to increment the damage of the player’s ultimate attack. After killing enough rats, the player’s meter fills to completion and they gain access to their ultimate attack. Upon activation, the camera angle changes and there is a brief delay before the first button prompt appears. The player then must complete 3 Quick Time Events. Each successful input will increase the damage of the attack. Unsuccessful inputs will not count against the player. I personally do not find sudden or punishing Quick Time Events to be a positive addition to any game and therefore I chose to design mine to be fair and without excessively punishing elements. The only “punishing” result to using the attack is that it will consume the entire meter upon use. After the 3 Quick Time Events have been completed, the camera angle changes so that the player can view the attack unfold from above.