Skip to content

Predict the owned player with input-replay reconciliation - #288

Draft
bdero wants to merge 4 commits into
masterfrom
bdero/net-prediction
Draft

Predict the owned player with input-replay reconciliation#288
bdero wants to merge 4 commits into
masterfrom
bdero/net-prediction

Conversation

@bdero

@bdero bdero commented Aug 2, 2026

Copy link
Copy Markdown
Owner

The owned entity now predicts from local input and reconciles by replaying the inputs the server has not yet applied, replacing the error-smoothing stopgap that lagged by the round trip under real latency. SceneReplication grows a localPrediction seam supplying a PredictedController, and the Multiplayer example consumes input commands server-side with a prediction toggle and a simulated-latency control so the difference is visible on one machine.

Draft until the next dashwire/dashwire_replication minor publishes (bdero/dashwire#1); the constraint bump from ^0.1.0 lands here once it does, so CI stays red in the meantime.

@argos-ci

argos-ci Bot commented Aug 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Argos notifications ↗︎

Build Status Details Updated (UTC)
android_gles (Inspect) ⚠️ Changes detected (Review) 1 added Aug 2, 2026, 10:16 AM
android_vulkan (Inspect) ⚠️ Changes detected (Review) 1 added Aug 2, 2026, 10:15 AM
linux (Inspect) ⚠️ Changes detected (Review) 1 added Aug 2, 2026, 10:10 AM
web (Inspect) ⚠️ Changes detected (Review) 1 added Aug 2, 2026, 10:10 AM
windows (Inspect) ⚠️ Changes detected (Review) 1 added Aug 2, 2026, 10:12 AM

bdero added 4 commits August 2, 2026 03:05
Invert the strafe axis, center the HUD via the shared overlay, restyle
the join screen as a centered dark modal, and drop the colon from its
copy. Add PredictedTransformComponent (owned-entity client prediction
with error-smoothing reconciliation) and the SceneReplication
localPrediction seam, plus the NetworkTransformComponent idle-gap
re-anchor so a resuming remote eases in instead of snapping.
PredictedTransformComponent now drives a fixed client tick, sampling and
sending an input command per tick, predicting through the shared step,
and reconciling against the authoritative pose the server confirms via
the input-command ack (rolling back and replaying unacked inputs). The
localPrediction seam takes a PredictedController (sample plus step)
instead of a bare step. Supersedes the error-smoothing anticipation.
Player input now flows as tick-stamped input commands the server
consumes authoritatively and the client predicts with the same
advancePlayer step, replacing the owner-written input field. Adds a
prediction toggle and a simulated-latency control so the difference
between predicted (instant, reconciled) and interpolated (lags by the
round trip) local movement is visible on one machine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant