Quote:Original post by elFartoDoes this approach support deterministic simulations? Or would the random order of threaded updates cause the order of actions to be random as well?Quote:Original post by phantomI'm a fan of global state being transactional. Each entity's update process uses the latest global state and is not effected by state changing while it's running (ie. starting a transaction 'freezes' your view of the world). While this doesn't solve all the problem, and introduces live-locks, it seems to work quite well and it neatly side steps synchronisation issues (deadlocks).
As a side note, I'm a fan of the design where you have everything update its logic at once, then run a 2nd 'sync' step.
With the 2-step approach all entities are working from the same 'snapshot' every update, so you can still enforce determinism.
It's not an essential feature, but is required by some games.