Goal & Contents
In June 2026 I decided I needed to better demonstrate my technical skillset. I decided to recreate the SEAF Artillery Gun I had designed for Helldivers 2, but instead of relying on Code Team in the Stingray Engine, this time I opted to make it myself in Unreal Engine 5.
The Super Earth Armed Forces Artillery Gun is a point of interest the player may come across during any other mission. If resolved, it gives the player a powerful extra ability to be called for five times.
Over the course of two weeks I spent my evenings to recreate the following:
The intended outcome was to create a faithful recreation of the SEAF Gun with enough polish to allow a Level Design Team to actively use it for an extended period of time, allowing other teams to upgrade it over time.
For my own amusement I renamed various components of the SEAF Gun to distinct counterparts in the interfaces.
The Super Earth Armed Forces Artillery Gun is a point of interest the player may come across during any other mission. If resolved, it gives the player a powerful extra ability to be called for five times.
Over the course of two weeks I spent my evenings to recreate the following:
- New documentation of the gun to support the creation
- The Terminals mechanic, allowing players to interact with a nearby computer
- The Stratagem mechanic, allowing players to trigger special abilities by inputting the proper code on their wrist-computer
- An extremely basic health system to demonstrate basic:
- Armor Values
- Damage over time
- Damage radius & falloff
- Status Effects
- A simple interact system, allowing the player character to:
- Interact with Terminals
- Pick up and deliver munitions to the gun
The intended outcome was to create a faithful recreation of the SEAF Gun with enough polish to allow a Level Design Team to actively use it for an extended period of time, allowing other teams to upgrade it over time.
For my own amusement I renamed various components of the SEAF Gun to distinct counterparts in the interfaces.
Unreal Engine Systems applied:
|
Systems applied in the creation of this project:
|
Additional systems used for quick polish:
|
Full Length Video:
|
No smoke and mirrors! Everything works reliably. This video showcases all components in sequence.
For more information, see the breakdowns below. |
|
Design Document:
|
This Miro-board goes in-depth on how the cannon is intended to work, from initialisation to firing its last shot.
The gun has 3 states:
|
Terminal:
|
The Terminal is a shell which holds an array of programs to play and forwards player inputs to these programs.
Each time a program is completed the Terminal immediately boots the next program in the array until it runs out of programs to play. The terminal should, at runtime, never truly run out. The final program in the array cannot be completed, and informs the player that the artillery gun has served its purposes. Any player input results in their character performing a 'press' animation in real time to sell the interaction and to give the player a fidget. |
Carrying Shells:
Interaction with other objects is primarily managed through Blueprint Interfaces, allowing the player character to fire events on other objects and poll their type of interactions.
When players approach an interactive object it is marked with an empty 'interact' marker.
The object closest to the player's focus is given the full "Press E to Interact" banner.
On interact, if not already occupied, the Player Character polls if the interactive node is polled and identified as a terminal or a shell, then performs the desired behavior.
On interact, if already occupied with an action, the Player Character checks if its action is contextual, such as carrying a shell.
While not an animator by any means, I opted to include basic animations to better relay the interaction performed.
The shell is constrained to the player's hand.
The player character blends their walking animations from the upper spine up with a shell-carrying animation, or shell-placing animation.
When players approach an interactive object it is marked with an empty 'interact' marker.
The object closest to the player's focus is given the full "Press E to Interact" banner.
On interact, if not already occupied, the Player Character polls if the interactive node is polled and identified as a terminal or a shell, then performs the desired behavior.
On interact, if already occupied with an action, the Player Character checks if its action is contextual, such as carrying a shell.
- If not contextual, it performs the end-action for the type of action, such as leaving the terminal.
- If contextual, the game evaluates if that context is met.
- For shells, this would be the proximity to an available Ready Rack.
- If true the player character plays an animation where they bend forward and the shell is LERPed (Linear Interpolation) from their hands into the rack.
- If false, the player character ceases to blend animations and the shell falls to the ground as a physics object with a slight impulse
- If true the player character plays an animation where they bend forward and the shell is LERPed (Linear Interpolation) from their hands into the rack.
- For shells, this would be the proximity to an available Ready Rack.
While not an animator by any means, I opted to include basic animations to better relay the interaction performed.
The shell is constrained to the player's hand.
The player character blends their walking animations from the upper spine up with a shell-carrying animation, or shell-placing animation.
Artillery Cannon:
|
|
Ready Rack:
|
|
Turret Housing: Once a firing request is received, the housing rotates to face the target. The housing rotation accelerates to maximum speed and decelerates before reaching its final facing through Blueprint logic. After firing, the rear panel ejector is forced open. At it's maximum extent the shell is ejected and its physics enabled to enable it to drop down. A Niagara system adds a smokey effect. I applied a simple placeholder animation in sequencer to look as if it is forced open by pressure of the shot. The panel then rapidly closes most of the way as if piston powered, before made to look as if a gear-rack catches and secures the panel for the last centimeters of the operation. The shell markings match the most recently fired shell. |
Gun Barrel
Parented to the Turret Housing, the barrel will automatically rotate with the rest of the gun.
The barrel has a near-horizontal state to indicate the gun is 'deactivated'.
A halfway raised state to indicate the gun is 'ready to load'
A full raised state to indicate the gun is 'ready to fire' at high, plunging arcs.
When ordered to fire, the gun recoils, and smoke is simulated from the muzzle break at three points to sell the visual element.
A BP_FiredShell is spawned, made aesthetically to match the type of shell fired.
Parented to the Turret Housing, the barrel will automatically rotate with the rest of the gun.
The barrel has a near-horizontal state to indicate the gun is 'deactivated'.
A halfway raised state to indicate the gun is 'ready to load'
A full raised state to indicate the gun is 'ready to fire' at high, plunging arcs.
When ordered to fire, the gun recoils, and smoke is simulated from the muzzle break at three points to sell the visual element.
A BP_FiredShell is spawned, made aesthetically to match the type of shell fired.
Stratagems:
|
One of Helldivers' unique selling points is the Stratagem system. The player can hold down a key to bring up a menu of available objects. By performing the correct inputs a baseball sized object is 'charged' with the ability and once thrown, will call down the ability at the destination.
Doing so begins a countdown until expected activation of the ability at the destination and a laser to notify allies of danger. Inputting the code displays which abilities correspond with the code input so far. New abilities added to the player's roster are shown even if the roster is hidden. Abilities recently activated, or with their cooldown soon ending, use the same display override no notify the player of their status. Stratagem symbols are color coded to indicate type.
Additionally, the symbols:
While not immediately obvious, the arc of the throw is adjusted by the pitch of the player camera. If the player looks up, they will throw farther than if they look straight down. This is best observed in the Youtube Video at: |
|
Shells:
|
Each shell type (six total) has its own Data Asset to relay its effect to a plain blueprint.
The Data Asset holds:
The shell on impact takes the relevant data assets and modifies its execution as required. To prove functionalities, the character dummies as shown in the demos were made:
There are seven Data Assets:
|
Clean Blueprints:
All systems were made to be easily expanded upon and modified.
Events and variables were given clear names to indicate what their function is in the greater system they are a part of.
Events and variables were given clear names to indicate what their function is in the greater system they are a part of.
Acknowledgements:
Original designs by my colleagues at Arrowhead Game Studios:
- Stratagem menu designs by the respective specialists at Arrowhead Game Studios
- Terminal Minigame designs by the respective specialists at Arrowhead Game Studios
- Gun Housing and Barrel visual Design by the respective specialists at Arrowhead Game Studios
- 2D Art by Lorc, Delapouite, Skoll, Sbed, Catalin Fertu and Game-Icons.net, obtained from Game-Icons.net and used under CC BY 3.0
- Terminal and wrist computer sound effects provided by Moa Jansson
- Additional audio obtained from Freesound.Org under Creative Commons, including:
- Bomb Arming by snakebarney -- https://freesound.org/s/138101/ -- License: Creative Commons 0
- vaccumwhirr_01.wav by xtrgamr -- https://freesound.org/s/223744/ -- License: Attribution 4.0
- METLImpt_MetalHit03_InMotionAudio_FREESampleSunday.wav by InMotionAudio -- https://freesound.org/s/685438/ -- License: Creative Commons 0
- Extractor Fan.wav by theplax -- https://freesound.org/s/618185/ -- License: Attribution 4.0
- Power screwdriver by chemicalcrux -- https://freesound.org/s/531444/ -- License: Attribution 4.0
- metalClunk.wav by spukkin -- https://freesound.org/s/70887/ -- License: Creative Commons 0
- Opening Garage Door Handle 3.wav by F.M.Audio -- https://freesound.org/s/608058/ -- License: Attribution 4.0
- Metallic clunk.wav by michael_grinnell -- https://freesound.org/s/512475/ -- License: Creative Commons 0
- Turning on my Wii by f-r-a-g-i-l-e -- https://freesound.org/s/613085/ -- License: Creative Commons 0
- Metal heavy mechanics by jorickhoofd -- https://freesound.org/s/160048/ -- License: Attribution 4.0
- DarkDetonation03.wav by M-RED -- https://freesound.org/s/183868/ -- License: Attribution 4.0
- Astronomical Explosion by SamsterBirdies -- https://freesound.org/s/760509/ -- License: Creative Commons 0
- Beefy Explosions by SamsterBirdies -- https://freesound.org/s/745549/ -- License: Creative Commons 0
- Explosive.flac by qubodup -- https://freesound.org/s/189778/ -- License: Creative Commons 0
- Windy Explosion.flac by qubodup -- https://freesound.org/s/182797/ -- License: Creative Commons 0
- Guns & Explosions Album - Railgun - Shot 6.wav by OGsoundFX -- https://freesound.org/s/423118/ -- License: Attribution 4.0
- Distance Explosion Sound by SoundFX.studio -- https://freesound.org/s/456272/ -- License: Attribution NonCommercial 4.0
- Cannon artillery - distant gunshots.wav by Aegersum -- https://freesound.org/s/345844/ -- License: Attribution 3.0
- cannon.mp3 by Kneeling -- https://freesound.org/s/448002/ -- License: Creative Commons 0
- gas-cooker.wav by 16GPanskaSibinska_N -- https://freesound.org/s/497204/ -- License: Creative Commons 0
- Explosive 1 v1 [DOD 130303].flac by qubodup -- https://freesound.org/s/182432/ -- License: Creative Commons 0
- laser artillery sound effect by slopemstr -- https://freesound.org/s/517939/ -- License: Creative Commons 0































