The XNA Framework runs on more platforms than people tend to
realize. There is Xbox 360, and Zune, and Zune HD, and Windows with an
NVidia DX9 GPU, and Windows with an AMD DX10 GPU, and Windows with an
integrated Intel GPU, and...
I found it interesting but not
surprising that the comments on my previous post focused on differences between Windows
and Xbox, ignoring the possible variations from one Windows machine to
another.
In the years we have been working on XNA Game Studio,
we learned several things about making portable APIs:
- It
is impossible to ever make things 100% identical across different
platforms
- But there is still great value in making the
attempt
- It is surprising how much benefit can be gained
from even small increases in consistency
- This is an ongoing
journey
Portability is important for several reasons:
- The obvious: "I want to make a game that runs on more
than one platform". This is an interesting goal, but in some ways I
think actually the least important reason for having a portable API.
Thing is, only a handful of games really make sense to forcibly
transplant in such a manner. When platforms have different form factors,
screen sizes, and input mechanisms, most games need to be tuned
somewhat differently per platform in order to provide a quality
experience. Which brings us to...
- "I
want to quickly and easily port my game from one platform to another."
- "I want to reuse code from my previous
game, which was on a different platform from my current project".
Related to this: reusing code from samples, tutorials, etc.
- "I want to learn skills on one platform, then apply
that knowledge on different platforms". Related: it would be sweet
if my hard-won 1337 skillz did not become obsolete every time a new
platform shows up!
- "I'm making a Zune
game, but want to iterate and test using a PC version of the same
project". This is important for developer productivity. XNA Game
Studio has great support for deploying and debugging on remote devices,
but that is always going to be slower than just running locally on your
development PC. The faster a programmer can iterate, the more productive
they can be. Plus this lets you use Windows tools such as CLR Profiler and PIX.
- "I want to
ship my game on Windows". Xbox LIVE Indie Game developers don't
have to worry about this, but as anyone who has shipped a Windows game
can tell you, testing the matrix of varying hardware capabilities is not
exactly fun!
Some of these goals are easier to achieve
than others, but I think they are all worth striving toward.