Skip to content

Talus-3

Latest

Choose a tag to compare

@osfv osfv released this 09 Oct 15:50
· 10 commits to master since this release

Try it in your browser: talus.tersa.tech

Talus-3 is the first public release of Talus, a 23M-parameter diffusion model that generates game terrain heightmaps: 64x64 cells covering 4 x 4 km, heights up to 1,200 m. You choose a terrain type (plains, hills, mountains, ridges, islands, mesas) and any of five properties (mean elevation, relief, slope, water coverage, roughness), and Talus fills in the rest. It runs on an 8 GB GPU at about 6 maps/s, or on a CPU.

Get started

git clone https://github.com/osfv/talus && cd talus
pip install torch --index-url https://download.pytorch.org/whl/cu128   # or the build for your machine
pip install -e .
gh release download v3.0.0 --repo osfv/talus --pattern talus-3.pt --dir checkpoints
nullscape sample --checkpoint talus-3 --archetype islands --prop water_fraction=0.6 --n 16 --formats png16,r16,obj --unity --out exports/islands

Exports: 16-bit PNG, Unity RAW (.r16), .npy and OBJ, each with a JSON sidecar giving the physical size. You can also keep parts of an existing map, lay out routes and flat areas, and grow seamless neighbor tiles.

Scores

Held-out TEST split, 1,000 maps per half, 0-100 where 100 means indistinguishable from real procedural terrain:

Talus-2 Talus-3
Realism 56.5 66.2
Spectrum 7.6 11.0
Slopes 56.4 60.5
Control 90.4 92.1
Playability 97.6 99.9
Clean detail 97.7 99.4
Average (9 scores) 77.5 80.3

How it was trained and chosen: docs/TALUS3.md. Full scorecard: docs/TALUS3_SCORECARD.md.

Files

  • talus-3.pt (93 MB): EMA weights, model and sampler configs, and the dataset statistics the sampler needs. No optimizer state. It loads with torch.load(weights_only=True), so opening it cannot run code.
  • talus-3.fp16.onnx, talus-3.json, talus-3.prior.bin: the browser version that runs on talus.tersa.tech. The ONNX file stores weights at half precision and computes in fp32; its samples stay within 6 m of PyTorch's. Made by scripts/export_web.py.
  • SHA256SUMS.txt: checksums for all of the above.

Known limits

  • Talus learned from procedural terrain only; it has not seen real elevation data yet.
  • Mountains and ridges are the weakest types, and mesas got worse than in Talus-2.
  • The power spectrum is still 9x the real-vs-real noise floor, mostly at the finest scales.

Code and weights: Apache-2.0.