Gameplay
Programmer
Already a shipped multiplayer game on Steam. I build server-authoritative gameplay systems that actually work.
What I've Built
Other Projects & Jam Work
Puzzle game built to explore modular Blueprint-based systems with reusable interaction components and clean separation of gameplay logic.
3D platformer focused on player movement and gameplay feel character movement tuning, camera behavior, and Blueprint-driven core mechanics.
Atmospheric exploration game focused on pacing and storytelling. Audio-driven mood design with FMOD and narrative pacing through gameplay.
Sci-fi tower defense: build defenses at night to protect xenite mining operations from enemy droid fleets. Core gameplay loop with wave pacing and a simple economy.
2D pixel-platformer built to strengthen gameplay fundamentals custom 2D controller, collision and enemy logic, game-feel tuning.
5-day game jam project created under heavy time pressure. Focused on rapid prototyping, team collaboration, and delivering a complete gameplay loop.
How I Think About Problems
Real multiplayer bugs from a shipped game and exactly how I solved them.
Core Philosophy
Production Bug: Meeting Desync
Production Code — Voting System (Undercover)
public enum VoteResultType { PlayerVotedOut, Tie, Skipped }
public class VoteResult
{
public VoteResultType ResultType;
public PlayerMovement VotedPlayer;
}
public class VotingSystem
{
private readonly List<PlayerMovement> _players;
public VotingSystem(List<PlayerMovement> players) => _players = players;
public VoteResult CalculateResult(int skipVotes)
{
PlayerMovement topPlayer = null;
foreach (var player in _players)
{
if (topPlayer == null || player.votes.Value > topPlayer.votes.Value)
topPlayer = player;
}
bool isTie = _players.Any(p =>
p != topPlayer && p.votes.Value == topPlayer.votes.Value);
bool skipWins = skipVotes > topPlayer.votes.Value;
if (skipWins)
return new VoteResult { ResultType = VoteResultType.Skipped };
if (isTie || skipVotes == topPlayer.votes.Value)
return new VoteResult { ResultType = VoteResultType.Tie };
return new VoteResult
{
ResultType = VoteResultType.PlayerVotedOut,
VotedPlayer = topPlayer
};
}
}
Disconnect Handling Strategy
What I Learned Shipping Multiplayer
Technical Toolkit
Game Engines
- Unity (primary, 3+ yrs)
- C# scripting
- Unreal Engine
- Blueprints
Networking
- Client-Server architecture
- FishNet framework
- ServerRpc / ObserversRpc
- State synchronization
Systems
- State machines
- Gameplay loop design
- Event-driven architecture
- Disconnect handling
Platform & Tools
- Steamworks SDK
- Steam lobby / matchmaking
- Git / GitHub
- Post-release maintenance
Background
I'm a game development student and solo developer who shipped a multiplayer game on Steam, from blank project to 16,000+ sales. That means I've dealt with real networking bugs, real player feedback, and real post-release pressure.
My specialization is multiplayer gameplay systems. I care deeply about server-authoritative design because I've seen firsthand what happens when clients trust themselves: desync, exploits, and bugs nobody can reproduce.
I'm looking for a Junior Gameplay Programmer role where I can keep building real systems, learn from experienced developers, and contribute to games people actually play.
Let's Talk
I'm actively looking for Gameplay Programmer positions. Reach out anytime.