60 FPS Nirvana…. finally

Finally overcame my performance bottle necks this afternoon, I always suspected I wasn’t pushing the Xbox’s GPU that hard with my poly count or texture usage, today I got 4 player split screen running at a solid 60 frames per second. I even did some stress testing an added 10 times the polys (32,000 faces) to the level decoration on the Egypt map and it still ran a 60 FPS.

I adding 3 avatar players dropped 5 FPS, so I think that must be about the limit, still even half that amount is more extra polys than I’ll ever have time to model up in the foreseeable future.

Poos-4

The solution proved to be a combination of GPU batch count and CPU load, which as I found out is directly related. Using the Slimtune profiler I identified a few interesting high frequency calls that quickly yielded considerable decreases in CPU load.

Interestingly setting the pitch variable in an XACT cue was quite an expensive operation every frame so I cut them back to every 10 frames for the engine sounds on the karts.

Another expensive call turned out to be nulling values in the large collision detection arrays, which I didn’t think would cost anything, maybe it was the loops themselves but leaving the references alone (and potentially some garbage in memory) and just resetting the counter was a lot faster.

Cutting down the batch count was mostly done by implementing mesh instancing, which worked really well in my game seeing there’s a reasonably high count the same objects.

A fair bit of work in the end but this extra performance will definitely give me plenty of breathing room to finish it off properly.

3 thoughts on “60 FPS Nirvana…. finally

  1. Pete Reply

    Didn’t think of that, good pickup, I’m going to re-do those messages as speech bubbles so I’ll correct it then

Leave a Reply

Your email address will not be published. Required fields are marked *