I had been working away on the new weapons and effects and got round to testing everything on the Xbox. I do this from time to time because the Xbox does not perform in the same way as the PC does. Much to my surprise the performance was a disaster on the Xbox!
That was late yesterday and I was going out in the evening so I left it wondering how long it would take to find whatever it was I had done to cause a frame rate of just 9 frames per second! It was perfect on the PC but the Xbox was unplayable!
I had thoughts of the level being too complicated and having to come up with some clever code to cull more efficiently, or that the texture files were too large, so I would have to reduce the quality. I had quickly ruled out the particle effects because although they were pretty the code, quantity and textures sizes were unchanged to effects I had been using for years and the performance graphs did not change when they were on the screen.
I've been working in I.T. long enough to know that whatever you last changed is the most likely cause for whatever problem you are now investigating. This morning I therefore thought through all the changes since the last time I had successfully tested on the Xbox...
I thought it was a fairly easy non-performance affecting change but I have completely re-written the Audio Manager to change from using XACT to using the SoundEffect classes.
Some quick commenting out and I very rapidly confirmed that somewhere in my conversion I had made a mistake. To cut an hours searching down I found it.
Just one very short line of code:
nextSong = "";
I had an endless loop that would start playing the next waiting piece of background music every frame because I had not cleared the variable once it started playing!
I am a lot happier now and I can go back to creating assets and effects for the game.