Hi,
I tried search, but did not seem to find a precise answer. So: I have netcode with an authoritative server running physics with Bullet, and recently I've also started doing physics prediction on the client side. I wonder, what are the per-step dynamically changing variables needed to exactly sync a btRigidBody's state from server to client, so that its simulation will proceed in the same manner on both machines? Transform (position & rotation), linear velocity & angular velocity are obvious, as well as applying any forces/impulses dictated by the game logic exactly in the same way, but what else?
(for simplicity, we can at first assume the btRigidBody only interacts with static objects)
One thing I noticed which Bullet doesn't expose by default, and is likely important for proper syncing, is the whole btDynamicsWorld's interpolation time accumulator, which decides when to run the next step.That's of course trivial to make public.