If my assumptions in the first post are correct, this should be easy to reproduce. Originally posted by BlueRaja:It's not a specific stage, it seems to just be a function of how much stuff is on the screen.Īnd yes, of the times we've played so far, it starts happening eventually in all of them. Most developers are shocked to learn that they are non-determinisitic. Make sure you're not using floating-point numbers in the engine code.Either TCP, or UDP with confirmation/resend logic. Make sure you're using a transport-layer protocol with guaranteed delivery.Make sure if one client's fixed-step engine frames slow down, the other client has a way to know that and wait for him to catch up.Make sure both clients use the same PRNG seed, and are guaranteed to always call it for the same things in the same order.The outcome must have nothing to do with the user's framerate. Make sure you're using fixed-step engine calculations.If you are already doing this, you need to snuff out sources of non-determinism: This is how all modern RTS's like Starcraft 1+2 work. You wait until both players know which commands will be executed and when, then execute them on both machines simultaneously. When someone executes a command (playing a tower, hitting play/fast-foward, etc), don't execute it immediately, but instead queue it to be done at some point in the future (something like ~250ms). The main idea is to create a Command Queue. As a developer with lots of networking experience, I may be able to help. We just played for the first time yesterday, so I don't know if this happened prior to 2.16. In one game, every balloon was popped on my screen, but then we lost because on his screen a bunch of balloons got through! During the later stages, sometimes everything will be popped on my screen, but on my partner's screen there are still a ton of balloons (or vice-versa - it doesn't matter who is host).
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |