Keep Moving Showdown
Game Designer · Programmer · 3D Environment
Online party game for 2–4 players made in 42 hours for Create Jam Fall 2026. Seven minigames on one rule, stop moving and your fuse burns, and a PS1 environment built with a custom shader instead of bespoke modelling.
Stack
Unity, C#, URP, HLSL, Netcode for GameObjects, PSXIFY
Links

Keep Moving Showdown is an online party game for two to four players made in 42 hours for Create Jam Fall 2026. Every car carries a roof bomb whose fuse burns while it is stopped, and a match is a tournament of short minigames won by whoever scores the most points. I handled the design, programming and 3D environment; a designer took care of the UI and the logo.
A playable loop first, minigames after
The goal for the first day was not a lot of minigames, but a tournament that could be played from start to finish, even with a single one. By the first night the networked cars, damage, the tournament flow with its transition and ranking scenes, and Sky Is Falling as the first minigame were all working.
With that loop closed, every new minigame was a piece that plugged into something that already worked. They all start from the same stage prefab, with the stadium, camera, HUD and a manager that runs the intro, countdown, eliminations and points table. Each minigame only defines its mechanic, when it ends and how it ranks players.
The second day brought the PSX look, the bomb rule across every mode, Bomb People, Missile Mayhem, Conveyor Chaos and heats. On the last day Treadmill Shift, Dirt Race and Sweeper joined, and the rest of the time went into polish: crash damage, audio and the options menu. Along the way, one of the first day’s minigames, Don’t Fall, was cut.
One rule, seven ways to keep moving
During a round, if the throttle drops below a threshold, the handbrake is held or the car barely moves, a three-second fuse starts. It only resets when the player actually accelerates: coasting or being pushed does not count. Players learn the rule once and each minigame decides what moving means.
In five minigames the rule applies as is and what changes is the environment: a belt that forces you to accelerate so you don’t fall, obstacles that stop the car and force you to reverse, or pedestrians that make standing still dangerous. Treadmill Shift and Sweeper are the exception: the game moves the car and the player does not drive, so the rule is translated to another input, keeping up with the shifts or jumping in time. The bomb stays on the roof so the car reads the same.
From driving prototype to game
It all started with driving: a top-down grey-box arena with one car, drift, boost and a rotating bar as the first hazard. Tyre marks and smoke were added so drifting reads at a glance.
Handling ended up as an arcade model with one spring per wheel, and each player simulates their own car so it responds the same no matter who is hosting. The boost and its meter were removed on the second day.
Treadmill Shift: from paper to round
Treadmill Shift was drawn before it was built, and the sketch already holds the complete design: four tilted treadmills with one car each, a gear lever and a row of arrows for the input.

The belts swing between five inclines, one per gear, from 45 degrees in first to flat in fifth. Each shift asks for a four-arrow combo, or six if it jumps two gears. If time runs out the car drops one position, and missing at the very bottom blows it up. A wrong arrow does not break the combo, but it takes 30% of the remaining time.
The lever is drawn as a five-speed H-pattern gearbox: the target gear pulses, a completed combo slams it through neutral and a miss grinds it with the knob turning red. That way pressing arrows reads as a physical action.
A 3D environment without a modeller
We had nobody dedicated to 3D modelling, so the environment needed a workflow where levels could be assembled from basic geometry. The answer was a single custom URP shader used by every material in the game, which handles almost all of the final look.
Texture
Textures are sampled unfiltered at a capped resolution without perspective correction, and vertices snap to a virtual resolution, as on PS1 hardware.
Colour
Colour is reduced to 15 bits with a 4×4 ordered dither and can go through a custom palette, baked into a LUT that picks the nearest colour.
Projection
Textures are projected from world position instead of relying on UVs, so a cube scaled into a wall or a floor keeps the same texel size.



Lighting follows the rules of the era too. Lights are computed per vertex, through a custom light system that sends the 24 nearest lights to the shader, and tessellated cubes replace Unity’s cube so spotlights leave visible pools on large floors. Ambient occlusion is cut into a few dithered bands, in blocks the size of a 240p pixel, so it reads like colour baked into the vertices rather than a modern effect. On top sit volumetric light cones, blob shadows under the cars, flicker on some lamps and a CRT screen post-process.
With this system, primitives and tileable textures are enough to build levels that hold the style without a bespoke modelling pass. Props are CC0 scans from Poly Haven, converted with PSXIFY, my tool for baking high-poly assets into PS1-style ones, so they fit the same treatment.


To tell players apart, every car gets a livery generated from a seed: colours, pattern, sponsors and race number. Because it is deterministic, the same player drives the same car in the garage, in every minigame and on the podium.
Seven networked minigames without syncing every event
One player hosts and the rest connect through Relay. Most mechanics send no per-event messages: belt speed, the Sweeper arm angle and the whole Treadmill Shift shift sequence are computed from the shared round time and a seed the host hands out at the start, so every machine gets the same result.
Hits follow a common pattern: each car’s owner detects the hit and reports it, and the host checks, with some slack, that the obstacle, missile or arm really was close in its own view before taking a life. That way latency never kills a player for something they had dodged on their own screen.
Tournament structure
A match plays every minigame once, in random order and never the same one twice in a row. Conveyor Chaos, Treadmill Shift and Sweeper are played over several heats that give their own points (4, 3, 2 and 1), and the total decides the placement in that minigame. That placement gives the tournament points, 10, 6, 3 and 1, so a minigame with heats weighs the same as a single-round one. Between minigames, a hallway scene presents the cars one by one, and at the end a podium shows the top three.
My role
Game design · Programming · 3D environment
- Designed the bomb rule, the seven minigames and the tournament structure.
- Programmed the driving, multiplayer, minigame and heat flow, and every mechanic.
- Built the 3D environment and the visual pipeline: the PSX shader, lighting, ambient occlusion and post-processing.
- Processed the scanned props with PSXIFY to bring them into the style.
- A designer handled the UI and the logo.
Stack
- Unity, C#, URP and HLSL shaders
- Netcode for GameObjects, Unity Relay and Multiplayer Services
- PSXIFY and CC0 scans from Poly Haven
Credits
Sedan based on “Low-Poly Derby Sedan Base” by S1lMoon. Engine audio by dobroide and crowd audio by dersuperanton (CC BY 4.0), plus other sounds from Freesound.