Parasuit

Time of Development: 10 weeks

Game Engine: Unreal Engine 4

Play as a mercenary parasite hitman taking on contracts to eliminate targets in an alternate modern-day world.

In parasuit, you will be moving through levels with multiple floors, eliminating everybody in your path. This is achieved by taking control of enemies and using their abilities.

This fast-paced action game was built in a 10 week period as an introduction to Unreal Engine 4. I was the sole programmer of this project.

Trailer

Highlights

AI

AI behaviour was a big part of the work I did on the project. I implemented basic behaviour such as waypoint-based patrolling/guarding, attacking, stunning, but I also implemented more advanced features such as cone-based detection, confusion, noise-detection, and retreating when the player got too close. 

This was necessary in order to add to the character and realism of the enemies.

Possession

The core concept of Parasuit is to provide a fast-paced action experience without actually fighting yourself, but by taking over other units to fight with them.

To prepare for unexpected changes and future development, I architectured the code so that the player could completely integrate with the controlled enemy regardless of their stats and weapon. No real dependencies.

Weapon System

I designed the weapons to be completely independent of the user, allowing for players picking up and use a dead enemy’s weapon if they so choose. The magazine of each gun laying around has the same amount of bullets as when the user died.

Level System

The level system was designed so that each level has a set amount of floors. Certain elements had to persist between these floors, such as a possessed enemy and score.

As I could not find evidence that this was natively supported by Unreal Engine, I made a system that saved duplicates of data just before it was destroyed, and then loaded that data at the start of the next floor.

This allowed me to create an illusion that data persisted, while in reality the “real” data is swapped out by copies at the start of every scene.

Things worth mentioning

  • During the entire development process, I worked within C++, providing the designers with custom blueprints, events, and variables that they could play around with to get the experience that they wanted. I only worked in blueprints for the UI.
  •  
  • I made all AI tasks myself from scratch, not relying on built-in behavior tree nodes.