Meld is the orchestrator and UI. It drives a custom Arnis fork to generate each cell.
Every version below links to its release on GitHub, where you can download that exact build.
On the same city, same machine, a render that took 230 s on a stock 1.9.7 now takes 136 s — 1.7× a default install, 1.3× a hand-tuned one, and 1.8× what the generator manages alone on the same ground — while using 30–40 points less memory at peak. Default output is unchanged, hash-verified against 1.9.7 on every build.
Meld now picks its own worker count. One generator process cannot fill a modern CPU (measured: 10 of 24 cores), so Meld starts low, times every finished cell, adds workers while that keeps paying, backs off when it stops, and remembers the answer per project and scale — never exceeding the worker, CPU and free-memory limits you set. Two savings sit underneath it: cells no longer write the seam ring the merge deletes moments later, and cached map tiles carry a pre-parsed sidecar so repeat renders skip most decoding.
A long list of scheduling bugs went with it: Stop never actually set its flag, so cancelled cells were resubmitted twice; a stopped run could be revived by its own prefetcher; a project switch mid-run could merge cells into the wrong world; and the first run of a new project sat at about a third of the machine. Caves also broke in worlds taller or deeper than vanilla — a giant void above roughly y=256, solid rock below y=−64 — and both limits now follow the world’s own bounds.
Two new generator options ship off by default, because they deliberately change the world: smooth river beds (a rounded channel scaled to the river’s width, with lakes and oceans left untouched) and road grading (one slope-limited height profile per road, so a carriageway ramps instead of stepping on terrain contours). Bundles the Arnis fork 3.1.8.
The Meld half of the 3.1.0 generator upgrade. Scale is now validated before a render starts: the generator rejects --scale outside 0.01 to 4.0 at the parser, so Meld clamps the stored value on write, shows what will actually run, and clamps again when building the command line. Non-finite values fall back to 1.0. The Scale box gained an upper bound and says when a value is out of range instead of accepting it silently.
Image signage is explicitly held off: arnis 3.1.0 added --signage (street plates and billboards as map items in item frames), but the map payloads live in the world’s data/ directory, which Meld’s merge does not carry across cells. Every cell would restart map ids at 0 and the merge would drop them all, leaving blank frames everywhere. Meld states the value rather than inheriting a default it does not control.
Six months ago Meld was a Python script that drove one generator over one country. Unbound rolls the whole desktop arc, previewed and hardened across 1.8.4–1.8.9, into one release: a portable app for Windows, macOS and Linux with no Python, no installer and no terminal. It keeps itself and its generator up to date, prices every job against your machine before starting it, fetches its own map data, and carries a preset system so a world’s look travels as one file. Bundles the Arnis fork 3.0.10. Download links for each platform are on the home page.
Only the 1.9.x arc is shown here. The full Meld history, 1.8.x back to 1.0, lives on GitHub with notes and downloads for every release.
Full Meld changelogThe generator Meld runs for each cell. These are the changes that make adjacent cells line up.
A tiled cell used to write 36 region files and keep 16 — the rest a seam ring the orchestrator deleted moments later. It now writes only the regions it owns (−12% per cell), and cached map tiles gain a content-verified pre-parsed sidecar that cuts decoding from 946 ms to 429 ms per cell. With no new flags passed, output is byte-identical to 3.1.7.
Caves are fixed for any world height. Vanilla’s limits were baked in as constants, so above roughly y=256 every underground block became air — one giant void under any mountain reaching past it — and below y=−64 no caves generated at all. Both fade bands now follow the world’s real floor and ceiling; at vanilla bounds the new formulas land on exactly the old numbers, bit for bit.
Two opt-in quality passes, both default off. --river-bed v1 replaces the terraced integer depth steps with a smooth channel whose bank curve scales to the river’s width, applied to rivers only — lakes, oceans and coastlines keep their own beds, enforced by clipping mapped water out of the river mask rather than trusting tags. --road-grade on gives each road one height profile computed before placement from the unrounded terrain, limited to one block of climb per 4–12 travelled by road class, so steps become evenly spaced ramps instead of contour cliffs.
Nothing about the world changes: every render is byte-identical to 3.1.0, verified by world hash. On the farmland-dense benchmark bbox (Flevoland, 61 farmland polygons), peak memory dropped from 4929 MB to 1333 MB and generation time from 24.5 s to 11.8 s. Crop blocks now share one of eight prebuilt NBT compounds instead of allocating per block, section palettes stop re-deriving the same answer 4096 times, and field parcel layout memoises its bearing per thread instead of taking a lock and three trigonometric calls per block.
Every upstream change from v3.0.10 to v3.1.0 (90 commits across 17 pull requests) triaged one by one, with the reason for each take, adapt or skip written down. The fork gains a golden world-hash regression harness with five committed OSM fixtures covering deliberately different tagging regimes, so generation is finally gated by committed baselines instead of eyeballing finished worlds. --scale now rejects NaN, infinities, zero and absurd values at the parser with a real message; the accepted range is 0.01 to 4.0. The update check finally points at this fork instead of upstream, and Overture release discovery works again.
Only the two newest fork releases are shown here. The full fork history, 3.0.10 back to 2.8.1, lives on GitHub with notes and downloads for every release.
Full Arnis fork changelog