Is there a way to prevent the client from running on ticks ahead of the server? I’ve set the MaxPredictAheadMS to 33, but the client still runs on ~12 different server ticks than the server @ 200ms simulated ping
Overall, I am trying to achieve a Moba style game. I want to allow 2 frames of predicted movement. Anything more, I cannot hide and I want to place the burden of latency back on the client.
Overall, this is how I want to imagine my scenario:
- Client has 200 RTT
- Client moves at Server tick 200
- Client determines 200 RTT is 12 ticks behind the server
- Client does not react to input until tick 210 (Giving 33.2 ms latency forgiveness that can be hidden later)
- Server receives client input at Server tick 212
- It starts executing immediately, being desync’d by 2 server ticks
However, I find myself struggling tremendously with all the bells-and-whistles that Netcode adds, such as:
- Client is actually running ahead of the server
- Predictive movement recalculates the position of each tick, so the client prediction becomes based on when the server received the command, not when the client was allowed to move
- Predictive movement (based on slightly desync’d server snapshots) can reach the destination of movement a couple ticks before the client does, which disables the movement and leaves the actual client position short of the destination.
I find myself wanting to disable everything Netcode related except connection logic and ServerTicks structure.