A solver is a free-standing function that, given a logic step input and pre/post solve callbacks,
instantiates a logic step on the stack and moves the cosmos solvable forward in time.

Edit me


The only currently available solver is called the standard solver.
Once we introduce more solvers, they will be put into a separate src/game/solvers folder.
This could also be a good place to start writing a game mod.

It initializes all message queues on TLS and clears them when the step finishes, to ensure no messages persist beyond duration of the step.
If some messages were to linger between two consecutive steps, one would need to save them to disk or even synchronize through the network to ensure determinism, effectively making messages another case of significant state.
It makes much more sense to just design the solver so that all posted messages are handled in the same simulation step.

Pre solve

The solve

It calls all stateless systems to effectively move the game forward in time by a specified delta time.

Post solve