I'm making a first-person shooter where you fight giant space bugs!
But it's too slow
The problem is primarily the AI and the physics. I did a simple experiment, recording the framerates with and without each of these two features.
frames per second
I've actually made some changes that make the AI faster since I recorded those data, but you get the gist.
Of course, this only tells me that the physics is taking a lot of my time; it doesn't tell me that I could do it any better than Bullet could, or that I'm even using Bullet as efficiently as I could be. Still, there are a few issues I have with Bullet...
Ragdolls. It's not reflected in the above statistics because I refrained from killing any enemies for that experiment, but just a handful of ragdolls can cause a considerable performance hit. I wish there were a way I could tell Bullet "all of these rigid bodies are parts of a whole, and that whole will never be bigger than some size; thus, you should only check for collisions between the parts of two separate ragdolls if they are near one another" ... But afaik there is no easy way to do it (there are ways, but they aren't easy). Unfortunately, all of my past attempts at implementing ragdoll physics have been miserable failures
Terrain. I don't know if Bullet is putting the triangles of the terrain mesh into some sort of spatial partitioning tree, but it would be profoundly stupid of it not to do so. I recently wrote a system for destructible terrain, and I want to be able to integrate that into this game engine, but the polygon counts this thing produces are much higher than what I have currently. However, the triangle data is already conveniently partitioned into cubic chunks. It would make sense to me to keep track of which physics objects (or game entities) are in which chunks, and consult that to figure out which objects need collision detection... maybe Bullet has something I can use for that, but making it match up with my destructible terrain system may prove difficult.
So yeah, suggestions?