Commercial (3D) game development is hard -- really hard.  As someone on my team said, the time to a first playable level is a momentous occasion in any game development cycle.  The trick here is to get to the first playable level as quickly as possible and then get the project fully funded – few games ever make it past this stage. If a game studio is fortunate to make it past this stage, additional features are added, refined, and stabilized (hopefully) until the game ships.  As with any commercial venture, market reach is critical -- the availability of a commercial game on multiple platforms is only a good thing.

 

With the XNA Framework, lowering costs and time to market is a key problem that we are trying to solve. Two goals on solving this problem are:

  • Cross-platform development of games across Windows and Xbox 360
  • Increase game developer productivity -- We want game developers to focus on game play mechanics not hardware mechanics

We feel that the first step to addressing both those problems is by enabling the CLR on the Xbox 360 and bringing a game framework that is API compatible across Xbox 360 and Windows.

 

So what does that really mean?

 

For one, Tom Miller is no longer an Army of One.  He has a whole team (dev, test, PM) now supporting his lifelong goal of enabling game development using managed code J

 

Second, we are folding MDX2 into the XNA Framework.  MDX2 is going to be a critical component for what will be our graphics layer.  We equate the graphics layer as our hardware layer.  Today, MDX2 is Windows only and it is built on top of D3D9, D3DX, etc.

Any developer that has written games for both Xbox and Windows knows that there are quite a few differences between the API’s.  While we definitely won’t be able to get a 100% API compatibility between the two platforms, we are trying our best to reduce the number of API compatibility issues.

 

As a result of us trying to reduce the compatibility issues between the platforms we have API’s that fall into the following categories:

 

1) API’s that are replaced with newer cross-platform counterparts

 

DirectSound gets replaced with XACT and DirectInput gets replaced with XInput. 

At this point some of the questions you may be thinking:

·         What if I need lower-level audio API support?

·         What if I want to build by own audio engine?

·         What happens to mouse and keyboard support on Windows?

·         How will I support alternative input devices that aren’t exposed by XInput today?

 One way to support those scenarios in managed code would be to use MDX 1.1.  We plan on supporting MDX 1.1 for quite a while, especially since customers have shipped applications using MDX 1.1. 

 

Looking to the future, we (an entire team and not just Tom J) are actively thinking on how we might solve these scenarios.  More importantly, we want to hear from you our customer on what type of gaming scenarios you would like to see enabled cross-platform or even platform specific.  Of course, we can’t guarantee we’ll be able to hit every scenario in our first release of the XNA Framework but we’d like to do our best to minimize any disruption and ensure that communication is two-way.

 

2) API’s that are eliminated because no cross-platform counterpart exists

 

DxDiag gets cut.  There is no real equivalent on Xbox 360 today.  MDX1.1 will continue to support a managed wrapper for DxDiag.  Do you have any concerns here?  If so, let us know.

 

3) API’s that are “evolved” into various other XNA Framework API’s

 

D3DX.  Ah what happens to D3DX?  This is a toughie.  D3DX contains useful functionality that in a strict .NET namespace way is all over the place.  To complicate matters further, a lot of functionality on D3DX doesn’t exist on the Xbox 360 today.  Our crack team of developers, testers and program managers have some idea on how some of this functionality needs to evolve but frankly there are a lot of customer scenarios that we probably don’t know about.  This is one place where we definitely need lots of customer feedback. 

 

Overall, the XNA team is super excited on what we are planning on delivering via the XNA Framework.  We want to reinforce that the commitments Microsoft is making to managed game programming with the XNA Framework will go far beyond the original scope of what Managed DirectX was meant to address, and we strongly believe that this will be a very positive move for the game industry as a whole.

 

Finally, some of you may be thinking,

 

“I write REAL apps.  I don’t write silly games.  In fact, my software has saved entire countries in Europe as well as head of states.  How does the XNA Framework help me and what is Microsoft going to do to support my apps going forward?”

 

We’d like to hear from customers using MDX that aren’t building games.  This is another area that Microsoft as a whole is actively trying to solve. 

 

If your attending GDC 2006 stop by the Microsoft booth (#416) on the show floor and come meet us!. We’ll have kiosks to demo some games running on Windows and an Xbox 360 development kit.  You can also learn about XNA Build as well.

 

If you have comments, concerns or questions that you may be uncomfortable airing on a public forum, please email us at xna@microsoft.com.

 

Please check out my team member's blogs for more information about the XNA Framework, XNA Build and XNA Studio.

Michael Klucher http://blogs.msdn.com/mklucher/

Tom Miller http://blogs.msdn.com/tmiller/