no no i don't use 40.000 types with collisions lol
.... just 4....
I was referring to your other post :)
Anyway, that game is looking pretty sweet. Good luck with it.
I can tell what I've learned about Blitz and it's collisions and how I optimized my games.
1. Like I stated above for nearly all objects we render a standard object (even if it's just a few hundred polys) and then we attach invisible (EntityAlpha(entity,0)) collision approxiamations to them. Even on landscapes we can cut our collisions and picks in half by doing this. On small objects we'll cut polys from 500 to 6 - 50 polys.
2. Put your linepicks and camerapicks on a timer. Most of the time you don't need to pick every frame and I've made games go from unplayable to silky smooth by only picking every 50 millisecs(). Also, try not to have too much pickable geometry. A pick is basically a collision, so if you're using EntityVisible() or anything like that you're checking for collisions basically. I'm assuming that you're using 10 monsters and they're probably using linepicks to figure out where they're going.
3. Keep a good balance between surfaces and polycounts. This has been mentioned a bazillion times. It's not good to have a single surface million polygon object, and it's also not good to have a million surfaces even if most are being occluded. Design your levels to strike a balance where you can occlude polys behind the camera but not use so many surfaces that the game crawls.
There's so much depth to optimization that I couldn't possibly cover it all, and in fact I don't know it all :) Hopefully, the above will help you out a little.