-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rollback requests ignored when max_predictions
number of local inputs is saved
#70
Comments
Here is a (messy) patch I'm using for my game currently. It boils down to checking if the local player should advance the frame (if it isn't predicting too far ahead) at the start of the |
Oh I totally missed that this issue already existed and opened #75, totally welcome to close my issue as dupe if desired. @aleksa2808 I implemented my own attempt at fix here: #77 and a unit test to reproduce this case - will take a look at yours later and see how they compare. |
Hi! thanks for posting this bug report. Sorry for not responding so far. I have just posted a PR that slightly alters the logic for handling inputs. I am not 100% sure this fixes this issue, but it might. Would you be able to test this again on the lockstep branch? |
Duplicate of #75. |
Describe the bug
Take a sample situation that can occur in a P2P session in laggy conditions:
adjust_gamestate
you schedule a rollback/LoadGameState
request and modify the session's internal state in preparation for it.max_predictions
number of local inputs stored so you drop all created request and instead return aPredictionThreshold
error from theadvance_frame/add_local_input
methods.advance_frame
call, since the session state was modified in preparation for a rollback as if the rollback was guaranteed to happen, you now think there is no need to rollback anymore.Following these steps leads to a desync as you received a peer's input that didn't match your prediction but didn't rollback.
Expected behavior
In the described situation I would expect the next
advance_frame
call to remake the requests which were cancelled in the last frame, including the rollback one.The text was updated successfully, but these errors were encountered: