| ▲ | avaer a day ago | |
> Why 'nasty'? I agree it's a problem to solve, but you just use a fixed-point math library and it's fine. Assuming the agent didn't put in a native nondeterministic trig function deep in the code instead of using the library one, it's an easy mistake to make and hard to debug in a big game. It won't even show unless you have a robust CI matrix. It can indeed be "nasty" to maintain. Also determinism might work for simulation state, but shader/gfx differences across platforms can be really nasty and a library can't save you. Not even something like WebGPU. Also if you're doing any sort residency streaming dependent on GPU timings trying to make that deterministic will be a nightmare. | ||
| ▲ | mypalmike a day ago | parent | next [-] | |
Unless the GPU output is feeding back into the game loop simulation, there’s no nightmare. I’ve worked on games with intentional determinism, and it’s a very valuable tool. A playtester can hand a dev a recording of the game inputs (including clock) for whatever bug they encountered, and the dev can fast forward to the exact point and repro it 100%. The amount of time saved chasing down difficult bugs is enormous. | ||
| ▲ | rrradical a day ago | parent | prev [-] | |
But that CI is very easy to setup. Take a given start point; feed a set of inputs; compute a checksum on the resulting state. Check that the checksum matches on different platforms. And if your language is good you can parameterize your logic on a particular numeric type, so that a particular fixed point implementation is consistently used | ||