48-hour jam: what broke, what held, what I'd change
2026-03-07 · Lex Morin
My third 48-hour game jam. Same pair as last time, different result. Here's what broke, what held, and what I'd change.
What broke
Scope. We decided on a mechanics concept in hour two and promptly ignored the scope implications until hour thirty, when it became clear we had four hours of work left for two hours of remaining jam. We cut two of the three intended enemy types and replaced a boss encounter with a door that just locks behind you. It works but it's obviously a stump.
The audio pipeline. I'd planned to use a small synthesiser library I'd written earlier this year. Didn't work under the jam's WebGL export target because of threading assumptions I'd made in the library. We ended up with one looping background track and no sound effects, which hurt the game feel considerably.
What held
The renderer. I've now shipped the same core SDF renderer in three different projects and it's solid. Level geometry in SDFs composes cleanly, the pixel shader compiles fast enough for rapid iteration, and lighting is a few extra lines not a separate system.
The movement code. Character controller was done in four hours and worked on the first playtest. Clean separation between input, physics, and animation made it easy for my co-developer to add to without stepping on my changes.
What I'd change
Write the scope constraints down in hour one and tape them to the monitor. Not metaphorically — physically tape them.
Also: Ray marching with signed distance fields: my annotated notes