Unfortunately with Xbox Live Indie Games, Microsoft has not given developers access to the leaderboards that are available with Xbox Live Arcade and AAA games. Due to this, developers have had to come up with their own pseudo leaderboards, more commonly called global scores (among other names). To my knowledge, the first implementation of this was done by JWatte and can be found here and more recently updated to a version 2, here.
Version 1 of the above was the first implementation that we went with, but found it to be a bit temperamental and ended up writing our own very simple version, based on the logic of JWattes code.
Everything was going well with our version of the highscores and it was working brilliantly until XBLIG’s had to be written in XNA 4.0. This is when the wheels started falling off. With our first release of Unstoppable Chopper we had the newly converted to XNA 4.0 highscore component running and upon going live, we discovered that score sharing caused extreme performance issues, to the point that some gamers were complaining that they couldn’t even play the game. Whilst this was partially our fault as we had only tested the game with three separate gamers sharing scores and here we had hundreds, there was clearly some form of change between XNA3.1 & XNA4.0.
After discovering this, we discovered that it was saving to the storage device that was causing some of the performance issue, so we moved the saving to take place on the menu. Whilst this helped the issue, there were still further performance issues and further investigations revealed this to be when the network connection was terminated. As we wanted to get this issue sorted as quickly as possible, the easier solution was to only allow score sharing on the menus, but this is obviously a less than ideal situation as the majority of time a gamer will spend in a game will actually be playing the game and not hanging out on the menu, so this would leave a very small window for the scores to be shared between gamers. To solve this, we changed the code to run on a completely different thread and this further increased the performance of the game.
We are now left with a mere stutter when transferring scores and are due to test this soon with multiple gamers which will hopefully yield positive results. There are also a few remaining adjustments that we are hoping to resolve by implementing some changes which have been suggested to us by our friends over at Milkstone Studios.