Last Stand

Shred the dead. Crank the metal.

About

Last Stand is a solo-made wave-based FPS game, made in Unreal Engine 5.

Grind up wave after wave of zombies to metal music and bring peace back to the quaint town of Dreadburg.

Features

  • 2 playable maps.

  • Progressive difficulty based on current wave.

  • Tight gunplay, complete with bullet-time.

  • An adaptable music manager that controls which song is played for each wave.

— Work Done —

Level Design

  • Research on US Midwestern towns.

  • Created layout of levels.

  • Made the level grayboxs.

  • Implemented zombie wave logic/item spawn locations.

  • Conducted tests on level flow.

  • Worked on the environment design.

  • Worked on the lighting and post processing effects.

Programming

Made blueprints for:

  • hit markers;

  • zombie logic (HP, wave spawns etc);

  • item logic (spawn rate etc);

  • player HP and ammo;

  • ​explosive barrels and player/zombie damage;

  • soundtrack manager;

  • weather effects (rain, lighting, thunder);

  • movement (walk, sprint, jump);

  • fish-eye/VHS effect;​

  • bullet-time;

  • menu logic;

  • loading screen.

— Development —

"Last Stand" was developed with the intention of getting used to (and understanding) Unreal Engine. 

The transition from Unity (the engine I was most used to) to Unreal was a relatively easy process. Even though the engines have different work flows, I felt immediately at home with Unreal after a few hours of tinkering with it. From there, I started thinking of what game to design. While doing so, I stumbled upon Smart Poly's FPS Zombie Tutorial. The tutorial was invaluable in the amount of information it taught me, mainly in how to use Unreal's UI tools, blueprints and interface.

I expanded upon that tutorial and made my own game from it, namely a wave-based zombie game inspired by the "Killing Floor" series. To do so, I needed to create a wealth of custom blueprints (see the above section).

After the base of the game was finished, I set out and made two levels: Downtown and The Park. Both of these levels are chosen from a world map I made for a fictional town called "Dreadburg"

Downtown is set in the historic center of Dreadburg and is the place most affected by the zombie outbreak. To reflect this, I engulfed the map in flames, broken props and litter to give it an apocalyptic feeling. The flames are not for show however, as they block off the level's off limit areas, while also acting as environmental hazards for the player. Furthermore, Downtown consists of a main square and alleyways. These alleyways serve as chokepoints that the player can use to funnel in the zombies. If they aren't careful though, the narrow and maze-like structure they present can act as a double-edged sword. 

The Park is the second level that the player can choose. This level wasn't hit as hard by the zombie outbreak, as such it can be found in a more pristine condition. Even so, The Park offers an interesting scenario: the power in this area has mostly gone out, with the only thing lit being the statue in the middle of the level (due to a power generator). The player must depend on their flashlight if they venture out past the statue, or fight the zombies around the statue's welcoming light. Furthermore, the light coming from the statue can be seen from most parts of the map, acting as a guide for the player, in case they wish to make a tactical retreat from the zombies. 

— Conclusion —

The final game offers two distinct and atmospheric levels that the player can choose to face off against 5 waves of zombies. Each wave adds incrementally more zombies. The player must balance their resources while shredding the undead to a varied metal soundtrack. 

The most important thing about this project however, is the invaluable knowledge I got related to Unreal Engine and how to develop for it. Going through the entire game development process for "Last Stand" resulted in me feeling comfortable in using the engine. 

This project also meant stepping outside my comfort zone, as I had made only games in Unity beforehand. "Last Stand" demonstrated that I can adapt to a variety of engines, and that I'm not limited to just one. The variety of AAA features that Unreal Engine offers ensured that I'll be using it more often in the future, so stay tuned for my future projects!