Trail Art Spike
Can a free, AI-only toolchain reach the Alto / Kingdom bar? Everything below is code-authored: sprites drawn in Python and gated to the 46-colour Apollo palette, terrain generated procedurally, and all mood from lighting, colour grading, colour-cycling and particles. 640×360 native, scaled with nearest-neighbour.
What the scene is testing
Each effect maps to a reference and to the beauty-per-effort shortlist from the research. None needs hand-drawn animation.
Atmospheric parallax
Seven layers (sky, clouds, far bluffs, Chimney Rock, river, bank, prairie, foreground). Each layer fades toward the sky's fog colour by depth.
Palette-table day cycle
Every pixel is a palette index. Time of day rebuilds a 46-entry colour table, so one set of art gives dawn, noon, golden hour, dusk and night.
Colour-cycled river
The North Platte is an index map. Rotating a 16-colour water range makes it flow and glint, and it reflects the current sky, all without animation frames.
Tiny figures, big world
People about 24px tall, oxen 32×20, wagon 64×40, the scale of the original's travel screen. The landscape carries the emotion.
Light overlay, not normal maps
At night, the campfire and wagon lantern add dithered pools of warm light. Try Camp mode at Night.
Weather is tint + particles
Rain, snow and dust storms change the grade, the fog and a particle system. The art underneath stays the same.
Sprite pipeline
Sprites are authored as code (ASCII grids plus procedural wheels) in sprites.py, exported as a PNG sheet, then checked by a palette gate before the engine may load them.
0 off-palette pixels · 0 semi-transparent pixels · 256×130 sheet · 20 frames
| Native resolution | 640×360, integer scaled (2× 720p, 3× 1080p, 4× 1440p, 6× 4K) |
| Wagon | 64×40, 4-frame wheel roll (8 spokes, loops seamlessly) |
| Oxen | 32×20, 4-frame walk; far ox is a palette remap, not new art |
| People | 11×25, 4-frame walk with bob and arm swing |
| Palette | Apollo by AdamCYounis, 46 colours |
Reference board
Links rather than embedded screenshots (their art isn't ours to rehost). What we're taking from each is noted.
Canvas Cycle (Mark Ferrari)
The technique behind the river, and the whole palette-table day cycle.
Curious Expedition press kit
Expedition-sim information density. Good for the landmark and trade screens.
Early findings
What this spike answers so far, and what it leaves open.
- Technique carries the look. Palette-table grading, depth fog, colour cycling and particles reach a moody indie feel with zero hand-drawn animation. Golden hour, dusk and night camp are the strongest; noon is the weakest (flat light hides the depth).
- The original's scale works. A 24px party on a 640×360 landscape reads clearly, and the landscape carries the emotion, as in Kingdom.
- Weakest area: near layers. The procedural rolling hills and prairie still show banding and look generated. Far layers (sky, bluffs, river) are convincing procedurally. Near layers need authored tiles, from Retro Diffusion or a hand-tuned tile set. Recommendation: procedural far layers, authored near layers.
- Code-drawn sprites pass the gate and read at 2–3×, but faces and walk cycles are crude up close. Next: compare against PixelLab output for the party and oxen once the key is set up.
- Grading mode: toggle Smooth vs Palette-locked. Recommendation: author art locked to the palette, but blend the grading smoothly (the Kingdom/Eastward approach). Locking the grading too makes skies posterise at dusk.
- Performance: about 60 fps with a plain Canvas2D software renderer at native res, no engine. WebGL is only needed if we add bloom or heat-shimmer distortion.
- Not yet tested: the store, map, river-crossing, hunting and landmark screens. Those are UI/layout mockups for the design phase, not art-pipeline risks.