Three games, built with Claude
Roblox is where I go when I want to ship something small that people can actually play. I worked with Claude on all three of these games. Two of them are public and live: +1 Speed Comet Run and Leaf Pile Dive. The third, Subway Shuffle, is still in development.
Most of the work was done in long autonomous runs. I gave Claude a brief, a repo and a way to test, and came back to a game that mostly worked. Mostly is the operative word, and the rest of this page is about the parts that didn't.
Code generates the world
Each game is a Rojo project. The code lives in files on my machine and Rojo syncs it into Roblox Studio, so nothing important is placed by hand in the editor. The upside is that a balance change is an edit to a config file, not a hunt through a map.
In Comet Run the whole map is generated from one config file that holds the stages, zones, boots, and the pass and product IDs. A balance simulator checks the numbers before I publish anything. Subway Shuffle has a different shape: a train loops forever and levels hang off station pieces. Each of its 33 levels is a module with a build function and a run function, and they all share one runtime, so a level only has to describe itself.
- Comet Run — all geometry generated from code, with a balance sim to check the numbers.
- Subway Shuffle — 33 levels plus a lobby, on an endless loop. The station picks a random level from a pool that doesn't repeat until the pool is empty.
- Leaf Pile Dive — same pipeline, built from one master prompt in a single run.
Publishing from a script
Publishing goes through the Open Cloud API, and two things kept biting. First, the API publish fails with a 'server is busy' error if Studio has the place open in Team Create, so Studio has to be closed before the script runs. Second, the Rojo plugin asks for an Accept click on every file change. Until you click it, Play quietly runs stale code. I once spent a while testing a build that still said 10 stages when the config said 15.
Thumbnails were their own adventure. For Comet Run they go through the Thumbnail Personalization API and a separate create call, because the normal uploader ignores automation. Leaf Pile Dive's thumbnail goes through the game's detail-page endpoint instead.
What only Studio showed me
The command bar can't require game modules, because its module cache is separate from the running game. So I added a Studio-only hook that runs the full self-test suite and can teleport me to a given stage. The test results come back through the Studio log, which is easier to grep than the Output pane.
- A character can spawn at the origin. In Leaf Pile Dive the server moved the character in CharacterAdded before spawn placement had run, so after a slow map build I respawn everyone.
- ForceField material is nearly invisible. Translucent Neon reads far better.
- A leftover preview copy in Subway Shuffle's workspace got copied into Play and cut through every level. A leftover copy with its level script still enabled fired the finish event and ended a real level early.
- One bad material name breaks everything.
Enum.Material.Ceramicdoesn't exist, and the whole level build fails with no pointer to the cause. - The finish detection bug was the nasty one. The level kit only rebuilt its touch list when a hazard or trigger existed, so levels without hazards could never be finished. The smoke tests never stepped on the finish pad, so they passed anyway.
Human-designed, no HUD
The most opinionated part of Subway Shuffle is the design brief. After the first pass I rejected the whole thing as obviously generated, and the rules I wrote after that are the ones the game follows now. No level names appear anywhere in the world. There is no permanent HUD and no hint text, just classic Roblox notifications. The loop never ends, so there is no 'end of the line'. And every level has to read as a place a person would design, with coherent architecture and props that make sense.
Levels get reviewed by flying a server camera through a playtest before anything is called done. Lighting was a constant fight, since the place runs bloom hard and big neon parts or white walls blow out. Plastic diffusers, surface lights and darker, warmer palettes fixed most of it.
Where they stand
Comet Run and Leaf Pile Dive are live. Comet Run's reach is still limited to trusted friends until it hits Roblox's engagement threshold or I pay a refundable publishing fee. Subway Shuffle is in development. Its last QA pass built and smoke-tested all 33 levels, but a multiplayer test and an eyes-on playthrough were still on the list.
| Game | Universe | Status |
|---|---|---|
| +1 Speed Comet Run | 10769274719 | Live, public |
| Leaf Pile Dive | 10769447171 | Live, public (v17) |
| Subway Shuffle | — | In development |