Made a few changes today. Looks like the major slowdown in the 50 or 60 mines was the AI which slows them down. Per-frame forces are dealt with in Game.add_force() and then in Geometry.collide_all(). It's done in Python -- there's a dictionary mapping objects to forces, and the force is applied each collision cycle (10 per frame, currently). I changed the forces of the Damps AI to impulses instead (happen for only one collision frame, but are scaled up to match the timeframe). This should lead to faster but less-accurate mine behavior. This just barely gets me under the wire for 30 FPS, but I'm sure when Carl adds some art, it'll lag again. I'm not really sure what else to do except benchmark a little more and hope I find something clever I can do.
Ethan