Before / After — What Changed
With the rebuild done, I put the two screens up side by side.

The gameplay changed the most.
I threw out the rail movement pinned to a fixed point and laid down arcade physics.
Now there's acceleration and deceleration that doesn't stop instantly when you let go of a key, and jumps that fall under artificial gravity.
The rabbit no longer "moves" — it runs.
Adding failure was huge too.
I introduced a 3-heart system: hit a root and you lose a heart, and when they all run out it's game over.
To give the carrots — which you used to just pick up — some meaning, I layered on combos: at 5/10/20 consecutive pickups, the score multiplier climbs to ×2/3/5.
Golden carrots turn on a magnet for 8 seconds that sucks in nearby carrots, and grazing an obstacle by a hair earns you a near-miss bonus.
export const comboMultiplier = (count: number) =>
count >= 20 ? 5 : count >= 10 ? 3 : count >= 5 ? 2 : 1;
For the visuals, I stripped away the gray plastic and switched to toon shading.
Gradient fog and bloom set the twilight-burrow mood.
The number I'm proudest of is a different one.
External assets went from 27MB to 0 bytes.
I deleted the Stanford Bunny model and the PBR textures entirely, and sculpted the rabbit, the tunnel, and the carrots in code alone.
With nothing to download, the first load is that much lighter.
I didn't remake the same game — it effectively became a different one.
From the next post on, I'll take this result apart piece by piece.
First up: the rabbit's body, sculpted in code.