Axiom/Docs
Third-party game support

Game support packs

Every game stores its world differently, so a pack is code. What Axiom fixes is not the layout, it is the question being asked.

The provider interface
ENTITY.QUERY@1what the capability asks
// what entity.query@1 asks
struct EntityProvider {

  // this frame's entity set
  Status snapshot(SnapshotSink&);

  // handle from last frame, ok?
  bool   alive(EntityId);

  // handle to something readable
  Status resolve(EntityId, EntityRef&);
};
Three functions whose bodies can do anything. The mod-facing face of the capability never changes.
What a pack cannot do
Add a new runtime
An unsupported engine needs a backend, which is code against the nine primitives.
Unblock a protected title
Kernel anticheat is refused at publish and at attach.
Change the surface
A pack provides capabilities. Defining new ones would make mods target the pack, not the surface.

Where the per-game reality goes

All seven are f.entities().alive() to a mod.

Game shape
What snapshot does
Flat pool, fixed stride
One bulk read, stride the buffer
Chunked pool, free list
Walk chunk headers, skip free slots by bitmap
ECS archetype tables
Iterate archetypes matching the component mask
Scene graph
Depth-first from the root, flatten as it goes
Handle table behind a vtable
Read the table, call the virtual getter per live slot
Managed heap (JVM, CLR)
Backend object API, no pointer math at all
Linked list of actors
Chase next until null, bounded by a sanity cap
The declarative path is a provider
bind/entity.toml configures a built-in FlatPoolProvider implementing the same three functions. One code path, not two. A pack that outgrows the TOML swaps in a WASM module and nothing downstream notices.
Sandboxed by default
A provider needs memory.read, symbols, sometimes memory.scan. Short enough to ship as Tier W WASM: no prompt, and a bad provider traps instead of corrupting the host. Native only when it must be inside the frame.

Conformance decides which pack you trust

pack.alice.mygame16/176 buildswasm providerIn use
pack.community.mygame12/179 buildsnative providerSwitch
pack.orig.mygameno build after 1.3.0abandonedFork it

Providers are arbitrary code walking arbitrary structures, so the live test suite is the only thing between a confident pack and a mod quietly reading nonsense. Profiles and mods are separate artifacts, so switching packs never touches installed mods, and anyone can fork a stale pack under their own namespace with no permission needed.