Panda Bullet

The default build settings are - afaik - single precision. You can compile with double precision too, but you have to compile both Bullet AND Panda3D wird double precision.

Infinite is a tricky word when dealing with computers. If a floating point value is to be kept in on CPU register then there is a limit for it’s size. On the other hand, when using arbitrary size/precision numbers performance drops to inaceptable values. In other words: out of the box no physics engine supports infinite worlds. By the way: infinite worlds also imply infinite objects! If the number of objects is finite then the size is also finite.

Even more problematic than huge scales are huge differences is size, i. e. very small objects and very large objects in one scene. You should keep rations below a few decades, or you will become unstable results.

I don’t know a real scenario where you need an infinite world. If you have large objects at large distances you could use another scale: maybe 1000 meter per unit, or 1 lightyear if you want (default is 1 meter per unit).

If you can’t scale your world then think about particioning your universe. Attach only those objects to a particion which CAN interact with eachother. If you have a starship fighting in the asteriod belt of one solar system then obviously the next solar system is of no importance.

Besides this non-Bullet specific advide you should have a look at the config variables “bullet-broadphase-algorithm” and “bullet-sap-extents”.