Skip to content
Felucca Online

Roadmap

Break ground tile repetition with stochastic texturing

Status
Backlog
Milestone
The world
Area
Rendering
Priority
normal
Updated

Follow-up of the height-based terrain borders (#109). Inside one terrain the ground is still the baked variants laid on the tile lattice, so large fields of one type show the tile grid and the shared edge band every 32 texels.

Plan: cover the ground with a hex-cell lattice (cells about 1.5 tiles across, world-anchored) and give each cell a hashed transform of the terrain's tile texture that keeps the 1:1 texel mapping of #40: a whole-texel offset, a mirror and, for terrains whose tiles are square under the projection, a 90° turn of the sprite texel lookup. Between neighbouring cells use the same hard per-texel height pick as the terrain borders (the cell's weight plus k × the baked height under each cell's transform), so seams follow pebbles, tufts and cracks instead of cell outlines. Never blend colours.

Open points: Wang sheets (swamp, forest) are edge-matched on the tile lattice; their cells must either keep whole-tile offsets or fall back to the plain hash. Relief poking out of a diamond (the "three tiles in front" rule) has to hold per cell. Cost: one more lookup set per candidate cell on cell borders only; measure as in #28/#49/#65.

Done when a field of grass, a beach and a snowfield show no repeating tile pattern at zoom 2 and 4, the lookup cost is measured, and the CPU mirror (TileSet::pick) and its tests cover the cell transforms.