Desync: http://zero-k.info/Battles/Detail/444277 Started with some specs then spread to players. What other info is needed for debug? (ex: my replay..?)
+0 / -0
|
lob lob develob! we need moar 3rd party lobbies with stale pathcaches
+0 / -0
|
|
|
Time to retire spring? :D Tetraform(I do like the part where you can play 5000 unit FFAs on a 1mbps connection though, while many of the new RTS/4X games require huge amount of bandwidth in Multiplayer, especially for the host having to send 10mbps of unit updates to each client..) hedgehogsA desync is what happens when your CPU says 2+2=4 while everyone else knows 2+2=5.
+0 / -0
|
Who the heck uses client mesh topology, that stuff is ancient... Star topology ftw
+0 / -0
|
Not to mention that lockstep is pretty much the only way for allowing gamedevs to write scripts freely with almost no need to deal with network stuff.
+2 / -0
|
|
|
quote: Not to mention that lockstep is pretty much the only way for allowing gamedevs to write scripts freely with almost no need to deal with network stuff. |
Probably why we have desync. Although in devs defense, we never really used anything but the networking used in spring to begin with. Maybe we should try implementing a star topology design, but instead of lockstep have an individual instance run on the servers which all the computers sync up with? Sounds worthy of being implemented(fixed) before steam release.
+0 / -0
|
I think I can represent "the devs" here: No.
+5 / -0
|
|
Implementing the train factory is an easy task compared to rewriting the engine's networking and setting up an infrastructure(server) ready to run all games and distribute them to the clients. The zk server currently doesn't run any games, the load is all on the clients. If you've played a single speedmetal game you'll know that it'd be madness to have a server run a multitude of those games simultaneously and distribute information about thousands of units * dozens of games * hundreds of players for every simframe.
+0 / -0
|
Makes sense, but heres a thought: What if we made the server have a tick counter. Games are still processed by PC's but ticks are counted by a server clock, and if someone desyncs, it reconnects at the current tick count?
+0 / -0
|
I don't understand exactly what you mean, this is a tick counter: But you may have meant this tick counter: 1 2 3 [Spoiler]Spring has a star topology wrt network messages, clients don't send messages to each other directly. Just an example for how impossible centralised simulation is: Let's say you want to write a widget that shows how much slow damage a unit has. Slow damage is entirely game-side, engine doesn't know to send it unless you ask the engine to. Now game devs have to make sure everything a widget will ever want to show the player will be sent over the network Another thing to consider is that spring's save file (which doesn't contain any lua at all!) can be a few MBs compressed. Admittedly, it is mostly incremental, but a lot of the info there is stuff that needs to be exposed to widgets (and lua will add a significant amount to that) so the required bandwidth to have a decent MP experience may be a bit preposterous
+2 / -1
|
|
Perhaps my comment was lost. I need people to run the replay and post their infolog when they have (preferably on pastebin). The infologs have hashes that might point to the difference between the games.
+1 / -0
|
quote: if someone desyncs, it reconnects at the current tick count |
There are two problems with this. The obvious one is: We don't have that instantaneous reconnect tech yet. The person would have to re-simulate the entire game. However (and this is the second problem), if they desynced once, it's almost guaranteed they will desync again.
+0 / -0
|
quote: We don't have that instantaneous reconnect tech yet. The person would have to re-simulate the entire game |
I haven't seen this on most other games, is this only spring limited?
+0 / -0
|
If you've not seen it in most other games, it seems you did see it in some, doesn't that answer the question? Anyway, no, it's not spring-limited, although popular (as in, big) titles have started to recognize the need for loadable/savable games and (primarily) replays where you can go back in time. Regardless, point 2 still stands: If you desynced once, there's generally a bug in the game which means you're more than likely to desync again, even if you manage to line things up in sync.
+0 / -0
|