Undead Onslaught
In this project, I set out to learn Unreal Engine by remaking the university group project S.M.G.V.B.S.S.H.F.. The goal was to deepen my understanding of Unreal's tools and workflows while recreating and improving upon the original game. This involved exploring Unreal Engine's advanced features to enhance gameplay and visual fidelity.
Role
Lead Developer
team size
1 person
development time
on-going
Game Engine
Unity
Genre
First Person Shooter
Technologies used
Unreal Engine 5
C#
GIT
Photoshop
Trello
Theme/Story
The player awakens in an abandoned facility, armed with only a gun. As time progresses, they discover that the undead have begun to overrun the facility, relentlessly hunting them down. Forced to fight off the advancing hordes, the player starts piecing together clues about the origins of the outbreak, uncovering why the undead have risen and searching for a way to escape the desolate facility.
Design Process
In developing Undead Onslaught, I followed a five-step design process, which I will elaborate on throughout this portfolio piece. Each phase was crucial in shaping the game's mechanics, systems, and overall player experience.
1
DESGIN DOCUMENT/
research on unreal
prototyping
rought blockout/coding
2
3
refinement of code and level design
4
passover and feedback
5
Design Document
The first step in my design process was creating the Game Design Document (GDD), where I organized all the initial ideas for Undead Onslaught and planned out the key features to be included. In this document, I outlined the core gameplay mechanics, establishing a clear vision for how the game would function and what players could expect in terms of experience and interaction. This foundational step helped guide the subsequent phases of development.
I dedicated time to learning Unreal Engine, focusing on its capabilities for enhancing AI behavior, player control, and node-based coding. Additionally, I explored the implementation of a wave-based system, leveraging Unreal’s tools to create dynamic and engaging gameplay mechanics.
Core Game Pillars
-
A wave based system
-
Responsive AI
-
​ruined world environment
Gameplay Breakdown
In Undead Onslaught, players spawn into a map with basic equipment and must explore to familiarize themselves with the environment and unlock key features like weapon wall buys, perks, and the weapon-upgrade mashion. Waves of increasingly difficult zombies spawn, challenging players to earn points by defeating enemies, which can be spent on weapons, ammo, perks, or unlocking new areas. Upgrading gear, such as Pack-a-Punching weapons or acquiring special items like monkey bombs, is crucial for survival. Success requires strategic resource management, effective teamwork (in multiplayer), and careful decision-making to adapt to the escalating difficulty.
Explore abandoned facility
getting ready for the next wave
fighting enemy's
Second-to-Second gameplay :
-
Engage in fast-paced combat by aiming, shooting, and manoeuvring around zombies.
-
Monitor immediate surroundings to avoid getting cornered or overwhelmed.
-
Gather dropped power-ups (e.g., Max Ammo, Insta-Kill, Nuke) for tactical advantages.
-
Repair barricades for extra points and to slow zombie spawns.
Minute-to-Minute gameplay :
-
Defend against waves of zombies while managing limited resources like ammo and points.
-
Decide where to spend earned points: buy weapons, open new areas, or activate perks.
-
Strategically position yourself to maximize survival and point efficiency for the next wave.
Hour-to-Hour gameplay :
-
Progress through increasingly challenging waves, unlocking new map areas and features as the game escalates.
-
Upgrade weapons via the upgrade machine and acquire perks to boost survivability and damage.
-
Adapt to new threats, such as special zombies or mini-bosses, while balancing resource consumption and survival strategy.
Code Example
BP_FirstPersonCharacter BluePrint Overview
Key Features
-
Sprint Input
-
​Can Sprint Condition
-
Sprinting State Management
-
Custom Event: Restore Stamina
-
Timeline: Set_Restore_Stamina_TL
-
Stamina Restoring State​
Sprinting logic
-
Sprint Input:
-
Node: InputAction Sprint
-
When the sprint key is pressed, the logic checks whether the character can sprint by evaluating specific conditions.
-
When released, it triggers the Stop Sprinting custom event to end the sprint.
-
-
-
Can Sprint Condition
-
Branch Node: Determines whether the character can sprint based on various factors (e.g., stamina, standing state).
-
Conditions include
-
The character must not be crouching (likely checked via the Standing/Crouch logic).
-
The player must be in a valid state to initiate sprinting.
-
-
-
Sprinting State Management
-
Set Sprinting: Sets a boolean variable (Sprinting) to true when sprinting begins and false when it ends.
-
This state is used to enable or disable related systems (e.g., adjusting movement speed).
-
-
Stopping Actions
-
Certain actions are disabled when sprinting:
-
ADS (Aim Down Sights): Likely prevents aiming while sprinting.
-
Firing: Sprinting might block weapon firing for gameplay balance.
-
-
-
Walking Speed Adjustment
-
The sprint logic adjusts the character’s walking speed:
-
Set Walking Speed: Increases or decreases movement speed depending on whether sprinting is active.
-
-
Restore Stamina logic
-
Custom Event: Restore Stamina
-
This event is triggered to begin replenishing stamina after sprinting ends.
-
-
Do Once Node
-
Ensures that the stamina restoration logic runs only once per trigger, preventing multiple instances of the stamina restoration process.
-
-
Timeline: Set_Restore_Stamina_TL
-
A Timeline node is used to gradually restore stamina over time.
-
The Update pin continuously updates the stamina variable.
-
-
Stamina Restoring State
-
Set Stamina Restoring: Sets a boolean to indicate that stamina is currently being replenished.
-
This prevents actions like resuming sprinting while the restoration process is ongoing.
-
Key Features
-
Input Handling
-
Stop Sprinting Dependency
-
Ammo and Reload Check
-
Switch on FireType
-
Realism and Flow
-
Timer Management
Fire Mechanics Logic:
-
Input Handling:
-
Node: InputAction Fire
-
Triggers when the fire button is pressed.
-
Linked to conditional checks to determine whether firing can proceed.
-
-
-
Stop Sprinting Dependency:
-
The Stop Sprinting node ensures that firing halts any ongoing sprinting.
-
This design makes sprinting and firing mutually exclusive actions, adding gameplay realism.
-
-
Ammo and Reload Check:
-
A comparison checks whether the current ammo clip (Ammo Clip Current) is greater than 0.
-
The NOT condition ensures that firing is disallowed if the weapon is reloading or changing state.
-
-
Switch on FireType:
-
Handles different firing modes:
-
Single Fire: Likely executes one shot and stops.
-
Automatic: Initiates a looped firing sequence, likely tied to the Auto Fire Timer.
-
-
-
Realism and Flow:
-
Prevents firing while sprinting, reloading, or if no ammo is available.
-
Automatically handles transitions between fire modes (single/automatic).
-
-
Timer Management:​​
-
Uses a Timer Handle (Auto Fire Timer) to control the timing of automatic fire.
-
A branch checks if the handle is valid:
-
If valid, the Clear and Invalidate Timer by Handle node stops the timer, halting automatic firing.
-
-