I’m currently working on a physics-driven puzzle game and trying to set up a custom replay system to prevent cheating without confirmation by a human. (i.e. game logic should be filtering the cheated sessions on its own.)
What I planned was simple. Implement fixed physics timestep, record a player’s action(which actor he or she chose, which got activated, etc) and then run a simulation on the server to check if the gameplay result(score, time, etc) is legit.
I’ve finished physics part and recording part, but while I was trying to simulate the original gameplay, I noticed I can’t catch the exact timing to fire an event.
For example, during the gameplay, a certain action A gets recorded with the time indicating “2.09698112853…”
When I execute the recorded event during the simulation, I can get close to that timing(“2.09300985…”) but never the same value. And surprisingly that little difference(usually less than <.002) changes behavior of a physics actor much more than I expected, resulting in a different result.
I strongly believe if only I can find a way to execute events exactly when it should, the system would work as I intended.
Is there any way to accomplish this?
So far I’ve tried timer(looped by .00001 second), tick(frame interval chopped up to 100000+ iterations), delay node. None of them worked.