Synopsis
Atomic Dream is an ability-driven first person shooter with fluid and satisfying combat. Embody a dying cybernetic frame and weaponize your malfunctions to fight against your mind's defense matrix!
My Role
As a solo project, I focused on creating high-quality fps ability combat. This included having satisfying game-feel, fluid animations, and conveying a strong power fantasy.

Project Details
Development of Atomic Dream started in Summer of 2025 as my senior year capstone project. My primary goal for the project was to create AAA quality gunplay and abilities. The game was made in Unreal Engine 5 with Blueprints.
Nuclear Blast (Grenade)
Game Feel
Sway - Initially, the grenade game object is spawned at transform in front of the player. While being charged, the grenade object has a two vector spring interpolations (x + y & z) applied to its world location. This creates a sway when the player looks around to make it feel like it's reacting to the players actions.
Noise - To support the volatility fantasy of the grenade, a noise offset is applied to the grenades relative location. The noise amplitude is scaled via a sin curve, reaching it's peak right before the grenade launches.
Gravity Curve & Speed - To give the grenade a powerful initial punch to fit with the animation, I drive the gravity value of the projectile through a timeline. This subtle change allows for a powerful push-off before the grenade begins to drop. This is mixed with a slow-ish speed variable that creates a travel path that gives room for player mastery while still feeling accessible and satisfying.
Player Fantasy
I wanted to make a grenade that was powered by the players leaking nuclear core. This meant that I wanted the throw to have some extra punch before it began its downward arc. Additionally, I wanted the casting animation needed to have a flavorful style while conveying the unstable nature of the energy the player summons.

Animating
The animation consists of two main stages, allowing for a quick cast time. The first phase is the summoning phase, which includes a radial arc around the energy with vector noise applied to the arm/hand, increasing as the arc completes.

Animation Evolution

VFX 
Charge Up - The most important part of the casting phase of the grenade was making the "charge-up" feel satisfying. When the charge up begins, the energy ball (which is made of a mixture of fire, sparks, and debris particles) is scaled up through a timeline. This scaling rapidly increases right before it fires off, giving a very satisfying "thump" feeling. To complement the effect, a shrinking particle comes in from around the players hand with the same scale timeline.
Traveling - As the missile travels, a trail (made up of a basic ribbon, distortion field, and black debris) is added to visualize the travel path. The ribbon color has a gradient applied, making the tail a complementary color as well as reduced transparency. The distortion effect is added slightly after the throwing occurs to reduce overwhelming screen warping for the player.

Casting VFX Development Stages

Explosion Development Stages

Explosion -The explosion is a combination of three different parts, The core explosion, the energy shockwave, and residue particles. The core explosion consists of a brief fireball and various smoke particles. 

The energy shockwave is a sphere with a material that drives its transparency though a texture that rapidly evaporates after impact. Large sparks with matching colors also explode from the impact point as well as small, more yellow (hotter) sparks that more closely surround the impact point.
SFX
Charge Up - The core of the casting phase is an inverted electing rising sound with increasing volume. Another,  quicker and higher pitched rising sound is layered right before the first one ends. Additionally, some mechanical sounds are briefly played at the beginning to represent the players mechanical arm moving.
Launch -  The launch effect is made up of two sounds. The first sound is a bass-y thump sound that ends quickly. The second sound is layered below it that's a much softer electric sizzling sound that fades out. Because this sound is played in world space, you hear this sound fade out as it travels away from the player.
Impact -  On impact, a distorted wavy sound is played slightly after a basic grenade explosion sound to give the explosion profile some texture.

Sound Development States (SOUND ON)

Shrapnel Shards (Homing Missiles)
Game Feel
Calibration - When the player throws their shards out, they begin to calibrate to the world around them, slowing their velocity down and rotation towards their target. Inspirations here were how spacesuits and ships rotate with with air thrusters.
Locking Targets - When a shard has a homing target, they find the direction they need to be facing (their look vector) and rotate towards that. Their rotate speed is determined based on how many shards are launched, creating a one-by-one firing rhythm of combat.
Firing - As the missile launches towards its target, the base speed and homing velocity is instantly increased. Their bounce variables allow for fun terrain navigation which is visualized by its trail.
Dynamic Behavior - Because the missiles need to act smart, they can dynamically find new targets during any stage of their lifetimes, enter a "target seeking" state if they cannot find an target initially, and chooses enemies based on a proximity sorting system.
Player Fantasy
The shrapnel shards are pieces of metal you rip from your chassis to seek out nearby enemies. These shards a a part of the player, so their behavior needed to feel like they were interpreting the world in addition to acting how the player would want. The player should feel them actually thinking.

Animating
The cast animation exists in three parts. The "reach in" phase emphasizes the violent nature of the action by clawing the hand and extending the arm outward to gain momentum. The "throw" phase starts slow, then snaps out fast which creates physical tension from the body outward. The third phase is the "recover" phase where the arm comes back to the body. The arm remains extended after throwing for a moment to highlight the action pose, then retracting in an arc motion to blend nicely with the other first-person animations.
VFX 
Trails - Each shard comes with two thin white Jetstream trails on each end of their wings. Before firing towards their target, their red engine trail follows closely behind. When racing towards its target after calibration, their engine trail is more powerful, trailing farther behind.
Impact Effects - When the missile blasts off toward its target, it emits a small burst of white smoke from its engine to elevate the punch of the rocket. When the shard hits the enemy, directional sparks emit at the angle of impact to prove the impact.
SFX
Grabbing - When grabbing the shrapnel shards, two sound effects play. Mechanical sounds play to convey the players arm moving in towards its body and mechanical digging sounds follow while the player is grabbing their shards. When thrown, a deep woosh effect is played to punch up the feeling of throwing them out.
Shard States -  While calibrating, each shard will emit a subtle "beeping" sound to convey it's calibration/target seeking phase. Once a target is found, a deep, mechanical punchy sound is played to support the engine poof VFX and elevate the rocket blast feeling. All of these sounds are positional, creating a believable 3D presentation.
Impact -  On impact, the shards will emit a deep, glitchy boom sound to support the directional sparks effect to help prove the impact.
Process / Iteration
Version 1.0 - The main differences of the first version of the shrapnel shards was more player interaction required and distance-based travel arc. Initially, to cast the shards, players first needed to hold down the cast button to scan nearby targets. This slowed the combat down and made the controls feel clunky.
To add some variance in the missiles behavior to make them feel intelligent, missiles would travel at an arc depending on their distance to the target. Essentially, a timeline would set an actor offset and speed and its current time would be set depending on how close the missile was to the target relative to it's spawning location (if the player was far away from the enemy, there would be a very large arc and the inverse). This created wild variance in game feel and unfixable edge cases (ex. If a shard runs into a wall its speed will never change because the shard isn't getting any closer).
Version 2.0 - The new and improved version moves the target assigning logic to the missiles themselves and is performed on-cast, creating a "fire and forget" behavior. To replace the timeline arc/speed logic, a more tunable staging system is added independent from enemy distance and a scalable casing arc system to support any number of shards cast. This elevated the intelligent design goal while making the behavior more designer-friendly.
Z99 Integrator (Assault Rifle)
Player Fantasy
This assault rifle is a powerful, reliable tool in the player's arsenal meant to be a tool to keep the gameplay rolling. Weapon handling feels powerful but reasonable to compensate for the high-damage of each bullet.
Animating
Animating the assault rifle consisted of 9 unique animations to cover each player movement state, including reloading, aiming, shooting, sprinting, and more. The animation movement targeted exaggerated and flowy movement to complement the fast-paced combat.
Game Feel
Recoil - Player recoil is driven by two float timelines that affect the pitch and yaw of the player camera (multiplied by strength variables determined by aiming status for ADS & hip fire variation). For recoil recovery, the player will store camera rotation from before the first shot and slowly rotate back to it (multiplied by a recovery speed variable). 
Additionally, if the player looks horizontally or vertically during the recovery, the process is interrupted and stops (dead zones for horizontal interruption exist a few degrees in each direction).
Effects
VFX - A simple but random muzzle flash emits from the barrel tip, providing punch to each shot. When impacting an enemy, small directional sparks emit from the impact point, proving the connecting hit.
SFX - The weapon fire sound is a flat but punchy altered mp5 shot, providing an abstract futuristic noise profile to the weapon. Reloading the gun consists of two main metallic sounds, one with a pulling profile and one with a shoving profile.
Back to Top