This logic is broken.bender wrote: ↑22 Apr 2017, 14:58
There is always going to be a fundamental latency between regions. As you put it "THERE IS NO BEATING THIS PART". There's nothing that can be done about that, except better prediction to hide it.
The servers don't wait for each other. Each server sends a multicast packet(s) to all other linked servers every tick. They synchronise their states, fixing any conflicting states due to latency (the CPU intensive part). When there are no conflicting states, there is no need to update the clients. They already have the correct information and can use client side prediction to smooth movement out.
There is no central/master server.
You could have a bunch of US and AU players just walking around, but very little recalculation will need to be done most of the time due to motion prediction (as is the case with current game server tech). Most of the time, for all players it would seem like they are playing on a local server (as they in fact are). The only time things would start to get a bit laggy is when, say, both the AU and US player started shooting each other and moving around erratically.
Where this can get a bit confusing is, for example, if all the US players started shooting each other and the AU players started shooting each other, there would be no latency issues. There are no players from different regions interacting. All players would feel like they are playing on local servers (as they in fact are).
This would mean that if you're playing star citizen with your mates, you could interact and play with each other with minimal latency. Even if you join up with a US/EU player, most of the time latency wont be an issue.
Lets say 2 players, 1 in the US, 1 in the AU on their respective region servers aim at each other, instant kill to who gets the shot off 1st, timing of said shots is exactly the same. who wins in that situation between them? cause it cannot have both, the US server would say their player killed player AUS with player AUS not getting a shot off, the AUS server says the exact opposite. So which server is considered the "master" that determines the killer. It's straight up conflicting info, the servers are going to shit themselves trying to work out what the fuck is going on going into this continuous loop looking for the correct answer.
Even in your logic where AUS players are shooting each other and only themselves, that info HAS TO BE SENT TO OTHERS if they need it; and they always will. How would they know if the guys died or not? you have to tell them you shot someone, opened the door started a mission, EVERYTHING HAS TO BE SENT OTHERWISE DON'T SEND ANYTHING. Your still interacting with the other region even if you don't think you are
There has to be a "master" server to resolve these kind of conflicts, from shooting to reloading to just opening a damn door in the level, because if server A says "Ok opening the door", server B can just go "No door still closed here because to me your guy hasn't reached the door yet" and well who's correct then?
You mentioned multicast. Multicast is having a master server with the correct info so lets run with this because it also resolves the conflict in question of who shot 1st even though it's still broken in a myrad of ways. I'll call it Central from here on out.
Central server takes the data it receives from the region servers it took from the players and sends it back as correct info then those regional servers send that info to players as correct data. Lets say for sake of argument it's in the US.
So back to US vs AU player, same situation as before, in fact lets adjust it a bit, lets make the Aussie player shoot 150ms before the US player shoots, in that situation the AUS loses. why? because even though he shot 1st, that info hasn't reached the Central server yet, it takes 175ms ( FYI. this was the ping I got with my website in the US using my own hosted VPS in sydney) from AU to Central, where as the US server with a whopping low ping of 20 between it and the Central, Central confirmed the kill from the US server 1st, processed it and it already sending the data about the kill to the AUS server, any data it recieves from the AUS server about the kill is then considered "junk", error in the log would show as "player already dead when killshot confirmed lols", so even in your logic, the AU player would have a brief moment of celebration before the server was given the correct info, rolls back and goes "well I just got info from Central you died"
So 2 ways to fix this issue.
1. Remove the interaction between regions, you cannot shoot them and they cannot shoot you, get into your ship, join you on missions and whatever else, you can see them and stuff sure, but to each other, your a bunch of ghosts.
2.Lower the tickrate on the servers so it's less updated than the ping between the the AU-US. that tickrate is 5
Nobody would play a shooter with a tickrate of 5, thats not shooting, thats god damn turn base.