Simple question about physics features

Is it possible to process the physics world at intervals of varying length and will it always produce the same outcome. To elaborate…



On the server side i want to process only every 20th tick for physics as I do not need to render anything there nor do not need the same granularity as on the client side. I can use this broad-stroke calculation to come up with a final state. The Client will start calculation from the same dataset but with a higher precision. Will it reach the same result and can I validate it against the server version of the result?



Something like

update(1000) - updates the physics world 1 sec into the future

update(50) - updates the world 50ms into the future



Thanks

I don't believe you will obtain the same results. This can most easily be observed in springs in the physics simulation, if you change the update granularity the spring changes it behavior very noticeably.

hm… that sucks… any ideas from anyone on a way achieving what I described. Hackish approaches are welcome also :slight_smile:

update(1000) yields the same results like e.g. 10 times update(100).



But if we're talking about ODE impl here, the result is non-deterministic. This means you could run the same simulation (same starting points etc.) twice and get different results. You weren't asking about reproducibility, though, right?

nymon said:

I don't believe you will obtain the same results. This can most easily be observed in springs in the physics simulation, if you change the update granularity the spring changes it behavior very noticeably.

The effect with the springs is caused by changed accuracy not by different calls to update() (like framerate!).
irrisor said:

update(1000) yields the same results like e.g. 10 times update(100).

But if we're talking about ODE impl here, the result is non-deterministic. This means you could run the same simulation (same starting points etc.) twice and get different results. You weren't asking about reproducibility, though, right?


Hm.. that's better. Yes I am talking about reproducibility also. Is there a way to override the seed or whatever, so that the results would be deterministic? Or is it a math issue that cannot be overcome with ODE?

See Game Creator: ODE Determinism

Thanks Irrisor, that was in interesting read. After reading a bit more on ODE homepage and some more threads on this forum, I am now cautiously optimistic about my problem. However I am still slightly concerned about the problems mentioned here in ODE WiKi.



I guess I will just have to try out these advices offered there… and start inventing new ones 

irrisor said:

update(1000) yields the same results like e.g. 10 times update(100).

But if we're talking about ODE impl here, the result is non-deterministic.


Any other implementation that I can use ? Or ODE is the best ?

ODE is the most complete impl. All others are just for playing with other engines currently.