Skip to main content

ecsly_world_zones 0.1.0 copy "ecsly_world_zones: ^0.1.0" to clipboard
ecsly_world_zones: ^0.1.0 copied to clipboard

Zone-travel adapter for ecsly worlds (ADR 0003): the mesh sync pulse as an ordinary ecsly system driven by the game's OWN scheduler, and interest policies (zone census, spatial) over the world-layer contract.

ecsly_world_zones #

Zone-travel adapter for ecsly worlds (ADR 0003): the mesh sync pulse as an ordinary ecsly system driven by the game's own scheduler, and interest policies (zone census, spatial) over the world-layer contract (universal_storage_world).

In the repo, in active development; not published (publish_to: none). Depend on it through the pub workspace inside this repo, or via a git dependency outside it. 8 tests cover the pulse system and both interest policies.

What it does #

Three surfaces, all deliberately thin:

  • WorldZonesPlugin — the one-call install: registers the mesh pulse schedule into a world (world.addPlugin(WorldZonesPlugin(session))); removePlugin removes the schedule again.
  • meshPulseSystem / registerMeshPulseSchedule — the mesh sync pulse as an ordinary ecsly system. There is no new scheduler here: the pulse composes with whatever loop the game already runs (ecsly_flutter's frame schedule, ecsly_app's host schedule, a test's manual runAsync), because the world layer's scheduling law is host-driven (Pulseable) — the layer never owns a loop.
  • ZoneCatalogInterest / SpatialInterestPolicy — interest policies over the world-layer contract. The zone census subscribes a whole zone from its catalog doc; spatial interest delegates membership to a game query, so positions live in the world and never in the storage family.
final session = MeshWorldSession(storage: storage, selfId: peerId);
world.addPlugin(WorldZonesPlugin(session, trigger: EveryNSeconds(1)));

Dependencies #

universal_storage_world is published on pub.dev (0.1.0-dev.1, 2026-10-12) and resolves as an ordinary hosted dependency; ecsly resolves through the pub workspace.

Validate #

dart pub get        # from the repo root (pub workspace)
cd plugins/ecsly_world_zones
dart analyze
dart test           # 8 tests

Design record #

0
likes
140
points
177
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Zone-travel adapter for ecsly worlds (ADR 0003): the mesh sync pulse as an ordinary ecsly system driven by the game's OWN scheduler, and interest policies (zone census, spatial) over the world-layer contract.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#ecs #multiplayer #world-streaming

License

MIT (license)

Dependencies

ecsly, meta, universal_storage_world

More

Packages that depend on ecsly_world_zones