So if I understand desync appropiately,
The solutions is as follows:
Build into the game on every Xbox a slave server software like the original before we had dedicated servers. Build that software in to buffer between all slave server Xbox’s and comps, buffer pings at that level to a congruent speed and pregame test them for sight lines and shooter shot/damage taken…etc.
Make your dedicated servers the master server where the slave Xbox and comps upload data at congruent speeds and have the master server settle who shot first and locations , etc.
Then run the current game on the infinite and you have, hypothetically, solved desynchronizarion.
I hope this makes sense… please comment if I need to explain further and begin the build.
The host is still held on the dedicated servers… but it’s kind of a hybrid where
It’s like an old school 4v4 with 9 Xbox’s… the ninth being the dedicated servers… but the advantage is that
The Other 8 Xbox’s have to sort of buffer and come to a consensus about shot registration etc before the host server or master server allows the game to start and settles disputes in real time with an algorithm
What they are attempting to do is illogical bc no matter how geographically close people get to servers-the ultimate non congruence of distance to server and bandwidth speeds-ultimately lead to desynchronization. Quite frankly due to it be favoring the shooter, if you have multiple shooters, as we do, then the only logical way to proceed is as described due to the differing shooter input pings and so forth.
I don’t this this would ever make sense without somebody already being well versed in Halo’s networking, along with real world experience on networking in general. Most people here, including myself, just play games.
I don’t think there is an ideal solution for online gaming particularly in FPS where there are so many variables and every millisecond counts…what there is though is the “least worst solution” and I don’t think 343i have implemented anything close to that. All their attempts to fix their parameters won’t resolve the core issue which is their implementation method was the wrong choice. You can’t polish a turd so they need to take a step back and have a total rethink of what has been implemented and consider alternative options that would best service the game and the players.
Well, the ppl doing it are unable to fix desync. Hence, this theoretical model could be a resolution. It is based off real world networking (isp’s throttling up/download and thus ping as well, prior Xbox live non dedicated servers principles, and current explanation of desynchronization by 343).
I agree that I am not knowledgeable in networking and could not design it personally, However I believe, if they took the theoretical premise, 343 could take the time to build and test it to create a real resolution to the issue.
It is just based on “do it right, the first”
I think we all can agree that mitigation has failed at this point; for example, say I don’t want to soloque and I play with a friend in Europe. Either I or my friend, based upon server selection, will have astronomical ping/desync. If that’s acceptable then they’ve fixed it. Furthermore, if I enter an online tournament on my WiFi and a guy has a 5gig up/download and I get 60 ms and he gets 20ms on my server-my handicap leads to me having to be able to play like 40% better… for example, if he shoots 60% accuracy, I have to shoot 84% accuracy to even tie… thus, it is not a level playing field to say the least!
Now, let’s agree that I’m clueless to networking and internal 343 networking… now let’s say to 343 together:
Please make desync go away big Whig genius awesome halo networking team… thanks, I’m sure it’s going to be playable soon for the poor people who love halo.
That’s the point, every ms counts… so if you throttle the ms to equivalency, then ms no longer matter; furthermore, if you throttle ms slightly above then ranges of the ms range, you can alleviate all differing shot inputs to the server beyond nanoseconds to complete stability.
Now I will address your concern about higher ping games-you implement at the user level at ping range selection… kind of what they were attempting to do with h5 where a user chooses from the following,
Example (player 1 has ping to local server of 20)
Ping selection menu
20-30 more local
30-40 more open
40-50 open
50-60 more broad
60-70 broad
Etc…
Now, this will help players play desync free games and help them decide whether to upgrade internet to say play less laggy games; also it might be you want to play ranked and min ping and play with friends at others times at open; it has these purposes and many more.
ISPs throttling up/download does not necessarily increase ping. Bandwidth (speed) and Latency (ping) are not necessarily connected. A 1 Gbps wired connection has quite a bit less latency than a 1 Gbps Wifi even though they have the same bandwidth. Having a congested connection can lead to higher ping as the packets need to wait but if nothing but the ping is running it won’t make much of a difference. Similarily if nothing but the game is running it likely won’t congest any broadband connection. If of course people are doing data intensive stuff (4k streaming, unthrottled downloads, etc. it will impact the ping). Also distance is a major factor and I dare say the most important one (if a US player is engaging with someone from the EU, they will see > 90 ms end to end no matter what connection they’re on).
Your buffering solution also would not solve desync - it would mainly equalize the amount of it across players (so we artificially introduce lag to people with lower ping). It would merely equalize the amount of desync everyone would encounter.
Alternatively of course we could get completely rid of desync by saying: only what the server has said is ok is allowed to go on people’s screens. This however would mean that each input you make is getting delayed by at least the ping before it shows up on your end. This would make the game feel incredibly sluggish. There’s actually a name for this mode of operation: lockstep processing. It was how early FPSs like Quake played on LAN. This is fine if you have low framerates (< 30 fps) and low latencies (< 10 ms) but it had the aforementioned issues which led to the introduction of “client side interpolation” or as 343 calls it “lag compensation”. Now you proposed adding local servers on each client but it would run into the same problem: you’d either have the servers in lockstep or you’d have the servers desynchronize from each other.
Basically there’s two things 343 can do here (and both need to be worked on):
1.) fix causes of errors on clients not being corrected to the authorative server state (this is was they themselves call desync). They have found several instances of that happening so hopefully that will be going away.
2.) Tweaking the “lag compensation” to feel right. It seems their scheme of predicting what’s happening is different of how other games and even older Halo games do it. And this quite often feels off to people. I can’t quite put my finger on why that is but it just sometimes feels off.
PS: As for what lag compensation does and why it’s necessary here’s a quite good video on this topic with regards to CS:GO: https://www.youtube.com/watch?v=6EwaW2iz4iA
You’re right… my understanding of desynchronization was incorrect… I actually took the time to read 343’s article on desync.
Take a moment to contemplate this final thought b4 I get back to finance (no response necessary if it is not applicable)-
If you keep pings in a relatively desired range say 10-20
Player 1- 20 ms
Player 2 - 10 ms
Player 3 - 15 ms
Variables- FPS, PPS (packet per second), tick rate
Premise: if you vary the number of frames and packets and tick rate/player per second in ratio to different pings between players, you can mitigate desynchronization
Example,
Players play game (3 person game between players with ping 20, 10, and 15 ms; player 1, 2, and 3 respectively
Player 1
20 ms ping
60 FPS
0.5 * player 2 pps
30 tick rate/second
Player 2
10 ms ping
120 FPS
No change pps
60 tick rate/second
Player 3
15 ms ping
85 FPS
0.75*player 2 pps
45 tick rate/second
I don’t know if this is feasible but, now I know why I’m getting shot behind walls now.