views:

437

answers:

3

This might sound like a stupid question, but who is the target audience for the XNA framework? The following is located on the Microsoft XNA Game Sudio website:

XNA Game Studio 3.1 enables hobbyists, academics, and independent game developers to easily create video games for Windows, Xbox 360, and the Zune digital media player by using optimized cross-platform gaming libraries based on the .NET Framework in the C# programming language.

Reading that, I would get the impression that XNA is not intended for serious game development. Is that true?

Secondly, my understanding is that XNA is essentially a managed wrapper to the Direct X API. Is that the only relationship that XNA has to Direct X? Which platform is Microsoft pushing for video game development on both Windows and XBox?

My overall question is, for somebody looking to get into professional video game development, should they focus on XNA or should they be focusing on something else?

+10  A: 

The target audience is by and large the hobbyist game development community, but there are a lot of things professional developers can use XNA for as well (including the fact that it is one of the easiest ways to get a game onto the XBox LIVE system, albeit in a category separate from LIVE Arcade)

XNA is a Managed library that is essentially a wrapper like Managed DirectX (which was the first Managed library over DirectX). It is clamped to DirectX 9.0c because it is cross platform compatible with the XBox 360, which is obviously stuck at that version since it has static hardware that will not ever change (until a new XBox console is released of course)

At the moment, Microsoft is marketing XNA very heavily for XBox development, but they are also allowing commercial PC games to be produced with it, although there are no easy automatic distribution and payment models like XBox LIVE Arcade on the PC platform as of yet.

XNA is a great learning tool to start getting into professional game development as it does allow for access to everything a "professional" game engine or toolset would including Shaders, Networking, Audio hardware, Gamepad devices etc. It is also a really good tool to fast prototype a game if you need to present an idea to anyone for funding or just to see what your ideas really look like on screen.

Overall XNA would be a good place to start learning DirectX game development as most of the concepts carry directly from one to the other. If you don't want to be stuck at DirectX 9.0c support I suggest you take a look at SlimDX (http://www.slimdx.org) which is a similar conecpt to XNA but maps to both DirectX 9 and 10.

mikeschuld
It's not true that Microsoft are not allowing commercial games to be produced with XNA. From the FAQ at http://msdn.microsoft.com/en-us/xna/aa937793.aspx : "XNA Game Studio may be used to create commercial games which target Windows". There is currently no equivalent of the community marketplace on Windows but you can develop and sell a game using XNA Game Studio.
mattnewport
In addition to games, you could even use XNA for developing line-of-business apps that require visualizing 3D content.
Peter Lillevold
Ah, that F.A.Q. and their business practices must have been updated since I last looked into commercial games with XNA. I'll update the post to reflect that.
mikeschuld
+3  A: 

Commercial games are still primarily developed in C++ (often with a scripting language like Lua or Python used for parts of the gameplay code) but that doesn't mean that XNA is necessarily a bad choice for someone interested in learning games development with a view to eventually being a professional game developer. Most of the concepts you will learn using XNA will be applicable to professional game development and it will likely allow you to cover a broader range of areas in less time than if you started with C++ and lower level libraries for graphics and audio.

Eventually you will likely need to become proficient with C++ in order to work in professional game development but what you learn about graphics, AI and general game development with XNA will still prove useful.

mattnewport
+2  A: 

I agree with mattnewport and mikeschuld's points about XNA being good for hobbyists, or even as a launch point for people wanting to work their way into the games industry. I would argue that it isn't the best thing for people who actually want to make game engines since that's what they are abstracting away. I mean if you really want to grok game engine programming, you should just roll your own. It's a very complex and enlightening experience, and it really helps you to appreciate all that goes on in commercial games.

If you're into only one area, or want to be a specialist in just one area, I think XNA is a great way to focus fire in on that. AI, graphics, whatever.

I think the transition to C++ is unavoidable, though, if the end goal is to bust into the games industry. So, do you want to be an AI specialist or a gameplay specialist? Do you want to write engine functionality? Do you want to deeply understand how the core systems involved work together as a whole? Answering these questions will help you decide whether to jump right in at the C++ level or get a feel for things with XNA.

Kyle Walsh