-
-
Notifications
You must be signed in to change notification settings - Fork 0
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.
| 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.
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.
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.
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.
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.
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.
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.
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.
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.