Hey everyone! Before you continue, no, this isn't a post about getting MonoGame to work with C++!

Now that everyone didn't run away, I have a question that i've been debating for a few days now. I've been programming for 4-5 years now, and the entire time I have had game programming in my sights. Only recently I have been able to start development on a full game, not a sample game you make from a book where the game runs through and ends. I mean a full game, like one you would buy. I've been working on it for a couple weeks using XNA 4.0, even though I have been aware that XNA is basically dead in Microsofts eyes. I was using this as a learning experience, and I did learn a lot.

Now here comes the question. I have two options here to continue, because I feel like as though I know i'm learning, continuing with XNA is counter productive if I were to want to deploy and sell my games (key word, IF. I know not everyone is going to be able to, or want to deploy their games to sell). I could port my game over to MonoGame, which I looked through and scoured the internet for info on. The problem here, is that since it's still in development, there is no content pipeline that you get with XNA, which was a huge part of it. I know MonoGame is basically the go-to thing for XNA devs as well.

My other option is to switch to C++. I did what every hobby dev does, and started my tenure of programming trying to learn C++, so I do have SOME experience. (Some = getting a sprite to move with DirectX after I learned the language itself of course). Another thing to keep in mind is that I do all of this by myself, and do not work in a team.

More thinking about the future, would it be worth it to port my game to MonoGame, continue developing it, and deal with all the tricky workarounds that MonoGame has as of now, (Version 3.0 or 3.1, can't remember which), or would it be better to just start learning C++ again, and get back into that for game development?

Before everyone comes out with the, "no language is right for every situation, choose what works for you, etc", i'm not looking for advice on a personal level. I'm looking for advice at an industry level. Basically what i'm asking is, would it be worth it for a one man programming team to deal with the MonoGame stuff, or would it be worth it to make the switch back to C++? Taking the time to learn the language isn't a problem (I'm a third year student at college, I have some time before the real world!) What would be more advantageous in the long term is what I want to know.

I'm only looking for opinions here, as I am aware of how many factors can affect a decision like this. I'm not looking for anyone to tell me how hard one is, or how easy another is, as i've had at least some experience in both. Not saying i'm a pro, far from it actually. Just stuck in this tough decision that I can't figure out which side to go with! If it helps, I only work in 2D. Not really working on any 3D games, at least in the foreseeable future. Thanks everyone!

I'm in a similar situation to you in that I'm considering switching to MonoGame. However, C++ is out of the question for me because I've been working on my game for about a year in C#. Fortunately for you, your game is in the very early stages of development so switching to either shouldn't be much trouble.

If MonoGame doesn't have a content pipeline, does it have something similar? How will you import your assets with it? Furthermore, if you switch to C++, which engine will you use? MonoGame strives to be an open source XNA 4.0, so if you're more familiar with game development in XNA then chances are you're more familiar with C#, so I'd stick with that language. I have also heard that porting to MonoGame from XNA is pretty easy, but I don't have first-hand experience doing it so don't take my word for it.

Overall, I think you should look at the big picture. Which platforms would you want to sell your game on? Is it a PC game or a mobile game?

Regarding languages:

C++ is a powerful language, but it takes a while to get used to. Since it's your very first original game, I'd stick with C# since Visual Studio is a great developer tool and you'll have more problems with C++'s intricacies.

Basically what i'm asking is, would it be worth it for a one man programming team to deal with the MonoGame stuff, or would it be worth it to make the switch back to C++?

Yes and yes. I know you said you didn't want that advice, but unfortunately it's the correct answer. Either of those are viable options with advantages and disadvantages, and at the end of the day the biggest factor is going to be your own personal preference. Small teams and individual developers have been successful with both C# and C++, and both languages are more than sufficient for what you're trying to do.

Personally, given you're significantly more familiar with and also making progress with C# and XNA I would tend towards sticking with C# and learning to use MonoGame when or if it becomes necessary.

I would suggest you simply stick with XNA for now, as for the time being it is still perfectly usable and the functionality and usability of MonoGame is being improved all the time to ensure switching is as painless as possible. You can then make the change only once you actually need to do so.

For reference, it's my understanding that most people currently just use the XNA content pipeline along with MonoGame but that the MonoGame replacement is coming along nicely and should be able to take over that role sometime in the near future.

You can still continue to use XNA if you like it - It won't stop working or refuse to install on people's computers, it's just not going to be developed any further. If you want to get it onto Windows 8 or any other unsupported platform, you could use MonoGame to port it over when you need to.

For MonoGame, you just need to use XNA's content pipeline to compile your assets before adding them to your project. There's also a Content Compiler project on CodePlex that might simplify things, but I haven't tried it yet.

If you're comfortable using those frameworks, and enjoy it, there's no harm in continuing to do so. Any concepts you learn in one language usually transfer to a new one, so you're not going to "waste" any time now even if you change later: When you're certain you'd rather be working with C++, and feel you're ready, you can do so whenever you want.

I hate to 'leave it up to you' since you specifically asked to avoid that, but I don't know that anyone's opinions would be relevant to your decision, the big picture is the one you're painting yourself. I could advise you to go with C++, just because that's what Epic used for the Unreal engine, but that's irrelevant if you have no interest in working there. (As well as a poor basis for advice in the first place!)

Basically, you got caught up in having to make an unexpected decision, while feeling like you don't have enough knowledge to do so. It's not as dire as it seems, and truthfully in the longterm, you'll be fine no matter which way you go. It's really only a matter of which feels more comfortable for you.