Welcome to this first feature as part of the Microsoft XNA portal at Gamasutra. XNA is Microsoft's collection of software and services designed to assist all types of developers in creating games for an expanding set of platforms. That definition covers a lot of ground, but these days, so does XNA itself.
XNA was first announced at GDC 2004 in San Jose, CA. J Allard introduced XNA as an initiative to create a common set of development tools across Xbox and Windows. The announcement was accompanied by a great deal of excitement and some impressive demos.
Meanwhile, the .NET Compact Framework (NetCF) team had succeeded in porting the NetCF to the Xbox 360 console. Having the NetCF on Xbox 360 opened up the possibility of managed-code and specifically community-built games on the console due to the protected sandbox environment the console provided.
When the XNA Team found out about the NetCF port, they saw that managed-code could radically simplify the game-development process and make it accessible to people who otherwise would never be able to develop viable games in today's market. XNA was no longer only about solving the common issues faced by game developers. XNA was about redefining who could be a game developer.
In Fall of 2006, the team released XNA Game Studio Express 1.0. The response from the community was tremendous; we had hit on something big. At the time of writing, we’ve had over 750,000 downloads of XNA Game Studio Express and the number continues to rise steadily. An even more pleasant surprise was the response from the academic world: students are hungry to learn game development. There are now more than 300 universities worldwide that incorporate XNA Game Studio Express in their curricula.
Because of the success of XNA Game Studio Express, many people now consider XNA to be synonymous with managed-code and community game development. However, the greater part of XNA is actually focused on ensuring that professional developers have the very best support and most productive development tools to create amazing native-code games for Xbox and Windows. The folks in the XNA group create the Xbox 360 Development Kit and the DirectX SDK, which include tools like PIX, and the C++ and HLSL compilers for Xbox.
Just like the XNA Game Studio team, this side of XNA is passionate about enabling developers and justifiably proud that their technologies and tools are far-and-away the leading choice for professional game developers. This work is as much a part of XNA as is managed-code; XNA encompasses the entire continuum of game development: platforms (Windows, Xbox 360, mobile), languages (managed-code, native-code), and developers (students, hobbyists, independents, and professionals).
This site is about XNA, all of XNA. We'll bring you articles that are focused entirely on native-code development techniques, written by the XNA team members who assist in the development of AAA titles, such as Halo 3 and Gears of War. You can also expect to see articles that discuss Xbox 360 architecture and development considerations. And of course, we'll have lots of information about XNA Game Studio as well.
Speaking of XNA Game Studio, we have just released XNA Game Studio 2.0. This is a big step forward for us in democratizing the game development process. With XNA Game Studio 1.0, we opened up the console to the community. The 2.0 release sees us open up the LIVE service on both Xbox and Windows, and early next year we will have some big news on the third and final step toward truly empowering the community. This month, Frank Savage, development manager for XNA Game Studio, will discuss what’s new in XNA Game Studio 2.0 and how we’ve evolved the product to suit the needs of professional developers as well as hobbyists. Take it away, Frank.
Chris Satchell, General Manager
A little over two years ago, the .NET Compact Framework (NetCF) team demoed an implementation of the NetCF running a 3D game on an Xbox 360 console. They also showed that same game with the same code recompiled and running on a Windows PC. It was on this day that XNA Game Studio was conceived. Last year, we released the first version, XNA Game Studio Express, a product that gave hobbyist and student developers the opportunity to run their own games on both Windows and Xbox 360.
Since that first release, over 750,000 users have downloaded XNA Game Studio Express. We’ve seen hundreds of games created and submitted to the Dream-Build-Play competition, witnessed hobbyists become new stars in the game development world, and watched as hundreds of colleges and universities adopted XNA Game Studio Express as a better way to teach game development.
Never satisfied to stand on past success, the XNA Community Game Platform team is proud to announce the release of XNA Game Studio 2.0! This article will talk in-depth about the feature set for this new version.
Side by Side…
First and foremost, XNA Game Studio 2.0 sits side by side with our earlier releases. You don’t need to uninstall XNA Game Studio Express in order to install XNA Game Studio 2.0; they can coexist inside Visual C# Express. This is critically important to ensure an easy upgrade path to the new version. While the vast majority of APIs have not changed, there is new functionality, and some of it will break existing code.
We are also supplying an Upgrade Wizard to migrate your existing XNA Game Studio Express projects to XNA Game Studio 2.0 projects. The wizard is available for free from the XNA Creators Club Online website. While it won’t fix the API differences, it will convert all of the Visual Studio 2005 projects to the new formats so they will load into XNA Game Studio 2.0.
On the Xbox 360 console, both the original XNA Game Launcher and the new XNA Game Connect screens are available for development. XNA Game Launcher lets you keep debugging and deploying your games to Xbox 360 from XNA Game Studio Express. The new XNA Game Studio Connect screen is a streamlined version of our existing launcher application for Xbox 360.
All of the functionality needed to set up a new connection to the Windows-based computer is available on this screen, and XNA Game Studio Connect is always listening for debugger/deploy connections, removing the multi-step key exchange process that existed in the first release.
Installed side-by-side, both XNA Game Studio Express and XNA Game Studio can still deploy games to the Xbox 360 console. The XNA Game Studio 2.0 games now appear as actual games right next to the Xbox LIVE Arcade games you have downloaded. It was one thing to write games for the Xbox 360 and run them on a retail console, but it’s really cool to see your games sitting side by side as peers with Xbox LIVE Arcade games!
XNA Game Studio 2.0 supports the “up-level” versions of Visual Studio 2005. This was the number-one request we received from the community. Visual C# 2005 Express Edition is still available as an option, but now XNA Game Studio 2.0 works with all the other versions of Visual Studio 2005 as well.
In fact, the Setup program will install XNA Game Studio 2.0 into both the Express and the non-Express versions of Visual Studio 2005 automatically. Now all of the functionality available in Visual Studio 2005 is available to XNA Game Studio 2.0, ranging from source control to multithread debugging to third-party add-ons.
The XNA Game Studio 2.0 Content Pipeline has numerous improvements as well. First, content now resides in its own project inside Visual Studio 2005. This allows you to set the references to the Content Pipeline DLLs specific to your content. If you have created your own Content Pipeline DLLs, these references can be set using the familiar references dialog box instead of having to set them in an unrelated project properties screen. We have included a new project template for C# that sets up everything you need to create your own Content Pipeline importers and processors, including the initial code and classes.
We’ve also added the capability to pass parameters to Content Pipeline processors. These parameters correspond to individual properties on individual pieces of content. This allows you to create, for example, a single texture format processor and specify the individual formats for each of your textures in the properties associated with the texture content entries in Visual Studio 2005. In XNA Game Studio Express, you would have had to write a separate processor for each texture type you wanted to create and manually changed the processor for each texture in Visual Studio 2005.
Visual Studio 2005 now understands the differences between the Xbox 360 and Windows platforms. We provide a tool to help convert projects between Windows and Xbox 360, and a single solution can now contain both a Windows project and an Xbox 360 project. The platform drop-down menu in Visual Studio 2005 shows you which platform you are currently targeting, which helps remove any ambiguity.
For XNA Game Studio 2.0 projects, there is also a new toolbar element that allows you to manage multiple Xbox 360 consoles for debugging and deployment. The Device Manager shows you all of the Xbox 360 consoles available for debugging or deployment from that Windows computer.
The Device Manager is available outside of Visual Studio 2005 as well; you can run the Device Manager from the Windows Start Menu entry for XNA Game Studio 2.0 and pick the Xbox 360 console to deploy a .ccgame file to without running Visual Studio 2005 at all! It can also resolve key exchanges, making it even easier to associate an Xbox 360 console with a given computer.
All of the above features mentioned for Visual Studio 2005 work in both the Express and “up-level” SKUs.
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.
And a Whole Lot More…
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