Learn
Architecture boundaries
How Meridian uses owned contracts, stable identity, typed commands, immutable snapshots, and explicit adapters.
Meridian’s systems have names because their responsibilities need edges. Rendering should not quietly own world state. Procedural authoring should not become the live physics simulation. Third-party libraries should not decide the public API forever.
Meridian-owned contracts
External libraries stop at adapters. Code above those adapters works with Meridian descriptors, handles, errors, and commands rather than leaking wgpu, Rapier, egui, or provider-specific types into stable interfaces.
- 01External library
A replaceable implementation detail with its own types and lifecycle.
- 02Adapter
Translation, validation, capability checks, and error mapping happen here.
- 03Meridian contract
The rest of the engine sees stable, engine-owned behavior.
Stable identity and local handles
Persistent IDs cross save, source, package, and network boundaries. Generational handles are fast, process-local references. Confusing the two creates stale references or makes durable data depend on one runtime session.
Commands and snapshots
Cross-domain mutation travels through typed commands and explicit barriers. Render, audio, and worker systems consume immutable snapshots. This makes ownership visible and gives tools, undo, recovery, and diagnostics something concrete to inspect.
- 01Authoritative world
Gameplay and tools apply validated commands at defined barriers.
- 02Extraction
Relevant state becomes an immutable, versioned snapshot.
- 03Consumer systems
Rendering and workers process snapshots without taking world authority.
- 04Correlated result
Outcomes and diagnostics return with stable context.
Optional means absent
When an optional pack is disabled, it should add no tasks, listeners, allocations, GPU resources, panels, package chunks, or dependencies. A disabled feature that still quietly runs is not optional in the way Meridian uses the word.
Source remains authoritative
Source documents are the durable truth. Compiled chunks, generated artifacts, derived caches, and cooked outputs can be rebuilt. Recovery favors the source and records what had to be regenerated.