This project was my first venture into Unreal Engine and 3D Games, where my aim was to explore various possible mechanics to make both combat and exploration engaging. My key focuses within this project were level layout, enemy variations and weapon types.
Additionally, I had the opportunity to explore UI, VFX and dynamic environments, allowing me to explore various design and visual elements that i have less experience with.
To enable interaction with the world and puzzles, i worked on incorporating a weapon system where the player could pick up and use different weapons, each using both a primary and secondary firing system to add depth to the game play.
The Player itself was quite simple, simply allowing for movement along the ground in all directions, with a HP value and a key value.
The weapon system simply made use of pickups that when collided with, would change the players weapon to the type of the pickup, replacing the players weapon mesh with the custom weapon mesh associated with the picked up weapon. Weapons had both primary and secondary firing modes to both add greater depth to how the player could handle enemy encounters, alongside adding various ways to interact with the environment, allowing for a greater variety of environmental interaction/puzzles.
I created multiple enemy archetypes and sub-variants for the project, with varying movement, health, weapons and appearance e.g.:
Assault - low hp, aggressively chases the player, uses an SMG and aims at the target,
Elite Variant - Golden colour, no bullet spread, firing in a burst,
Roamer - avg hp, moves to a random location every n seconds, uses the default weapon,
Variant 1 - aims at the player
Variant 2 - shoots randomly
Tank - high hp and damage, slow moving and firing, can only shoot in the direction it is facing,
(All enemies have Elite Variants, altering the firing mode or weapon and increasing hp and damage)
Enemy Variants were a key learning point for the purpose of inheritance as all enemies were children of a base enemy type. While i knew and have used inheritance previously, this was a key learning point for its ability to ease the addition and tweaking of various alterations of a type of object.
key - door system
exploding barrels - volatile - fire, regular - bullets
flamethrower
grenade launcher
To make the game play engaging, I incorporated multiple mechanics into the game. The primary mechanic used is the use of two barrel types to destroy debris in the environment. The main barrel only explodes on colliding with bullets, while the volatile barrels explode on colliding with both bullets and fire. These were used alongside walls and debris to allow the user to open up paths and associate weapons with environmental utility, not just a tool to defeat enemies.
Out of the weapons, as mentioned before, the flamethrower has utility in firing past debris to hit targets. However, the grenadier weapon makes use of both missiles and lobbed grenades, allowing the user to launch an explosive up and over obstacles to hit targets that they would be otherwise unable to reach.
Finally, a key system was used, with key objects being found both within the level and from specific enemies, allowing the user to open sealed doors around the map to unlock shortcuts and weapons.
Following this project, I feel more confident working within Unreal Engine and the blueprint system.
As someone who is used to programming in C# for Unity and C++, the blueprint system took some getting used to. However, once I had gotten the hang of it, the speed taken to prototype features increased dramatically and allowed for a higher degree of experimentation with various weapons and enemy types.