Steve Rickley

Gameplay Engineer | Unreal Engine 5 | C++

Slammer

32 Weapons. 24 Attachments. Zero Hardcoded Values.

Every weapon in Slammer runs on the same system. 12 components handle fire, ballistics, recoil, ADS, sway, aim assist, networking, and more, all communicating through a central mediator. None of them replicate individually. The weapon actor replicates a weapon ID and an attachment array, and each client reconstructs the rest locally.

The entire weapon pipeline is driven by 4 DataTables covering stats, cosmetics, attachment stats, and attachment cosmetics. Adding a new weapon means adding a row, not writing code. All 32 weapons across 7 categories shipped this way.

Client-Side Feel. Server-Side Authority.

Each shot checks travel time to the target. If it’s fast enough, it resolves as hitscan. If not, it spawns a simulated projectile. Both paths share the same damage pipeline.

On the networking side, the client fires optimistically for responsiveness, but the server validates every hit. It checks timestamp (was this shot fired at a plausible time?), fire direction (was the gun pointed this way?), and hit claim angle (could this shot have reasonably landed here?). If any check fails, the hit is rejected. Players get responsive gunplay without sacrificing authority.

Built for Scale from Day One.

Every replication decision was made with bandwidth in mind. Movement state is packed into 3 compressed bits instead of multiple replicated bools. Timers like objective countdowns aren’t replicated per tick. Instead, the server sends a start time and duration once, and every client computes the remaining time locally.

The character uses a dual-mesh setup: first-person arms for the local player, third-person body for everyone else. Animation evaluation is suppressed on whichever mesh isn’t relevant. These aren’t optimizations added later. This is how every system was built from the start.

Hide Seek Survive

An AI That Learns How You Play.

The demon has two personalities. In Seek mode it camps at patrol points 80% of the time, waiting to ambush and trigger that perfect jumpscare moment. In Survive mode, triggered when the player finds objectives too quickly, it becomes erratic: camping only 20% of the time and reversing direction unpredictably. The switch is driven by player progress, not a timer, so skilled players face a harder, weirder AI.

The system I’m most proud of though is invisible. Early versions had a rage quit problem: jumpscares happened too often and players just left. The fix was a cooldown system that silently teleports the demon to the farthest AI patrol point when the player has seen a jumpscare too recently and gets close to where the demon is hiding. No audio cue, no visual tell. The game feels dangerous the entire time, but the pacing is actually controlled behind the scenes.

The House Is the Other Enemy.

Every room has 4 variants that load via level streaming. When the player exits and closes a door, there’s a 40% chance the room swaps to the next variant in a pre-shuffled sequence. The player’s room, the demon’s room, and the room with the active objective are all protected from shuffling. The navmesh updates dynamically so the demon’s pathing always respects the new layout.

Every Search Is a Risk.

The goal is to find the doll 7 times to trigger the endgame. It hides under furniture, so players switch into a constrained drag mode built as a custom movement mode in the Character Movement Component, locking input to a 1D track along the furniture’s axis. Each draggable object carries a nav modifier, so the navmesh updates dynamically as furniture moves and the demon’s pathing always reflects the current state of the room. The doll respawns after each discovery on escalating timers, giving the demon more time to hunt between finds.

Professional Experience

I work in Unreal Engine professionally at Booz Allen Hamilton, where I’m a Lead Gameplay Engineer building digital twin and VR training applications. I’ve been the sole engineer on projects supporting teams of 5+ artists, responsible for plugin architecture, runtime systems, and shipping builds to clients. I was promoted from entry-level to lead in 20 months.

Before Booz Allen, I was a Senior Systems Engineer at Raytheon, where I worked on missile defense programs and led a live fire test event overseas. I have a Master’s in Mechanical Engineering from Villanova.

I left defense engineering because I love making games. I work in Unreal Engine all day, then come home and build games in Unreal Engine all night. Slammer and Hide Seek Survive exist because I can’t stop building.

Contact

Interested in working together? Please send me an email at steverickley1@gmail.com.

Looking forward to hearing from you!