I want to make a 2D game in C#. I have begun learning C# on my own. But, I am confused sbout what to learn after c# to make a game. I hear many things like XNA, MDX, Monogame, SlimDX, SharpDX, Frameworks, game engines, IDE's etc. To me all of this has caused a great confusion. The C# game tutorial I am learning is based on MDX (Managed DirectX). Now, I realise that MDX and XNA is dead. I am confused if I want to change my tutorial itself. Can anyone clear things out for me and tell what i need to learn step by step? Please help!
MDX is rather old, and XNA hasn't gotten an update in a number of years. But MonoGame is definitely getting support and updates still, and 98% of the things are the same between MonoGame and XNA. My tutorials for XNA are pretty comprehensive and up-to-date. The MonoGame ones need some attention, especially in relation to the content pipeline stuff at the beginning. But otherwise, everything should be the same.
SlimDX and SharpDX work at a lower level. Just barely above DirectX. (They're both C# wrappers around DirectX, so you're still doing DirectX programming without having to resort to C++.) DirectX is a very complex and often frustrating library to use (not that it's any worse than OpenGL). For a beginner, I'd definitely recommend something at a higher level.
MDX, XNA, and MonoGame all fit that bill, but as you mentioned MDX and XNA are probably not the right choice today. MonoGame probably is.
There are, of course, even higher level game engines that you can use. They give you less control over how you do stuff, but take care of more of the "boilerplate" code that you need when first starting. I'm not a huge fan. I like having a bit more control over things. But they do definitely work and work well. Unity is probably the #1 choice in the C# world, but there are others (Paradox, Delta Engine, etc.)
So yeah, there are a lot of choices. Almost too many. I'd say the starting point is to try out a little of Unity and a little of MonoGame/XNA and see what flavor you like better.
A great game developer will have experience across this whole spectrum, from working at the raw DirectX level (or SharpDX) to the midlevel stuff (MonoGame/XNA) to the full-fledged game engines (Unity). You learn different things at different levels, and that helps to flesh out ideas on how to best make different types of games. I'm not saying you should tackle all of them on Day 1, but that if you spend time trying things out, it's not wasted time by any means.
Thank you sir,
Your reply cleared most of my confusion. I am a psychology student who is interested in programming. So, I am a complete noob! So, to make things easier I decided to start out with easy stuff and then move onto complex things if I didn't lose my motivation. That's why I chose c# over c++. Now, I might chose a higher level game engine like Unity because it's easier.
I have one more doubt. I hear that you can script using c# in Unreal Engine using an addon called Mono. So, how will Unity compare against Unreal Engine. Sorry to trouble you!
I honestly don't know much about the inner workings of Unreal. I've done a little with Unity. Maybe somebody else can jump in here and help give a more detailed answer. But my guess is, Unity would be simpler than Unreal. I don't have any firm reason to believe that. Just a gut feel that Unity is a little easier and user friendly than Unreal.
If it's any help, Mono is an open source port of the .NET Framework that C# runs on. The .NET Framework is owned and managed by Microsoft, but that means (until recently) it hasn't gotten a lot of love on non Windows computers (like Mac and Linux). That's where Mono came in, making it so C# can run on other operating systems. MonoGame is an open source port of XNA, and it will use Mono on non-Windows platforms (and use the .NET Framework when it can, IIRC).
Unity also uses Mono when it's running on non-Windows platforms. So everybody's doing it. It's kind of the way to make it work.
Like I said, I'm hoping somebody with either more experience with Unity, experience with Unreal Engine, or preferably both can give a more official answer here, but hopefully that gives you some insight.
Sounds good. I want to do more with Unity and add a collection of tutorials for it, but realistically, that will not be for a while. There are plenty of other people floating around here that are interested in (and even actively doing stuff with) Unity. It would be a good place for me to add new tutorials. But yeah, you'll probably mostly have to learn Unity from elsewhere. They do have pretty good tutorials and learning material directly on their site though. That's probably the best starting point.