Let’s say I have some pathfinding workload that I want done over multiple frames. So I have 12 chunks of entities and I iterate one chunk per frame so everything gets done in 12 frames. My question is that, would the result be deterministic across different platforms/specs? What is the recommend pattern for time splicing workload while preserving determinism in ECS/C# jobs?
At the moment we are guaranteed determinism only when executing on the same platform.
In theory you would have cross platform determinism in the execution order of your ECS systems and scheduled jobs so long as you are not using any floating point math to make decisions on whether you want to execute a system/schedule a job.
In the future the intention is that the Burst compiler will be able to enable floating point determinism across platforms through class/method compilation using attributes.
Deterministic simulation will generally have to assume that the order of chunks is the same across machines.
So in terms of timeslicing processing, you just have to have some index for which chunks to process every frame that index has to be chosen deterministically. Should be very straightforward.