Panda Bullet

I am not aware of any random numbers used within the Bullet source code. But I can not tell for sure, since I just use the Bullet library and don’t know it’s sources by heart. So yes, Bullet can be deterministic.

Here are a few tips to get as much determinism as possible (not specific to Bullet, but any physics engine we support):
1.) The biggest problem with determinism is that you have to completely decouple the physics simulation from the game loop.
2.) Fixed timesteps are mandatory for determinism!
3.) Never use the computers time - not even if you have a secure time server (e.g. IEEE 1588 Precise Time Protocol) in your network. In other words: feed only constants to BulletWorld.doPhysics, and never variables.
4.) Don’t sync between clients using a timestamp - use the integral count of the simulation frame.

All the samples I have written so far do not care about determinism or decoupling physics from framerate. I even do not bother to some time slip because of user input handling. It’s probably a question of how much determinism you really need.