Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
# @suaveplan/r3f-networking - R3F-tier multiplayer state synchronisation: interpolation, client-side prediction, snapshot diffing, server reconciliation FSM, React hooks + React-Three-Fiber components. Transport-agnostic — composes any @suaveplan/network Transport.
## Summary
R3F-tier multiplayer state-synchronisation for React-Three-Fiber scenes.
Composes any `@suaveplan/network` `Transport` (canonical:
`@suaveplan/network-transport-webrtc`), `@suaveplan/diff` for snapshot
deltas, `@suaveplan/fsm` for the reconciliation state machine, and
`@suaveplan/serialize` for the wire codec.
<!-- begin:auto-docs -->
## Documentation tree
- [server-authority](./src/authority/server-authority/server-authority.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [server-authority](./src/authority/server-authority/server-authority.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [network-provider-context](./src/components/network-provider/network-provider-context.md) — Module-scope `React.Context` exported as a separate file so consumers can import the context object directly (`useConte…
- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [apply-networked-frame](./src/components/networked-entity/apply-networked-frame.md) — Pure per-frame helper that writes a target `EntityTransform` into a Three.js group-shaped target. Local entities snap d…
- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
<!-- end:auto-docs --> - [server-authority](./src/authority/server-authority/server-authority.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-provider-context](./src/components/network-provider/network-provider-context.md) — Module-scope `React.Context` exported as a separate file so consumers can import the context object directly (`useConte…
- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [apply-networked-frame](./src/components/networked-entity/apply-networked-frame.md) — Pure per-frame helper that writes a target `EntityTransform` into a Three.js group-shaped target. Local entities snap d…
- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_- [server-authority](./src/authority/server-authority/server-authority.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-provider-context](./src/components/network-provider/network-provider-context.md) — Module-scope `React.Context` exported as a separate file so consumers can import the context object directly (`useConte…
- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [apply-networked-frame](./src/components/networked-entity/apply-networked-frame.md) — Pure per-frame helper that writes a target `EntityTransform` into a Three.js group-shaped target. Local entities snap d…
- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_- [server-authority](./src/authority/server-authority/server-authority.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-provider-context](./src/components/network-provider/network-provider-context.md) — Module-scope `React.Context` exported as a separate file so consumers can import the context object directly (`useConte…
- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [apply-networked-frame](./src/components/networked-entity/apply-networked-frame.md) — Pure per-frame helper that writes a target `EntityTransform` into a Three.js group-shaped target. Local entities snap d…
- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_- [server-authority](./src/authority/server-authority/server-authority.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_ - [network-provider-context](./src/components/network-provider/network-provider-context.md) — Module-scope `React.Context` exported as a separate file so consumers can import the context object directly (`useConte…
- [network-provider](./src/components/network-provider/network-provider.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_ - [network-stats](./src/components/network-stats/network-stats.md) — <!-- begin:auto-docs --> _(no submodules)_- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_ - [apply-networked-frame](./src/components/networked-entity/apply-networked-frame.md) — Pure per-frame helper that writes a target `EntityTransform` into a Three.js group-shaped target. Local entities snap d…
- [networked-entity](./src/components/networked-entity/networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_ - [interpolation](./src/core/interpolation/interpolation.md) — <!-- begin:auto-docs --> _(no submodules)_- [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_ - [prediction](./src/core/prediction/prediction.md) — <!-- begin:auto-docs --> _(no submodules)_- [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_ - [reconciliation-fsm](./src/core/reconciliation-fsm/reconciliation-fsm.md) — <!-- begin:auto-docs --> _(no submodules)_- [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_ - [snapshot-diff](./src/core/snapshot-diff/snapshot-diff.md) — <!-- begin:auto-docs --> _(no submodules)_- [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_ - [state-buffer](./src/core/state-buffer/state-buffer.md) — <!-- begin:auto-docs --> _(no submodules)_- [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_ - [wire-codec](./src/core/wire-codec/wire-codec.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_ - [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_ - [use-network-predict](./src/hooks/use-network-predict/use-network-predict.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_ - [use-network-sync](./src/hooks/use-network-sync/use-network-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_ - [use-networked-entity](./src/hooks/use-networked-entity/use-networked-entity.md) — <!-- begin:auto-docs --> _(no submodules)_- [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_ - [observability](./src/observability/observability.md) — <!-- begin:auto-docs --> _(no submodules)_- [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_ - [entity-sync](./src/sync/entity-sync/entity-sync.md) — <!-- begin:auto-docs --> _(no submodules)_- [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ - [interest-manager](./src/sync/interest-manager/interest-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ - [memory-transport](./src/transport/memory-transport/memory-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_ - [network-helpers](./src/utils/network-helpers/network-helpers.md) — <!-- begin:auto-docs --> _(no submodules)_
## What this package owns
- **Interpolation** — frame-loop smoothing of remote-peer transforms
([`core/interpolation`](./src/core/interpolation/interpolation.md)).
- **Client-side prediction** — local input applied immediately, reconciled
against authoritative snapshots
([`core/prediction`](./src/core/prediction/prediction.md)).
- **Reconciliation FSM** — `synchronized → diverged → resyncing` state
machine driven by divergence magnitude
([`core/reconciliation-fsm`](./src/core/reconciliation-fsm/reconciliation-fsm.md)).
- **Snapshot diffing** — RFC-6902 JSON Patch between authoritative
snapshots via `@suaveplan/diff`
([`core/snapshot-diff`](./src/core/snapshot-diff/snapshot-diff.md)).
- **Wire codec** — Zod-validated frame encode/decode via
`@suaveplan/serialize`
([`core/wire-codec`](./src/core/wire-codec/wire-codec.md)).
- **Entity sync + interest management**
([`sync/entity-sync`](./src/sync/entity-sync/entity-sync.md),
[`sync/interest-manager`](./src/sync/interest-manager/interest-manager.md)).
- **Server authority** with anti-cheat hooks
([`authority/server-authority`](./src/authority/server-authority/server-authority.md)).
- **In-memory transport** — deterministic real `Transport` implementation
for integration tests
([`transport/memory-transport`](./src/transport/memory-transport/memory-transport.md)).
- **React hooks** — `useNetworkSync`, `useNetworkedEntity`,
`useNetworkPredict`.
- **R3F components** — `<NetworkProvider>`, `<NetworkedEntity>`,
`<NetworkStats>`.
## Observability
OTel meter `@suaveplan/r3f-networking`. Histograms
`r3f_net.snapshot_dispatch_ms` and `r3f_net.prediction_divergence`;
counters `r3f_net.snapshots_total{outcome}` and
`r3f_net.peer_events_total{event}`.
## Error registry
`defineCodes("R3F_NET", […])` — 8 codes:
`SNAPSHOT_OUT_OF_ORDER`, `PEER_DROPPED`, `PREDICTION_DIVERGED`,
`INVALID_OPTIONS`, `INVALID_SNAPSHOT`, `DISPOSED`, `TRANSPORT_FAILED`,
`ABORTED`.
## License
MIT