Skip to content

Status and Limits

Zaldaryon edited this page Aug 28, 2026 · 3 revisions

Status and limits

WorldgenLib 0.1.0 has a working server-side hook implementation and a documented API. The public source release is separate from this documentation publication.

Current status

Area Status
GenMaps seams Implemented: nine map stages, generator wrappers, padding, force requests, and region finalization
GenTerra seams Implemented: steps 0, 2, 4, 5, 7, 10, terrain finalization, and full terrain adapter
Post-process Implemented: opt-out and floating-node cleanup rules
BlockLayers Implemented: raise modifier, sea-level filter, and full-pass adapter
Shared state Implemented: contexts, typed request data, moddata helpers, landform and region-map registries
Sampling Implemented: coordinate-aware terrain and threshold queries with invalidation
Four-target seam matrix 4 of 4, or 100%, at the library boundary
External consumer source migrations 0 of 4 in the current workspace
Synthetic reference consumer ExampleRiver builds against the API
Server evidence Vintage Story 1.22.0 through 1.22.7 server environments; 3 of 3 headless checks passed for each version, including seed 42
Versioned server lifecycle matrix 8 of 8 versions, or 24 of 24 individual checks
Canonical byte-level worldgen parity 8 of 8 versions, seed 42, vanilla×vanilla×WorldgenLib streams byte-identical at the canonical boundaries
Full persisted-save parity Not claimed: raw saves include runtime-owned and process-sensitive state outside the canonical probe

The 100% figure means that every server-side mechanism observed in the four reference consumers has an atomic hook or an explicit terminal adapter. It does not mean that WorldgenLib changed those external repositories or verified them in-game.

Known limits

Consumer migrations are not complete

The library has a destination for Rivers-Mod, VSRiverGen, Watersheds, and Terra Prety mechanisms, but no adapted external source tree or consumer-specific runtime result is included here. Each migration still needs source-owner coordination, behavior comparison, and a fixed-seed server run.

Canonical host composition needs a policy

The cooperative path preserves the vanilla initialization state and suppresses duplicate canonical generation callbacks after the conflict gate. This avoids two complete owners writing the same request. It is not a general proof that WorldgenLib can compose with every foreign middleware or IL patch. Blocking conflicts must remain visible and tested.

Version lifecycle and canonical output coverage

The implementation has been rebuilt and exercised against Vintage Story 1.22.0 through 1.22.7 while declaring a 1.22.0 game dependency. All eight versions passed the same three headless server checks, including startup worldgen and the seed-42 scenario. This supports a server lifecycle and load compatibility claim across the audited range.

A follow-up run used the server-side WorldgenLib.ParityProbe. For each version, two fresh vanilla processes and one fresh WorldgenLib process generated seed 42. The probe captured one map region and one target chunk column near the center spawn area. It serialized map-region maps, Terrain-pass block and fluid IDs, and map-chunk heightmaps into fixed little-endian WGLP bytes. All eight versioned comparisons were byte-identical.

This is canonical worldgen-output parity at the map-region and Terrain boundaries. It does not claim that raw persisted saves are byte-identical. Entities, block entities, lighting, and process-sensitive late decoration state are outside the probe contract.

BlockLayers inline hooks depend on IL shape

The raise and sea-level hooks require a structural pattern in the target Vintage Story method. WorldgenLib validates the pattern and fails registration clearly when it is absent. The full-pass adapter is available for algorithms that need complete ownership, but it also needs a version-specific runtime fixture.

Persistence and reload fixtures remain smaller than the API

The region-map format is namespaced, bounded, versioned, and attached to a real IMapRegion, but a full native save and reload fixture remains release work. The same applies to every native landform reload path.

Sampler parity is structural, not a numeric guarantee

TerrainSampler uses the canonical WorldgenLib noise stack and exposes consumer-owned modifiers. It has not yet been proven numerically equivalent to every historical sampler fork, including Watersheds' implementation.

Some diagnostics are intentionally limited

The API exposes hook and step reports. A complete live conflict fixture with a loaded external consumer is still needed. The canonical probe is deliberately narrower than a full persisted-save decoder.

Release criteria

A stronger public release should add:

  • at least one real author-owned consumer migration;
  • fixed-seed runtime scenarios for all four target consumers where source is available;
  • a stable contract for full late-pass or persisted-save parity;
  • native region-map persistence and landform reload fixtures;
  • explicit policies for incompatible river providers and foreign full-pass owners;
  • a documented source manifest and packaged mod artifacts.

Clone this wiki locally