Skip to content

v0.7.0

Choose a tag to compare

@Segfaultd Segfaultd released this 03 Jun 09:35
· 30 commits to master since this release

Virtual Worlds (Dimensions) for ReplicaManager3

This release adds runtime per-player dimension scoping on top of ReplicaManager3 — the SA-MP `SetPlayerVirtualWorld` / FiveM routing-bucket model for instanced interiors such as apartments.

Highlights

  • New lightweight per-entity / per-observer `VirtualWorldId` tag (distinct from the heavyweight RM3 `WorldId`). Players only see entities sharing their virtual world (or the `VIRTUAL_WORLD_GLOBAL` sentinel), switchable on the fly with no reconnect, while staying on the same connection and RM3 world.
  • Derive entities from the new `VirtualWorldReplica3` base (`mafianet/VirtualWorldReplica3.h`) — no per-object filtering code.
  • `Connection_RM3`: `Get/SetVirtualWorld` (the observer's dimension).
  • `ReplicaManager3`: `GetConnectionsInVirtualWorld` / `GetGuidsInVirtualWorld` (recipient-filter helpers for scoping chat/RPC/raw sends) and `SetPlayerVirtualWorld`.
  • The filter is applied only by the authority for an (entity, connection) pair, so a downloaded copy never despawns the entity at its owner.

Docs & tests

  • New "Virtual Worlds (Dimensions)" plugin guide; expanded contributing guide (how to test networked features end-to-end, the RM3 authority model, multi-peer gotchas).
  • New `VirtualWorldTest` (deterministic) and a self-contained `Samples/VirtualWorld` demo/smoke test.

See `mafianet/VirtualWorld.h` and `Samples/VirtualWorld` to get started.

Full changelog: v0.6.1...v0.7.0