DarkflameUniverse / DarkflameServer

The main repository for the Darkflame Universe Server Emulator project.
https://www.darkflameuniverse.org/
GNU Affero General Public License v3.0
651 stars 173 forks source link

BUG: Player movement sync while racing needs improvement #753

Closed MustacheMan2 closed 1 year ago

MustacheMan2 commented 2 years ago

Make sure you've done the following:

DarkflameServer Version

500b788

Issue Description

An issue as old as time. When racing anywhere with any amount of players (2+), the movement sync in other players is not optimal. It's amusing at first to see cars lift off but it becomes a burden when you drive through powerups only to see them fade as your opponent suddenly appears in front of you. Shoving is also near impossible.

https://youtu.be/HYUaSjADx7o?t=2238

Reproduction Steps

Race with other players and make sure they are in viewing range. Observe.

Expected Behavior

Phasing through other cars and watching them do front flips while floating just shouldn't be happening to the extent it currently is. Desync during live happened sometimes but was minimal.

Environment

ubuntu server

DarwinAnim8or commented 2 years ago

I think adding proper rubber banding is unlikely, given the complexity of the topic and the limited information available. That said, it'd be interesting to see how it'd react if we bump the fps the game runs at server-side to be 120 fps, rather than 60.

EmosewaMC commented 1 year ago

so uh, it has nothing to do with tick rate. Our serialization was just wrong and wrong :) I have found and am working on the fix

EmosewaMC commented 1 year ago

Now as far as the powerups fading away too slowly, theres nothing we can really do about that. The client only sends information so often in regards to how often they move, so a faster server tick rate wouldn't even do anything. There is nothing we can do do make things like tight racing better aside from serializing the latency as the PR that will close this issue does. That should help clients predict where players are a bit better, but the powerups will still fade at the same frequency.

from my testing in the next PR, there is no way to be inside another racer mid race? regardless of anything, tests will need to be done to see what that PR fixes and doesnt fix in regards to the requested improvements here.

MustacheMan2 commented 1 year ago

Now as far as the powerups fading away too slowly, theres nothing we can really do about that. The client only sends information so often in regards to how often they move, so a faster server tick rate wouldn't even do anything. There is nothing we can do do make things like tight racing better aside from serializing the latency as the PR that will close this issue does. That should help clients predict where players are a bit better, but the powerups will still fade at the same frequency.

from my testing in the next PR, there is no way to be inside another racer mid race? regardless of anything, tests will need to be done to see what that PR fixes and doesnt fix in regards to the requested improvements here.

I figured the case was that the powerups faded at around the appropriate time, but the other players being in different positions than they actually were made things not add up at all, but I might be entirely wrong. As for being inside other players, maybe it's also a matter of wrong placements just being really confusing; there's been a lot of cases where I was sure they couldn't have been where they were without fading through me but lack of proper sync could have been the only issue. Guess we'll have to see what this fix brings.

MustacheMan2 commented 1 year ago

Played on the latest commit as of now. I'm very impressed, the sync is very very good; not perfect but a real improvement. It seems that the powerups disappear at the appropriate time when other vehicles are seen driving over them, however the vehicles aren't perfectly synced sometimes, so they might be seen as driving beside the powerups when they are actually picking them up. If there's more possible fixes, that'd be cool, but if not, no biggie :)

EmosewaMC commented 1 year ago

there may be more fixed in the future with regard to the ping prediction we tell the client to run its physics at, but outside of that I dont think there will be many more at the moment unless research finds more details