0001: Render sprites from 3D blueprints; diffusion is optional styling only
- Status: accepted
- Date: 2026-10-23
Context
The original plan generated each sprite with Stable Diffusion (Replicate or RunPod), then cleaned it up with a green-screen key and a nearest-neighbour shrink. A sim-game tile set needs four rotations of the same object, an exact 2:1 angle, identical lighting across a whole set, and pivots that line up with the tile grid. Diffusion models are poor at all four: rotations come out as different objects, the angle drifts, and the light changes per image.
Decision
The source of truth for every asset is 3D geometry: a JSON blueprint of primitives now, imported GLB models later (M7). A fixed orthographic camera renders the four views, so the angle, rotations, light and pivots are exact by construction. RollerCoaster Tycoon's sprites were also made from 3D renders.
Diffusion may come back later as an optional img2img styling pass (M10), conditioned on the render so the geometry can't drift. The Cleaner and every gate run again on its output.
Consequences
- No API keys or per-image costs for the core pipeline.
- Assets need geometry. Primitives cover simple scenery and buildings; complex rides need model import (M7).
- The look is "clean low-poly pixel art" until the style work in M8 and M10 lands.