Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Sometimes network code is easier with deterministic engines. Some engines simply replay the remote/network inputs as if they were local (with various strategies for handling the time sync/time delays), and rely on the property of determinism of their underlying simulations to avoid divergence in player world states.

Knowing only how much Army of Two stressed its cooperative network play nature (including in its title), that's my best lay guess of the strong reason the game wanted deterministic simulations.

The impression I got from dev team discussions/features on The Halo Channel/Master Chief Collection was that Halo was built that way: its network engine wanted rock solid deterministic physics, so all the replay/recap features added to later games were a "free" bonus they were able to build on top from that earlier netcode requirement.



Age of empires was built via input synchronization + local determinism: https://www.gamasutra.com/view/feature/131503/1500_archers_o...


Winner winner chicken dinner. We only sent controller input over the wire for network play.


This has it advantages and disadvantages. One its great and requires less bandwidth, but also means that any floating calculation rounding issue can throw different machines out of sync from each other.


It was definitely a real pain to ensure the whole stack was deterministic. Since we only targeted ps3 and xbox360 it was easier to ensure determinism. All in all, I wouldn’t recommend it.


Yeah, unless you have a entity count that exceeds your available bandwidth you're usually better off with a dead-reckoning system.

That also has the advantage of being able to "fake" events with effects until the server can resolve them meaning a latent connection can 'feel' faster.

Kudos to you for shipping a lockstep solution, we could never flush out the determinism bugs on our titles so we always just used dead-reckoning unless it was some dumb turn based game.


Isn't floating point rounding behaviour also deterministic?


Depends on the mode the FPU is put into, fast or precise. If you want to have some fun, start a multiplayer game of AOE and switch the FPU mode from fast to precise. Doesn't take long to get out of sync, even for a basic game.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: