Jump to content
  • Advertisement
Sign in to follow this  
arew264

Reproducible Behavior

This topic is 3903 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I've just been reading the article "Instant Replay : Building a Game Engine with Reproducible Behavior". In that article, the author wants to basically create a deterministic game state, and to do so, he basically locks the frame rate down. This is due to the fact that he wants to avoid integration inaccuracies that create minute differences in the game state. I can see that as a solution, but what if, instead of locking the frame rate, one simply recorded/propagated the state of an entity whenever it's input information changed? In the replay scenario he uses, interpolation and exponential smoothing can now be used to ensure the game state stays on track, and in a networked scenario, tracking important moves can insure that the client stays in sync with the server while still achieving lower bandwidth than just broadcasting the game state perpetually. At the cost of having to process slightly more data, the framerate (at least for the game state) can be unlocked. Is there some gaping hole here? Is this feasible? I think this is similar to what Glen Gaffer was writing about with his "important move system".

Share this post


Link to post
Share on other sites
Advertisement
Why not just run your logic at fixed time-step, and update everything else asynchronously with interpolation as needed?

Also, read this. It may change your opinion on what "slightly more data" means. For example, 1500 archers and arrows, moving every step. Can you really send this much data, 20-60 times per second, when you could sent only mouse click coordinates 5 times a second?

Share this post


Link to post
Share on other sites
Well, after reading that, it seems that a client-server architecture simplifies life a lot.
I do think that it would be better to just have a server running the simulation at a set timestep and the clients interpolating within that simulation. When you have one authoritative simulation, everything seems to get a lot simpler.

Share this post


Link to post
Share on other sites
Okay, actually, I can see the point of the article, you want the game state to always be the same given the same inputs, so you lock the frame rate... of the game state.
The renderer can interpolate between frames, making life quite simple.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!