Open for commissionsLuau · Roblox6 years on platform~18 hrs / week
Gameplay systems, built from scratch.
I write Luau: character controllers, enemy AI, matchmaking, saving and loading, UI. No toolbox parts, server-authoritative, and light enough to run on a cheap phone. Both games below are my own, so the code I'd write for you is the same kind I have to live with afterwards.
Three recordings straight out of Roblox Studio from the horror project. Greybox on purpose — systems first, art later. Sound is on the clips if you want it.
wirebox.mp40:10 · 1280×720in-engine · Studio playtest
Wire box objective. The proximity prompt reads the objective's own state, and interacting opens a splice minigame where wires are re-routed between terminals. The panel reports SYSTEM STATUS: DOWN and the completion is logged server-side, feeding the round's win condition.
generator.mp40:11 · 1280×720in-engine · Studio playtest
Generator objective. A held interaction with a timing ring and a four-stage progress bar. Each stage commits separately, so per-objective progress survives a survivor being interrupted mid-repair.
chase.mp40:13 · 1322×768in-engine · map build
Movement and camera in the map proper. The custom controller and soft shift-lock camera running in built geometry rather than a test room — signposted routes, lighting, and the health / stamina HUD tracking sprint drain.
Selected work · 02
Two games, both mine.
Tower defense / Playable now / Solo: code, UI, art direction, balance
A full tower defense game built alone: code, UI, enemy behaviour, economy, balance, mobile support. It's live, which is the main reason it's here — everything below is something you can go and check for yourself.
Unit shop with per-unit hexagonal stat radar. Custom UI, no plugins.Live wave in progress: placed units, enemy path, economy HUD.
Hexagonal stat radar
A data-driven radar chart that reads each unit's stat table and renders the filled polygon, axis web and letter grades at runtime, built from primitives rather than an off-the-shelf charting module, so adding a new unit needs no UI work.
Wave and enemy director
Scaling wave composition with distinct enemy movement behaviours and multi-phase bosses that shift attack patterns and pacing mid-fight.
Tower placement system
Validation that keeps the placement preview and the committed placement in exact agreement — a common source of "it looked legal but failed" bugs — with parity between mouse and touch input.
Economy and support units
Income-generating towers and wave-based payout mechanics designed with explicit anti-snowball levers, so a strong early game doesn't flatten the rest of the run.
Loadout system
Slot management with equip, unequip and reordering, including the sparse-array pitfalls that quietly break Lua table iteration.
Responsive UI and performance
Layouts that hold from small phones to widescreen, plus client/server animation splitting and consolidated per-frame loops to keep frame rate stable during heavy waves.
Asymmetric horror / In development / Role: sole programmer
Unannounced Asymmetric Horror Project
A 12-survivor / 2-striker asymmetric horror game across two maps, in the vein of Dead by Daylight. The title is withheld until we announce. I'm the only programmer on it; a partner handles design and map layout. Nothing here is a free model — the screenshots are from a working build, so it's still greybox.
Objective interaction prompt and custom health / stamina HUD, in-engine on a greybox test map.Striker mid-pursuit. The red trail is the computed path being consumed waypoint by waypoint — a debug view of the routing logic.
Custom character controller
Ground-up movement replacing the default humanoid feel: sprint, crouch and state transitions with weight-based animation crossfading, so movement reads smoothly instead of snapping between poses.
Soft shift-lock camera
A custom camera rig tuned for over-the-shoulder horror framing, with easing that keeps aim responsive without the stiffness of stock shift-lock.
Striker AI
PathfindingService routing with waypoint traversal and recompute-on-failure handling, driven by a stamina model. Sprint drains, exhaustion drops the chase to walk speed, and a re-engage threshold decides when the pursuit resumes.
Objective and interaction system
Proximity-driven objective prompts with per-objective state, feeding the round's win conditions.
Server-authoritative movement
Walk speed, position and player state validated server-side, closing the client-trust holes that let exploiters outrun or clip through an asymmetric match.
The code driving it: stamina-gated chase speed with an exhaustion and re-engage threshold, and pathfinding that fails safe when a route can't be computed.
What I build
The parts of a game nobody sees.
Data & persistence
DataStores and ProfileService. Save structures, session locking, and migrating old player data without wiping anyone.
Matchmaking & rounds
Queueing, team assignment, the round lifecycle, and deciding who won.
HUDs, shops, upgrade panels, data-driven stat displays, and layouts that survive being opened on a small phone.
Performance & security
Finding what's eating your frame rate, moving work off the server, validating remotes so exploiters can't just ask nicely.
How I work · in order
01Scope
You tell me the system or the bug. I ask the questions that actually change the estimate, then write down what's included and what isn't.
02Estimate
A fixed deliverable and a real timeline before I start. If the job grows halfway through, we re-quote. I don't overrun quietly and hand you a surprise.
03Build
Updates with something testable in them, rather than a week of silence and then a wall of code.
04Handoff
Commented, modular code that drops into your place, a short walkthrough of how it fits together, and a window afterwards for fixes.