Lift-Off Laetus
![](assets/laetus/laetus-screenshot.png)
- Platform: Windows
- Tools: Unreal Engine 4, C++, Git
- Duration: April-May 2021
- Team Size: 7
- Role: Systems programmer
Contributions
- Implemented powerup system for turn-based combat
- Designed maintainable game architecture with other programmers
- Worked closely with artists to integrate assets
Gameplay
- Turn-based strategy game for 2 players - fix your ship and leave Laetus!
- Spend points to move, attack opponents, and push engine parts to your ship
- Harvest resources from the environment to add extra effects to weapons
Overview
I worked on Lift-Off Laetus with a team of 3 other programmers and 3 artists,
as part of the 7-week Technical Game Development II course at WPI. Using Unreal Engine was a
requirement for the project, and we primarily used C++ (instead of Blueprints) so that we could
easily merge code files with Git.
-
Most of my work on this project revolved around a weapon powerup system. While
the weapons that each astronaut carries (a rifle for shooting single targets in cardinal directions,
and grenades for striking 9 nearby spaces at once) can deal damage by default,
players can harvest resources from the surrounding environment to add different effects to their next attack.
-
Below are examples of the three resources in the game (slime sap, energized ore, and shrub fruit) applied
to grenades:
![](assets/laetus/Laetus-StickyGrenade.gif)
![](assets/laetus/Laetus-OreGrenade.gif)
![](assets/laetus/Laetus-SlipperyGrenade.gif)
Since each effect shared common traits with the others (getting applied when stepping onto/off of a
space, referencing an expense or damage modifier, etc.), I was able to generalize them and simplify
the ways they were applied.
-
I also made use of Unreal's Data Asset datatype (a struct that can be
saved to the Content Browser, and modified in-editor) to store references to C++ classes, VFX files, player portraits,
and other assets related to a particular powerup. That way, game logic relating to each powerup
could fetch any necessary asset references using a single Data Asset.