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#.

Questions on Stack Overflow are expected to relate to programming within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.
If this question can be reworded to fit the rules in the help center, please edit the question.

2

Needs to be moved to gamedev.stackexchange.com where similar questions already exist
–
emartelNov 17 '12 at 19:13

For the most part, it's not terribly important which tech stack you learn. Good programming principles transfer well between environments. Even better if you have something completed and ideally "out there" where prospective employers can see it. That means you should learn the tech stack you'll be most likely to finish something with imo.
–
Iain GallowayNov 17 '12 at 19:23

Note that Unity does support C#, so you don't actually have to switch language if you choose it.
–
user673679Nov 17 '12 at 20:14

2 Answers
2

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 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 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.