Hey all,I’ve been working on a game for a while (my YouTube channel: http://www.youtube.com/user/TheNinjaDweeb), and I have come across a hardware speed bump. My game has a quite large scene (really, all of them are, including the menu) and it kills my computer. The framerate drops to 5 (five) fps nearly all the time (it’s supposed to be 30).
I have tried to change the max texture size in user preferences; I can manage 512 x 512 but no less due to the need for detail. I have also attempted to reduce the amount of physics in the game by making nearly everything “no collision” and used a one-piece bounds mesh that becomes static. Basically, physics are at a minimum. The Logic, I admit, is quite messy. I did, however, remove ALL of the "0"pulse sensors that serve no purpose, and I used python instead or bricks whenever I could (I am not much of a programmer). Animations kill the hardware, too. I have a quite high poly model that’s being animated that is also taking 90% of the animation profile. If you watch a video on my channel you can see the massive drop in FPS. The first video doesn’t really show it much, though. Also, the screen cap program contributes to the lack of CPU performance.
A blend file could be handy for us to dig through to give you more concrete answers. Otherwise, we’ll just toss guesses at you. Also, the time in ms for each section would be nice in addition to the percentage.
Now, time for some guess work. First off, seeing the animations and rasterizer so high leads me to believe that skinned mesh animations are possibly your bottleneck. The number of bones of an armature will primarily affect the animation time (pose updates) while the number of vertexes will primarily affect rasterizer time (updating the vertex positions to the new pose). Your skeleton should probably have less than 30 bones with your mesh having less than 10k polys. Of course, the lower the better in terms of performance. You could also try the BGE vertex deformer (check the armature options). It can provide around a 20% performance boost, but it isn’t always as accurate as the Blender one (and also tends to be buggier). Also, try checking the “Restrict Animation Updates” in the render properties (system panel).
I used the “restrict animation update” checkbox and the animation CPU pct went down 60%. But when I tried to use the BGE armature deformer, the mesh gets all messed up.
How many mutants in one scene? What are they doing when the player can’t see them? Its best to make enemies that can’t be seen (as they are in another room for example) invisible and deactivate their animations. That will help. But generally you need some way of not rendering stuff that can’t be seen. Even though most of the level is hidden from the player it is still being rendered. I’d recommend using rays to check what is behind a wall and then making it invisible and deactivating any animations.