Genre First-person shooter
Engine Unreal Engine 4
Role Everything everywhere all at once
Date Winter 2022
Video
<aside> ❓ PROJECT_PEW is a first-person shooter game entirely developed by myself. As an armed to the teeth dreamer roaming the dream dimension, you must eliminate every nightmarish threat that is on your way.
</aside>
<aside> ❗ The goal was to refine my programming skills in a new engine (Unreal Engine 4) and to be self-sufficient. Except most of the audio, I created everything I needed for the game.
</aside>
<aside> 💡 One of the main focus was to give the player many ways to move around in the game. The character was programmed to jump, dash, crouch slide and mantle. I adjusted the values in each mechanic so that it would fit the fast pace of the game. You have to be quick and always be on the move.
The mantle was the most challenging ability to code because of its complex mathematical logic. I had to resort to many tutorials to finally understand its functionality. In the end, I found more ways to make use of TraceByChannel
.
</aside>
Code used for mantling
First-person sprites for mantling
Showcase of the movement abilities
Showcase of the movement abilities
<aside> 💡 There are 3 weapons that can be used : the shotgun, the SMG and the slap. The shotgun deals high damage, but only at close range because of the spread. The SMG deals relatively low damage with the trade-off being its high rate of fire.
At first, there were 4 weapons planned but I chose to omit the sniper because there was no use for it in a fast-paced and close-combat environment.
I used struct
to store the data of every weapon and a SwitchOnEnum
to easily set and get the values.
</aside>
Sprites made for the game
Sprites for shotgun reload
Layout of every area of the game
<aside> 💡 At the start of the project, I planned to build 4 zones which would all be accessible as the player progressed through the game. In the end, 3 out of 4 was added while the remaining one was left out because of the time budget.
The Room is actually a replica of my real-life bedroom 👀. It was created to narratively justify the later events of the game which all occur in another dimension because the player has to sleep to dream.
The player the spawns in the Void which serves as a movement tutorial. No enemies spawn there to give them time to get acquainted with the movement basics. The zone mainly consists of tall structures that is surrounded by fog and emissive lighting. I was aiming for a dreamy atmosphere which would put the player at ease. Towers in the background amplify the physical scale of the player’s surroundings.
Upon arriving in the City, a horde of enemies rush towards the player. This is the part where we learn about the combat mechanics. The area features many skyscrapers, buildings and cranes.
The Under resembles the city sewers and is made of several narrow tunnels which lead into a big room where a boss fight would happen. After the fight, the player would be forced to parkour through a room made of floating platforms to escape and finally wake up from their dream.
</aside>
<aside>
💡 I first tried to learn Unreal Engine’s behaviour tree system to control the enemies, but the lack of time I could allocate to the project lead its abandonment. Consequently, I used a simpler system of AI to control the enemies such as the AI MoveTo
node and the PawnSensing & AIPerception
components.
An enemy is able to track the player by sight (if they’re in their sight) and by hearing their footsteps (with the ReportNoiseEvent
node).
When no player is detected, the AI roams around the area in a random given radius. When it detects the player, it runs towards them to deal damage and then goes back to roaming after a short delay.
</aside>
AI hearing detection
Art of the enemies
Overview of the AI parent blueprint