Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm new to game development and want to implement a few ideas I've had as a hobby over the next few months. I want to use only C# as the development language for 2D and very light weight 3D games.

What are the disadvantages of using XNA to develop games for Windows?

Most of the resources for XNA seem to revolve around XBOX or Windows Phone. I have successfully built some prototypes for Windows but am not sure what the limitations are in terms of distribution, etc.

share|improve this question

closed as not constructive by Tetrad Aug 22 '12 at 21:04

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

The long answer to the question in the title is: Yes. – Martin Sojka Aug 22 '12 at 11:32
Disadvantages" are only disadvantages if they affect you in some way. Without a spec it's just a subjective opinion, and even with a spec I'm sure you could make it work. If you have a specific question about how to do X or Y in XNA then that would be a more appropriate question for this site. Right now it's just asking whether or not you should use a piece of tech, which isn't a good kind of question given the faq. – Tetrad Aug 22 '12 at 21:04
up vote 5 down vote accepted

Yes. It certainly is, despite naysaying advocates of Linux, Mac, OpenGL, and C++. They tend to ignore the main criterion of your question: "on Windows".

I would recommend trying out those resources that seem to only applicable to windows phone or xbox. Nearly all the xbox example projects provide pc versions, all of which have liscensing open to free use. Look at this search list: Also, XNA generally performs better on the PC than on the xbox, because the second stage of the CLI peforms inlining. (And the infinitely better garbage collector doesn't hurt, either.)

Especially as a hobbyist developing for yourself, if you want to develop games in managed code, C# and XNA will serve you very well. You will be able to accomplish everything that you could at a baser level of coding, and you will save countless headaches.

share|improve this answer

no limitations that i'm aware of although you will need to access MonoGame if you want to sell on the windows 8 store

lookup the successes of XNA (Bastion, Magicka etc)

share|improve this answer
+1 for MonoGame. It rocks, and is incredibly well supported by the dev team. – David Lively Aug 22 '12 at 15:35

You may want to check out ANX, it wont let you publih on WindowsPhone and XBOX360, but it opens Linux, MacOS, PSVita and Widonw8Metro (or ModernUIStyle) to you. Good thing is you may use XNA documentation and samples to get yourself started.

The ANX.Framework is a framework which is source compatible with Microsoft's XNA framework 4.0. Source compatibility means, that you can "translate" a XNA game project to be a ANX game project by simply replacing all namespaces from Microsoft.XNA.Framework to ANX.Framework. The advantage of ANX is simply that you are able to swap the RenderSystem, the InputSystem and the AudioSystem. By swapping this systems you are no more limited to run your game using DirectX9 which XNA is using. ANX comes with a DirectX10 RenderSystem as a default. A DirectX 11, DirectX 11.1 and a OpenGL 3 RenderSystem is currently in development. This will make it possible to run your games on Linux and other plattforms which are supported by OpenGL etc. simply by swapping the namespaces.

~ Codeplex site:

It is still under heavy development but most of the basic XNA features are implemented.

share|improve this answer
Is your recommendation for ANX based on personal experience with it? – Neeko Aug 22 '12 at 15:27
Partly yes. I worked on some simple prototypes and the bugs I encountered where resolved very fast. At the moment I am working on a small RPG 2D project which will make use of ANXs multiplattform support – floAr Aug 30 '12 at 12:41

I suppose that XNA vs the world ( aka OpenGL and DirectX as real alternatives ) can easily look like a religious question especially when targeting a new developer, but i find that the right adjective for XNA is simplified and not powerful.

XNA is a subset, someone can argue that, but in the end is just a subset of DirectX, this framework is well suited for small project and not for serious gaming.

You have also to consider one aspect both C# and XNA ( or DirectX ) are technologies that are available only on Microsoft platform, this is important to stress, my point is that today Microsoft is not a big player in the industry, if you consider on how many platform you can make games, including desktop and mobile, you will easily realize that Microsoft is simply struggling in the market and more and more Microsoft will see its own market share resizing to a smaller size.

I personally believe that C# and DirectX/XNA will have a really hard future, i think that during the lifetime cycle of Windows 8 many many people will realize how bad their choice was about the language to adopt as main language, C++ is much more suitable for the performance, for the business and for cross-platform compatibility.

I do not want to influence anyone, just propose my idea, my points are:

  • Microsoft will become a small player in the future, even smaller than it actually is ( even Bill Gates has been selling a huge part of its own Microsoft shares before the Windows 8 launch, we are talking about 20.000.000$ in shares and this is only what was happening in July, just in 1 month(!) )
  • The gaming on MAC and Linux is not a rare thing anymore, even Steam will launch its service for Linux by the end of the year
  • C# is a weird creature, and without spending too much words about this, is just for Microsoft platforms and doesn't offer cutting edge performance honestly, i don't see the point about adopting a language that is for 2-3 devices and doesn't even have a real edge on performance
  • if you choose C++ you will program almost anywhere, desktop and mobile, also the real developers just use C++ for the biggest part, you can also program on the platform where C# is available, Xbox, PC and Windows Phone 8 ( from WP8 Microsoft will support C++ on their phones ).
  • Microsoft has one of the worst royalties system ever, most of the times you don't even have a chance to know how much you are selling.

If you ask me the language for you is the C++ because learning C# or C++ is the same thing for a newbie, it's always a new language, but what the C++ can offer the C# can only dream about it; you also will develop a real know-how that you can spent on as many platform as you want and on all levels, from small games to serious development.

The last part about what framework you are supposed to learn, again, i will go for the most business friendly and the best choice as an investment these days is OpenGL with a programmable pipeline approach and this means OpenGL 3.0 and above.

I should also remark the fact that OpenGL is a rendering technology when DirectX is a complete framework oriented to all the main aspect about multimedia, but the thing is that today there are frameworks available for every purpose that you have in mind, most of them are free and really well tested, with an history of several years of testing and they are really reliable, they are also cross-platform and with a really good license most of times if not in every case.

As soon as the OEMs will stop installing Windows on their machines, and most of them already do that in practice, just see the market share percentage of Windows Phone, the entire Microsoft ecosystem will collapse and just looking at what is now, it's not that good anymore. Look at the marketplace, Microsoft has a marketplace by years until now and there is absolutely nothing, it's empty compared to what you can find on the marketplaces of the competitors. Look at the technologies, C# lives thanks to the web development, if it was for Windows Phone 8 development it were dead by years; Silverlight is a big flop, find 1 technology that Microsoft has introduced recently and see how good is performing on the market, even Internet Explorer have lost its throne.

I know that most of the people that will read this, especially advanced and senior developers, will get this as a ranting against Microsoft, but when even the founder doesn't believe in its own Corporation that is performing so badly before an important launch, that is losing important assets and presence on the market on every field, i think that you just have to consider the facts.

recap: go for C++ and OpenGL 3.0+ and you can code anywhere.

share|improve this answer
Unfortunately I only have 600 characters to explain but this post is full of fallacies. C#/.NET is one of the fastest 'interpreted' languages and is absolutely not primarily for web dev. There are a huge number of C# jobs. Microsoft controls 90+% of the PC game market. C++ does not mean you're automatically cross platform. C#/XNA can be converted with MonoGame and ExEn to Android and iPhone. Indie games on Windows get 100% of the royalties even if you use the W8 app store ( the only other platform that has this is Linux. – Roy T. Aug 22 '12 at 13:18
Also DirectX is available on Windows, Windows Phone, Xbox and is one of the primary frameworks for most games, it has more media capabilities but those are in separate libs. Also DirectX is completely free. And finally Bill Gates sold his shares because he wants to do more philanthropy and pledged to give away 50% of his money! – Roy T. Aug 22 '12 at 13:21
Is XNA suitable for Windows? You told him why it's unsuitable for other platforms. – Seth Battin Aug 22 '12 at 14:22
I'd like to see some citations for these oft-repeated performance arguments. I have yet to come across a performance bottleneck due to using C#. Also, it's currently the only tool that you can use to code for every platform without getting a manufacturer's hardware SDK, and in many cases just requires a recompile. Also, on iOS, c# is compiled to native code due to Apple's terms of service, and it works amazingly well. – David Lively Aug 22 '12 at 15:41
@user827992 ai I said converted that is indeed wrong. However the performance of MonoGame is very good. It's not an extra layer of abstraction but a drop in replacement of .NET/XNA so there isn't an extra number of abstractions! A real life example: Bastion uses MonoGame on Linux. Also the success of Android and iOS is irrelevant for a PC game question (in this case even a Windows game question) and the PC game market can still be very profitable, even for indies. (Examples: Minecraft, Terraria, Overgrowth, Bastion, Amnesia, Frozen Synapse, LIMBO, VVVVVV, etc.. etc...) – Roy T. Aug 22 '12 at 16:02

Not the answer you're looking for? Browse other questions tagged or ask your own question.