← All projects

Other projects / games

Games I keep starting.

There is a folder on my drive called VideoGameDeveloper. It has five projects in it, one rule across all of them (fun before architecture), and a lot of design docs that say "if this section grows past its box, it is scope creep." Two of them you can play right now. The rest are honest about where they are.

01 / Board game, playable

CrackTown: Cops & Drugs

Playable prototype

A hex board game about running a criminal empire in an absurd coastal city, built for the couch and for two iPads in the same room. Cities & Knights and Seafarers are the mechanical references. The theme is satire; the pieces are abstract tokens.

Five resources (Cash, Supplies, Weed, Pills, Powder) on numbered hexes. Streets and speedboat routes on the edges, stash houses and operations on the corners, fixers instead of knights, a shared citywide crackdown instead of barbarians. First to 12 Respect wins. Everyone can build everything; there are no cop-versus-dealer classes.

The board is a real Three.js diorama: raised hexes on a wooden table, felt player mats, dice that tumble in a tray and settle on the actual result. Solo plays against a rules-based bot with the same information you have. Pass-and-play seats up to four on one screen. Private rooms are server-validated with seat keys, saves after every action, and a pause when a device drops.

The rules are playable and tested, not proven balanced. Three Schemes, three map families, no campaigns yet. My wife dislikes being blocked and I like long roads and betrayal, so the open design question is how to keep competition without permanent lockout.

TypeScript, Three.js, Node WebSocket rooms, Capacitor for iOS

Play it →
Home turf. Your mat on the left, Vice on the right, the crackdown track up top.
Home turf. Your mat on the left, Vice on the right, the crackdown track up top.
Same table, two humans. Hands and Schemes are public on purpose in this prototype.
Same table, two humans. Hands and Schemes are public on purpose in this prototype.

02 / A small day at the desk, playable

Life as Dustin

Playable

A first-person view of my desk. Pick up the coffee, click the monitor, poke around a pretend dustinOS with a toy Docker terminal, a fictional client, pretend email, an AI crew you can hand a job to, and a log-off button.

It started as a 2D morning-routine room and got approved as the 3D desk instead. Everything on screen is pretend: the terminal never executes anything, the client is fictional, the call is scripted. Progress resets when you reload. The checklist is "a perfectly small workday", and you can log off whenever.

The whole thing is static files. No backend, no API keys, no fonts from a CDN. It also runs inside the MadeForMeAI workspace on a Games tab, which is where it was originally headed.

Three.js, vanilla JS, no build step

Play it →
The desk. Click an icon on the monitor, or the mug for the important work.
The desk. Click an icon on the monitor, or the mug for the important work.

03 / Co-op physics comedy

Rack Builder Simulator

Prototype staged, Unity not yet compiled

Small floppy contractors install network gear badly. Carry switches and a UPS into a closet, bolt them into a rack, drag cables around, knock each other off ladders, get paid, buy sketchy used gear. Nobody needs to know what a VLAN is.

Three pillars: physical, not simulated (you lift the thing and shove it into the rack, no "press E to install"); networking is a costume, not a test; failure is the content. Dropping a UPS on a friend is a better outcome than a clean install.

Every asset is generated by a Blender script, so the art rebuilds from code and reviews as a diff. Nine placeholder assets, nine dimension checks, all inside poly budgets. Fifteen C# files are staged, including an editor tool that builds the whole prototype scene. None of it has been compiled yet, so it is all labelled untested until it runs.

Unity 6 URP, C#, Blender 5 scripted assets, FishNet later

The generated lineup: gear, a contractor with a hard hat, a ladder, an open rack, a UPS.
The generated lineup: gear, a contractor with a hard hat, a ladder, an open rack, a UPS.

04 / Mobile comedy sandbox

The Inspector: Nothing to Report

Pre-production + a Unity sprint mockup

A silent capybara roams one suspicious factory, inspects everything with complete sincerity, and accidentally makes the workplace less compliant. Same character as the MadeForMeAI Inspector series, turned into a cute low-poly toy.

Four inputs: move, orbit, Inspect, Nudge. One compact factory with six authored anomalies (the duck has not changed, the wrench returned, it is also not him) and enough physics for the outcomes to vary. No lives, no fail screen. A mistake is a better Field Report.

The success test is blunt: a new player moves and inspects without instruction in ten seconds, laughs inside a minute, finds one unscripted physics moment, and wants to show someone. Nine original props are modelled and exported; the purchased capybara is in and rigged; the emergency-stop voice sequence works in the sprint build.

Unity 6 URP, Blender, Android first

Character turnaround concept. Hard hat, clipboard, no smile at the joke.
Character turnaround concept. Hard hat, clipboard, no smile at the joke.
The signature props: the duck, the wrench, the complaint box, the wrong portrait.
The signature props: the duck, the wrench, the complaint box, the wrong portrait.

05 / Party game for skaters, feel prototype playable

TheSkateDemo

M1 feel prototype (browser), Unreal project scaffolded

Four blob friends on inline skates eat pavement through a Chicago obstacle course. Made by a skater for the group-roll crowd, so the movement has to read as inline: you coast forever, stopping is a T-stop not a button, you carve with a stride not a joystick.

Five inputs: stride and steer, tuck, T-stop, hop, and Eat It (voluntary ragdoll, the single funniest button in the genre). Crashing costs two seconds, never a life. One mode, Race, sixty to a hundred and twenty seconds a run, first to three rounds. The course is Chicago; the prototype's own tuning note says to take the Bean at full speed and try to T-stop out of it.

The only metric is whether four friends laugh for thirty minutes. Milestone one is the make-or-break: skate an empty slalom for five minutes with nothing to do and want to keep going. The numbers get tuned in a browser prototype first, then copied into the Unreal CharacterMovementComponent. That prototype is the thing you can play here.

Unreal 5 Blueprints, a canvas prototype for tuning

Play it →
The feel prototype. Every tuning number is a slider so a skater can say "no, more like this".
The feel prototype. Every tuning number is a slider so a skater can say "no, more like this".

How these get made

A GDD that fits in a box, then the smallest thing that can be played.

One page, one gate

Every project starts with a one-page design doc and a milestone list where each milestone has exactly one exit gate. "Do not proceed on a maybe." The skate game's first gate is five minutes on an empty slalom. If that is boring, everything after it is boring.

Art from scripts, not from clicks

Blender assets are generated by Python so they rebuild after an upgrade, tweak by changing one constant, and review as a diff. Poly budgets and dimension checks run in the build log. No ripped assets, no unclear licences; original everything or a paid pack with the receipt filed.

Codex builds, Claude ships

CrackTown and Life as Dustin were built by Codex in dated handoff folders with a manifest, then integrated by Claude into the sites, the same lane the rest of my web work runs through. The one gotcha worth writing down: the CrackTown release was root-only, so every asset URL had to be rewritten to ./ before it could live under a subfolder.

Nothing here is claimed to work until it has been run. Untested code is labelled untested. That rule is in every README, and it is the reason two of five say "playable" instead of five of five.

Coffee break?

Both playable games run in the browser, no signup, no install.

Go play →