I’ve been reading the Darkstar documentation. It appears to use a common transactional model, where transactions are intended to cover only a small number of objects.
However, most physics solvers available today actually throw all world objects into a big matrix, runs an LCP solver on that matrix, and out comes the new positions/velocities/orientations of the objects.
A naive implementation of this mechanism as GLOs would have a world stepper that acquires (using get()) all the objects, throw them into the solver, writes the output to the objects, and then commits. This wouldn’t scale all that well. While you can partition the solver into separate “islands” that can be solved separately, knowing which island an object belongs to is part of the collision and interaction connectivity graph, which in turn would be a single large object with references to everything.
Is there a better solution to this problem within the SGS?
Also, modern physics games step at between 30 and 100 steps per second; would the object store keep up with committing the entire world at that rate? Does it do write combining, and if so, is the write combining ordered per object or store-wide?