3 ms·
World of Warcraft (and now other games) have a great semi-solution to number six. It turns out that by doing the game world calculations on the server but doin
by angelbob 14y ago
World of Warcraft (and now other games) have a great semi-solution to number six. It turns out that by doing the game world calculations on the server but doing them in parallel on the client and updating regularly, you can beat the speed of light thing in many cases.
And then when the client doesn't know something and guesses wrong, you get rubber-banding as it snaps back to last verifiable server state.
It's still a really, really good hack.
- psykotic 14y ago> World of Warcraft (and now other games) The technique is much older than that in gaming. Client-side prediction was the big ticket feature for QuakeWorld in 1996, and Wikipedia says Duke Nukem 3D had it 10 months earlier. Dead reckoning, a more advanced variation on the same theme, goes back even further to early work on distributed military simulations. With dead reckoning, not only does the client extrapolate based on the last update from the server, but the server also tracks how far each client's predictions would be from the true state, so it knows how frequently to send updates to maintain a low enough error. That is, the server simulates the clients simulating the server. For anyone with a deeper interest in this topic, perhaps the best overview of the trickier issues with networked synchronization and prediction in modern games can be found in this presentation on Halo: Reach from last year's GDC: http://www.gdcvault.com/play/1014345/I-Shot-You-First-Networking http://www.gdcvault.com/play/1014345/I-Shot-You-First-Networ...
- shasta 14y ago> World of Warcraft (and now other games) Other games were doing this many years before WoW.
- emtel 14y agoIt's not really a "hack" so much as how all networked multiplayer games work these days. But it doesn't really get you around the speed of light. If somebody is 100ms away, you can't know that they shot a rocket at you until at least 100ms after the rocket was fired.