Due to lots of reasons a physics simulation can be non-deterministic, or in other words the simulation results will be different with the same starting conditions (*). In multiplatform networked games like massive multiplayer online games (MMO) this has to be dealt with.
0) How do you deal with multiplatform networking physics and non-determinism ? Do networking-clients just mis-predict the physics state over time, and the server keeps everything in sync by correcting the clients ?
1) What about save-games ? Are they just non-portable ?
Any practical solutions, ideas, papers or links on this topic ?
(*) On one platform it is possible to guarantee deterministic behaviour, although when using debug/release builds some care must be taken, and use of _controlfp() might be necessary to force 24 bit mantissa, so accuracy on both builds are the same.
Non-Determinism in Multiplatform Networking Physics
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
-
- Posts: 316
- Joined: Fri Jul 01, 2005 5:29 am
- Location: Irvine
Determinism is only important for physical objects that affect gameplay. In a multiplayer setting, this may be a small subset of the objects in the world. In an online FPS, one of the biggest problem is cover: was the opponent guarded by that crate or not? I'm guessing it would piss off a player if they got shot when they thought they were safe.
On the other hand, things like ragdolls and explosions don't need to be deterministic. Also, how important is determinism for other types of game play, such as co-op?
BTW, debug/release builds will almost always have a different outcome because the numerical operations happen in a different order, leading to different round off errors.
On the other hand, things like ragdolls and explosions don't need to be deterministic. Also, how important is determinism for other types of game play, such as co-op?
BTW, debug/release builds will almost always have a different outcome because the numerical operations happen in a different order, leading to different round off errors.
-
- Posts: 1
- Joined: Thu Sep 08, 2005 11:34 am
Yes,it's a problem!
Recently , we do a Real Time Strategy Game (Tank Online), it has NPCs ,and now i solve the problem is that i detect the collision and then sending packets to Client,i just send *START* and *STOP* instructions,but when i test it, the Server overload,so i think i will move the NPCs processing from server to client,but how to make NPCs in different client same, it's a big problem!
Do u have any suggestion? i'm glad to hear it!
Thank u in advance!
Recently , we do a Real Time Strategy Game (Tank Online), it has NPCs ,and now i solve the problem is that i detect the collision and then sending packets to Client,i just send *START* and *STOP* instructions,but when i test it, the Server overload,so i think i will move the NPCs processing from server to client,but how to make NPCs in different client same, it's a big problem!
Do u have any suggestion? i'm glad to hear it!
Thank u in advance!