Question: I've been doing C# with XNA for a year or so now, and I'm pretty comfortable with 2D games. But after some reading, I'm worried about XNA's future since it isn't supported in Windows 8 and stuff like that.

So I've been considering switching to Unity 3D? What are the benefits of Unity over XNA/C# and it is worth the move? if not, why?
I'm also open to suggestions of other languages and engines.

I'm currently going through school and considering game development as a career, so I would like something which won't die in a year or so (as far as we can tell) and will give me skills I need. Also consider that I have previous programming knowledge with C#.

Thanks, David.

Answer: 
**XNA**

XNA still works on Windows 8. The issue is that they are not supporting XNA based games in Windows 8 Modern UI. XNA still works for Windows 8 desktop games. The terminology is extremely confusing. 

XNA will either get a serious overhaul when the new XBox console is released or something brand new will be designed. 

**Language**

If you want to create games for Windows 8 Modern UI, such as Cut The Rope, etc, you'll need to use C++. The last time I saw C++ was the only supported language that could interop with DirectX and Windows 8 mode. All the other features of Windows 8 are available with C#.

**Unity3d**

If you want to make video games you should pick Unity3d, or an equivalent gaming engine and framework. The problem a lot of video games creators get into is trying to design yet another game engine. This has been done to the point of them becoming commodities. Focus on the game, not the engine.

Unity3d knowledge will be far more value than creating simple games with XNA. You should still understand 3D theory though.
**[MonoGame](http://monogame.codeplex.com/)** is a free XNA-compatible library that allows you to make games in C# for WinRT, Windows Store apps and Windows Phone 8, and on top of the [Xamarin](http://www.xamarin.com) tools also for iOS and Android. This works on top of SharpDX, the optimized managed wrapper for DirectX, so your game runs pretty much at the same speed as with XNA.

Since MonoGame is open source, actively developed and targets all the current platforms, you probably need not worry about it being obsolete soon. It gives you a great way to keep your C#, XNA-based codebase to target Windows RT and the Windows Store now, and potentially extend to the other mobile platforms if you buy the Xamarin tools.

So no reason to move your C# stuff to C++. 

Unity3D on the other hand is a totally different game framework, and would not be an easy port. But you can then target many more platforms (particularly consoles, and now Flash too), and still script most of the game in C#. But it's quite a different tool to learn.