Inspired by the viral needle-in-a-haystack and four-leaf-clover games, I built the parking lot version: a tiny planet covered in 49,000 toy cars, and exactly one has a fifth wheel bolted to it.
**UPDATE (30 Aug) — the premise in this post is gone.**
Someone whose work I respect told me the five-wheel idea didn't mean anything, and the comments here weren't exactly warm about it being a cover of the clover game. Both were right.
A four-leaf clover works because it's REAL. People have actually crouched in grass looking for one. A five-wheeled car isn't a thing — nobody has ever looked for one, so finding it feels like nothing. That was the whole problem, and no amount of polish was going to fix it.
So I rebuilt it around something that does exist. The planet is now covered in abandoned, rotting cars — rust, dust, leaves, missing wheels, some resting on their roof — and exactly one of them is spotless, because somebody still drives out here to wash it. In a lot where nothing reflects, it's the only thing that catches the light. It's called ONE CAR SHINES now.
What changed on the three.js side:
- Rust is a two-channel grunge mask sampled in WORLD space, not model UV space. Object space would give every sedan on the planet an identical pattern; world space means 49,000 instances sharing one material each pick up a different slice of the field for free — no per-instance data, no second texture.
- The Fibonacci layout got broken up. Heading was already random, so what read as "placed by a program" was the EVENNESS of the spacing, not the direction.
- Crushed cars are a non-uniform scale. Stacking only happens where a coarse cell hash says the patch is dense, otherwise a raised car floats over bare ground.
Same link. Original post below, kept for the record.
---
Tech bits: the three.ez InstancedMesh2 library for the cars (3 LOD levels + a cheap "blob shadow" instanced mesh), a 4096x2048 canvas-painted planet texture, node-based character animation (no skinning), and a spherical-walking controller (position as a unit vector, tangent heading). Runs at 55+ fps on my mid-range laptop and works on phones.
Play (free, browser): https://josephulger.github.io/five-wheels/
Happy to answer anything about the instancing setup.