I want to start off developing for my Xbox 360, and I've heard of the XNA framework that can target both the PC and Xbox. This sounds like an attractive option since my clients can use the game/app on normal computers as well.
However I'm very new to the Xbox scene. Is XNA only for hobbyist development, and is it not recommended for semi-professional or corporate application development? Does XNA lack the capabilities of a C++ developed solution, or dos it badly reduce performance of a game/app running on the Xbox?
Is it possible to target the Xbox using C#, and without XNA? What are the advantages?
Low-level programming would be in C++ directly working with DirectX. What are the advantages?
Answer
The short answer: Yes.
XNA is just a tool. It is suitable for all but the most processor- and graphically-intensive games. If you are considering XNA for an Xbox 360 game, here's what you will miss out on:
- Access to the SIMD/Vector unit for doing really, really fast CPU floating point maths
- Ability to use native language code that will probably be a little bit faster than C#
- Ability to be a little bit lazier with how you allocate memory
- XBLIG games have access to only 4 of the 6 cores (but we still get all 3 CPUs, and they're not full cores either, so we don't miss out on much) - not sure if this applies to non-XBLIG XNA games
- Full DirectX access for doing really obscure graphical trickery
There might be more - this is off the top of my head.
(Speculation: if you are a professional developer (as in: have a devkit), I think that you can use XNA with native code, same as P/Invoke on Windows. Best of both worlds. You'd have to ask Microsoft. See also XDK.)
The bottom line is that an XNA game is almost as fast as a native game and can do almost as much stuff. I'd suggest you use it unless you find a compelling reason not to.
I do not know if there is any kind of managed DirectX for the 360. Perhaps SlimDX is a good place to start.
No comments:
Post a Comment