Probably the most anticipated feature in the new release is support for multiplayer games. Using the Xbox LIVE and Games for Windows - LIVE services, multiplayer games can operate across a local area network or across the Internet. The coolest feature here is that Windows games and Xbox 360 games can connect and play together.
This was done to help debugging since requiring two computers or two Xbox 360 consoles didn’t seem like a good idea. You can run two instances of Visual Studio, one each for the Windows game and the Xbox 360 game and debug both at the same time!
All of the LIVE gamer services are available on both platforms, and games can use nearly all of the features of LIVE with the exception of leaderboards, achievements, and rich presence. Achievements aren’t supported for the simple (and probably obvious) reason that the very first XNA Creators Club game with achievements would be a title that simply added points to your gamer score over time. (ProgressQuest for the LIVE gamer score, w00t!)
Leaderboards and rich presence are possible but will require some additional work to implement. We’re not sure when we’ll be able to expose these features, but it is a goal to have community games with leaderboards and rich presence.
The API is simple and easy to use. At Gamefest this year, we demonstrated writing a networked multiplayer game during a presentation in just about 40 minutes! In a nutshell, you create a NetworkSession class with a set of parameters defining things like local or Internet, and how many players can play. You can also design the game to scan for available sessions to join. We return well-ordered lists of players to help with matchmaking.
We have simple send and receive methods in addition to well-defined PacketReader and PacketWriter classes to manage traffic coming and going from your game. For players who have headsets, we also added support for voice, which you can manage so that both the team chat channels and global channels work with your game. The API sends notifications when players are lost and supports host migration if the host drops out. We also added support for reliable UDP and guaranteed messages across the network.
While the APIs will help you get networked sessions up and running quickly, the real challenge in multiplayer networked gaming is figuring how to implement the actual gameplay so that the game can run across a network with latency issues, bandwidth constraints, and potential packet-loss. Our Developer Education team has stepped up here and is providing, on launch day, new samples and starter kit games: simple, working examples of networked multiplayer games. These will demonstrate how to use the API, but more importantly, start you thinking about how to architect your game data to support network gaming.
Besides adding all of these features, the team has been busy fixing bugs and adding numerous small improvements to the API, most of which are based on your feedback in our community forums. We now support multiple render targets on both Windows and Xbox 360. We have a brand new UI for the Microsoft Cross-Platform Audio Creation Tool (XACT) on Windows, which makes authoring your sound content much easier than before.
There is a new Remote Performance Monitor (RPM) tool for Xbox 360, which can show you which allocations are being garbage collected so you can refactor those areas to avoid the collections if they are hurting performance. We also support new input devices such as guitars and flight sticks. There are a lot more of these kinds of things to name, but it’s more fun just to grab the bits and start coding!
So what are you waiting for? Go download and get started! As always, please give us feedback on where we can improve, what you like, what you don’t like, and what you would like to see going forward.
The XNA Community Game Platform team loves building this stuff, but it is you in the community and the games you build that really get us excited about coming to work every day! We’re all avid gamers on the team, and we’ve lost hundreds of hours playing the great games you’ve built so far. I look forward to having to take controllers out of people’s hands to stop them from playing the next wave of games you make using XNA Game Studio 2.0!
Frank Savage, Development Manager