SHOTGUN CHAMPION
A First Person Action Adventure
INTRODUCTION
With this project I wanted to design an experience that focuses on combat encounter design and puts gameplay first. In a previous course I had scripted an FPS experience with a shotgun almost entirely from scratch. I was really happy with the result so I wanted to return to it at some point in the future and this turned out to be the perfect time for that.
​
I knew I wanted to work with some type of time manipulation. The type of manipulation I finally went with was bullet time.
The reason: it was awesome.
BREAKDOWN
-
Solo project spanning 3 weeks (half speed)
-
Combat encounter design
-
Focus on level design, flow and moment to moment gameplay
-
Blockout
ENGINE
-
Unreal Engine 5
ASSETS USED
-
Blockout Tools Plugin v1.52
-
Animation Starter Pack
-
SFX from Soundsnap
PLAYTHROUGH
OVERVIEW
TOP DOWN
FLOWCHART
DESIGN TECHNIQUES
TEACHING THE PLAYER
To ease players into the experience, I designed the first section to introduce them to the game mechanics before throwing them into the heat. This segment includes obstacles that require players to use and become familiar with all the controls. This section also introduces the player to the type of platforming and time manipulation required later in the level.
CREATING ANTICIPATION
Positioning players in advantageous spots before combat begins allows them to scout the arena and strategize. This creates anticipation which then fuels their eagerness to jump in and execute their plans.
COMPOSITION AND FORESHADOW
Strategically foreshadowing future areas builds anticipation, pushes players forward and aids their mental mapping. Narrowing the path before the reveal ensures players face the right direction, preventing them from missing it.
It also creates a satisfying sense of progression upon reaching the foreshadowed areas.
GUIDING THE PLAYER
A central aspect of this experience is ensuring the player maintains their flow. To aid in this, I implemented a guiding color (yellow in this case) to help direct the player forward and highlight interactable elements.
ENCOUNTER DESIGN
1st ENCOUNTER
Having introduced the game mechanics during the intro section, the first encounter provides players with an opportunity to plan ahead and put their newly acquired skills to the test. Players are safe here and can take all the time they need before literally jumping into the action.
3rd encounter
The third encounter, like the second, follows almost immediatly after the previous one. This is so the player keeps momentum in this fast paced experience. This encounter features about as many enemies, but a more narrowly designed space. This close quarter area raises the difficulty even more by putting the player even closer to the center of the action and leaves less room to retreat to. It requires a more aggressive play style and faster thinking from the player.
2nd ENCOUNTER
The second encounter has more enemies than the first, increasing the tension and challenging the player further. Despite the added difficulty, ample cover placements provides the player with safety options.
To prevent a "door problem" where the player would exploit the tight entry as a chokepoint, the first enemies spawns further inside the arena, to lure the player in. Only then does the rest of them spawn.
4th encounter
In the fourth and final encounter, platforming merges with combat gameplay to really test the players abilities. Given the fast pace of this section, ensuring clear readability of the path forward was important to maintaining player flow. To accomplish this, I used a yellow colour that leads the way forward, to keep the player on the right path.
SCRIPTS
THE SHOTGUN
The shotgun works by firing multiple line traces in a cone pattern from the cameras perspective. The spread and trace count is adjustable with variables. From the hits of the line traces, a damage message is sent to actors who implement the interface. This avoids dependencies and makes the damage system expandable. Thanks to this I was able easily to create destructable actors, like the locks seen by the bridges and on the turbine hatches.
​
The reload animation uses notifiers to check if the magazine is full and if the animation should be cancled prematurely. I've also implemented screenshakes and sound effects to make the shooting as juicy as it can be.
AI
The enemies are powered by behaviour trees. Using these in combination with Unreals built in Environment Query System (EQS) I was able to create an AI that can find locations with line of sight of the player as well as look for cover when they get hurt. Using behaviour trees made the whole process more comprehensible as well as easier to troubleshoot and debug. I want to give credit to Ali Elzoheiry and his Youtube-tutorials, which I've used alot when learning to work with behaviour trees.
WORKFLOW
GATHERING REFERENCE MATERIAL
My process began with gathering inspiring reference material. I primarily searched for pictures, but I also found that videos and music helped spark ideas. At this early stage anything goes, but I aimed to create a level set at a high elevation, where players would jump gaps to evoke a sense of vertigo.
​
In the end, my reference library mainly consisted of pictures depicting mountains in Nepal, mountain villages in China, and futuristic wind turbines.
PLANNING THE BEATS
My next step was to create a high-level structure for the level by planning its beats. This process helped me visualize the level and its flow, as well as prevented the blockout process from starting with a blank canvas.
BLOCKOUT & LEVEL ITERATION
At this point I was ready to start blocking out the level. Since this is the best time to iterate, I had people playtest regularly to see what worked and what had to be reworked. In this experience it was important that the player kept their flow and momentum, so things that disrupted that was iterated upon.
​
Although I try to iterate early and often, I'm always open to larger iterations later in the process if it's for the better of the level, as, seen in the video below.
GAMEPLAY ITERATION
During playtests, many players felt that the shotgun was holding them back. They felt its firerate was too slow, ammo count too low, and the reload time too long. This limited their ability to fully utilize the bullet time feature, often allowing them to kill only one or two enemies at a time.
​
To address this feedback, I made several iterations. First, I increased the playback rate of the reload animation and modified the reload mechanic to load two shells at a time (+2, 4, 6, 8) instead of one (+1, 2, 3, 4).
​
Another issue was the reload animation itself, which always played in its entirety regardless of whether the magazine was missing one or six shells, without the possibility to cancel it. I resolved this by implementing animation notifiers to check if the magazine was full after each shell was loaded, stopping the animation if it was. I also gave the player the ability to cancel the animation if there was ammo in the magazine.
​
To improve the fire rate, I used notifiers again, to remove the pump action animation after each shot. This effectively transformed the shotgun into a semi-automatic weapon, which was well-received by playtesters.
REFLECTIONS
Working on this level has been a blast, and watching people play and later enjoy it has taught me much about designing fun combat-oriented experiences.
​
Given more time, I would have extended the final part of the level to avoid the abrupt ending.
​
Moreover, introducing a new enemy type that remains stationary and fires from behind cover could have enhanced the depth of the encounters. This would make the player have to advance strategically and think more tactically. Currently, the enemies charge directly at the player, which lets the player act more passively and wait for them to approach.
​
In conclusion, this project was a rewarding experience, and I am pleased with the result!
​
Thank you for reading!