Monogame or C++/SFML

after being away from developing for a few years, I have now time again and want to start working on some 2d game. The last time I was “active”, there was still XNA around. Now I learned that MS pulled the plug, no more XNA, but there is now Monogame which basically replaces it.
I am trying to find out what Framework I want to use to create my game. I do not want to use an engine like UE4 or Unity, because I want to create the stuff myself, also as a learning experience. I think Monogame is a great fit, however I am also thinking that C++ with SFMl would be an option.
A few questions:

  • Why did you choose Monogame over another another Framework?
  • How cross platform is Monogame really?
  • Why did you opt for C# vs C++(11)? I know basic C++, but could imagine that using C++ with SFML might not be that much harder than C#/Monogame, but it will be the “better” learning experience??
  • Are there Level editors besides Tiled around?
  • Going to consoles (XBOX one), is it really as simple as it was with XNA and the 360?
  • Compared to the then huge XNA community over at creators club, where have all the people gone, given that Monogame is almost XNA…Unity and UE4?

Thanks a lot for your time

I learned Visual Basic in high school as my first programming language and was interested in game programming, so I discovered XNA. I learned C# quickly after. Going back to XNA after a year or two I read that it was no longer developed and that there was an open source reimplementation in development. I knew some of the API and really like C# so that’s how I ended up with MG. Thinking back XNA development was probably already dropped when I first got into it, but I just didn’t know :stuck_out_tongue: I tried Unity and some other full-fledged game engines, but preferred the total-control, code-first ideology of MonoGame. I consider myself a programmer more than a game developer, so MG fits my profile. I must admit I haven’t tried any of the frameworks that offer the same level of abstraction as MG though.

Very! MonoGame supports Windows, Mac, Linux (you can have a project type that builds a binary that can run on all three using OpenGL), UWP, iOS, Android, PlayStation 4, PlayStation Vita and XBox One (you need to be a registered developer for PS4, PSVita and XBone). WiiU support is on the way too! Apart from platform specific difference like input, resolution, shaders (I think you only have to port shaders yourself for PS and apparently PSSL is pretty similar to HLSL; MG currently translates HLSL shader bytecode to GLSL using MojoShader)… and some of the API that not every platform supports, everything should run just fine that on all platforms. You can have a shared project for common code and C# offers partial classes to easily let you resolve platform specifics.

The obvious missing platform is web. You may be able to get your project ported using JSIL but you’ll need to do a lot of tweaking and experimenting to get it right. No one is working on this actively and MG is basically waiting for WebAssembly. Note that when wasm becomes viable for C++ possibly the C# to C++ transpiler can be used before there is a C# to wasm compiler available.

Most people write their own. I can’t think of any of the top of my head, but there are bound to be a couple out there.

I don’t know a lot about this, but here’s my take: It’s really easy if you have a UWP project, but you only get limited access to the device hardware. Should be fine for simple games (you don’t need to be a registered dev for this IIRC). If you need the full XBox Dev Kit, I think the process of building your project and getting it running on your dev machine isn’t as easy as it should be yet. That’s because XDK doesn’t support C# so a C# to C++ transpiler is used. Currently Tom - the MG project lead - is working on that. He mentioned the transpiler will also be open sourced once it’s more complete/stable. The transpiler is also used for PSVita btw (not PS4 because there’s a Mono runtime available).
I learned a lot of this information from MonoGame live session #4:

I don’t have a clue. If you find them, please bring them here :stuck_out_tongue:

Thanks for the answer, interesting ;-)! Seems like you were in a similar situation like I was. MG sounds really great, also the amount of platforms is very cool. So the reason to go with MG was the huge amount of platforms I guess then and not so much that you program in C#?

I wasn’t interested in going cross platform at first. The reason was more C# and XNA API (because I was familiar with them). I read that C++ was most common in game dev, but I didn’t want to go C++ because at the time I had barely done any programming in a manual memory management language. Also I’d heard a lot of bad things about C++ like how messy it got over the years and how you need a lot more code to do something than C#.


I got into monogame through XNA too…

I got into XNA because of c#, which I got into because of the whole beginner friendly microsoft package, (C# .NET, free super-editor, and most of all global support from a long-time leading company)…

I have never had regrets about any of it… For the duration, I have had a feeling of complete control, and endless possibilities. There has never been a reason for me to even LOOK elsewhere… I get that some people DO find reasons, but I’m not sure how well founded they are :slight_smile:

The forum is great, feature list is growing, and people REALLY do publish to all sorts of platforms… Though I’m a desktop-locked windows guy, so that’s not something I worry about.

One thing that strikes me, is that I cant recall having seen people really complain about monogame, but I have seen people coming TO monogame with complaints about where they came from…

Anyway, I’m super great full for the hard work that has gone into making this whole monogame package what it is… Its all free, and open, and the guys who make it work go out of their way to make video, provide links to great sites, etc… And I have seen them do it for years now, so they really have my confidence.

And well, if you don’t like it, you can strike it off the list and go somewhere else, having invested nothing but time… (FUN time at that)

As mentioned people usually write their own. Either way you will need to write your own parser of the xml/json spat out of the editor, so basically any level editor should work as you will have to interpret it in your game.

Alternatively look at MonoGame.Extended that can already import Tiled maps.