You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The netcode stack is strong, but SnapshotInterpolator interpolates only TransformComponent (Networking/Replication/SnapshotInterpolator.cpp), and client reconciliation blends only transforms. Animation state, rigidbody velocity, and other replicated component state aren't interpolated/reconciled — causing jitter on rotating / animated / physics-driven networked entities.
Proposed approach
Generalize interpolation/reconciliation to a registered set of interpolatable components (transform, velocity, animation state, key gameplay state) via the existing ComponentReplicator path.
Acceptance criterion met — a networked animated / rotating / physics entity moves smoothly on remote clients (no per-snapshot popping):
Interpolation + reconciliation are now generalized to a data-driven ComponentInterpolationRegistry with per-component policies (lerp / slerp / step), built on the existing ComponentReplicator path.
Registered set: Transform (translation/scale lerp + rotation slerp), Rigidbody3D (velocity lerp, type/mass step), AnimationState (step). Adding more components later is a single Register() call.
The Functional test InterpolatedComponentsSmoothOnRemoteClientTest drives a real physics body (moving + spinning) through the actual EntitySnapshot → SnapshotInterpolator path on a separate client scene and asserts the pose blends smoothly between server snapshots (strictly interior, monotonic, no popping).
Activity
drsnuggles8 commentedon Jun 30, 2026
@
Implemented in #483.
Acceptance criterion met — a networked animated / rotating / physics entity moves smoothly on remote clients (no per-snapshot popping):
ComponentInterpolationRegistrywith per-component policies (lerp / slerp / step), built on the existingComponentReplicatorpath.Register()call.InterpolatedComponentsSmoothOnRemoteClientTestdrives a real physics body (moving + spinning) through the actualEntitySnapshot→SnapshotInterpolatorpath on a separate client scene and asserts the pose blends smoothly between server snapshots (strictly interior, monotonic, no popping).The issue will auto-close when #483 merges.
@
Merge pull request #483 from drsnuggles8/feature/netcode-snapshot-int…
fix(test): P2P rollback determinism asserts logical state, not snapsh…