For developers just starting in the industry, the task of choosing the best game engine can be daunting. Here, we'll try to address many of the issues concerning one of the most popular game engines, MonoGame, so you can see if it's the right game engine for your project.
You can read our other in-depth guides on all the major game engines on this page.
MonoGame's strength as a game engine is that it's actually not one. MonoGame is a framework around which you can build your own engine, which results in a fair share of advantages -- and also a few downsides, which will be discussed at length here.
MonoGame is targeted at coders and programmers, at game developers who like to get their hands dirty and want to have custom-built tools. It's also the engine of choice for porting houses as it's heavily geared toward multi-platform development.
MonoGame is an open source, C# framework that implements the application programming interface (API) of XNA, Microsoft's late game development toolset that was retired in 2013. It also supports all .NET languages. MonoGame initially launched in 2009 as XNA Touch, a project created by José Antonio Leal de Farias, a member of the XNA community, to facilitate mobile ports.
When Microsoft stopped supporting XNA, MonoGame announced it would continue to do so. Since then, Linux game porter Ethan Lee has also created a reimplementation of XNA derived from MonoGame, called FNA.
So while XNA has long been dead and buried, it still lives through MonoGame and FNA, as well as other smaller open source frameworks.
"MonoGame has been a very solid solution to the end of XNA," says Jean-Francois Major, co-founder of Mercenary Kings and Flinthook developer Tribute Games. "While the XNA framework is a bit dated, it can handle just about anything you can throw at it."
Developers adopting MonoGame are usually people who worked with XNA and found it easier to just remain in this ecosystem. That is the case for Axiom Verge developer Thomas Happ.
"Way back in 2010 when I first thought of making Axiom Verge, it was just a project in my spare time, and I wasn't part of any developer programs," he says. "But Microsoft had made it possible to develop games for the Xbox 360 using XNA, and since I wanted to release on consoles, that was what I focused on. By the time the next generation of consoles released, XNA had been abandoned, but Monogame came in to take its place, and it had support for PlayStation 4."
MonoGame is entirely free and supports a wide range of platforms: all Windows platforms of course, but also PS4, Xbox One, Switch, iOS, Android, PSVita, MacOS and Linux.
What are the advantages of MonoGame?
- MonoGame is flexible, versatile and highly customisable
"MonoGame is more a set of convenient C# libraries than an engine, so it gives you a lot of creative freedom"Tom Happ
MonoGame's primary strength is its flexibility. Being a framework rather than a game engine in itself, it lets developers write their own engines and make something that will fit their needs precisely, giving them great autonomy.
"It's more like a set of convenient C# libraries than an engine, so it gives you a lot of creative freedom, while still providing things like asset loading and processing," Happ says. "In other engines you are often shoehorned into a particular kind of paradigm -- learning to use their user interface, their way of creating entities and adding behavior to them.
"If you are a programmer, [MonoGame] gives you most of the power of writing your own engine and customising it however you want. It includes a whole asset processing pipeline which you can use unchanged to load textures, sounds, fonts, and so on, but can also be easily modified for custom things, like loading custom level data or localising text and the like."
MonoGame essentially provides an ecosystem to work from without holding your hand the entire time and lets you build your own tools.
"For me, it hits a sweet spot between too much engine and not enough engine," says James Silva, studio lead at Ska Studios. "To me, not enough engine means opening a blank Visual C++ project, and too much engine (for my needs) means Unity or Unreal. MonoGame lets me code in C#, and gives me some nice basic games framework functions (content processing, sprite drawing, music and audio, input), which is all the jumping off point I need.
"Over the last 12 years of Ska Studios' lifespan, I've built up a lot of really specific tools for content creation for XNA and, by extension, MonoGame. So while the option of using one of the many various and doubtless excellent Unity-based tools for content creation exists, I'd rather use my own, as I've grown quite comfortable (maybe even skilled?) with them. Spine is probably a superior tool for 2D animation, but I'm really prolific with my own animation tool (dubbed Skellingtons as of late), which I created in 2007 and have iterated on for over a decade."
- MonoGame is great for 2D development
While you can customise MonoGame so it fits your needs, the framework is particularly recommended for developers of 2D projects.
"MonoGame hits a sweet spot between too much engine and not enough engine"James Silva, Ska Studio
"In my experience, MonoGame is great for 2D game development where the engine is simple and the tools are custom-built," Silva says. "I've used XNA and MonoGame to create The Dishwasher: Dead Samurai, I Made a Game with Zombies in It, The Dishwasher: Vampire Smile, Charlie Murder, and Salt and Sanctuary: all games featuring 2D animation, custom engines, really basic physics, and some simple post-processing custom shaders."
- MonoGame makes cross-platform development easier
MonoGame is deeply rooted in cross-platform development -- remember how it started as a project to help porting games to mobile? And while it's also intrinsically linked to Windows platforms, it has now evolved way beyond XNA's remit.
"Our story [with MonoGame] dates back to when Tribute was founded," Major says. "Back then, the only sure bet to release on consoles was through Xbox Live Indie Games via XNA. But when Sony first approached us to release Mercenary Kings on PS4, we needed a solution for our game to work on that system. We had to turn to MonoGame to gain the multi-platform support we needed."
MonoGame doesn't just provide that multi-platform support -- it's also quite good at it, Flying Oak Games founder Thomas Altenburger continues.
"It can target any platform, and games made with it are usually smoother to port," he says. "When you're proficient with it, it really is 'code once, run everywhere'. The sponsors of the framework -- SickHead Games for instance -- are also very active in making MonoGame compliant with any new platform arising, which makes it a very relevant choice of open source tech."
Happ adds: "On newer platforms everything is cross-compiled to C++ so it can take advantage of compiler optimisations."
- MonoGame is open source
As Altenburger just touched upon, MonoGame is open source, adding even more flexibility to an already extremely versatile engine. It "provides a fine grain of control over what is computed," he says.
"MonoGame can target any platform, and games made with it are usually smoother to port"Thomas Altenburger, Flying Oak Games
Happ adds: "Because all of the code is open source, if it doesn't do something you want, you can just change it. It isn't locked behind some corporation so there's no danger that it will disappear the way XNA did."
It's worth mentioning at this point that MonoGame Team isn't a company, but a non-profit, all volunteer organisation that relies on donations. MonoGame's current project leads are Tom Spilman, co-founder of developer and porting house Sickhead Games, and veteran developer Steve Williams, currently specialist manager in consulting at Deloitte Digital.
- C# makes MonoGame ideal for coders and allows for a fast iteration process
MonoGame is the perfect framework for coders, with C# allowing for rapid iteration, making it easy to prototype and get projects running quickly -- should you have that C# experience, of course.
"If you like coding in C#, know exactly how you'd like to approach a task through just code, and don't want to deal with the various project flows of popular engines, MonoGame is perfect," Silva says. "Crucially, MonoGame is also fantastically portable. My experience with Unity is very limited, but I've heard horror tales of Unity updates breaking Asset Store items during crucial crunch periods."
Major continues: "For us, the strength of MonoGame comes with its fast iteration process thanks to C#. The fact that it's very lightweight is also a plus. We are the owners of all these systems. If anything doesn't run right, chances are it's our fault and we do have the power to fix it ourselves. We never wait on a partner to solve it for us or need to work around the shortcomings of an engine."
- Unity has made C# programmers easy to find
With C# being a common programming language, recruitment is quite easy if you make a game using MonoGame -- and we can thank Unity for that.
"C# programmers are very easy to find with the popularity of Unity and the transition to MonoGame shouldn't scare them away," Major says. "There are also numerous port houses that do support MonoGame projects."
What are the disadvantages of MonoGame?
- MonoGame struggles with 3D
Some of MonoGame's weaknesses will be obvious if you've read the previous section. The first thing is that it doesn't handle 3D very well -- that doesn't mean it can't, but if your project is in 3D you should probably be looking into Unreal, Unity or even CryEngine instead of MonoGame.
"Since it doesn't come with a scene editor, making 3D games with MonoGame requires more knowledge and a willingness to take a deep dive into scene compositing and rendering," Altenburger says. "The 2D API is what made the success of XNA and therefore MonoGame -- it's super straightforward to use."
"The main disadvantage of MonoGame is you only get a layer of abstraction to the platform you are working on"Jean-Francois Major, Tribute Games
- MonoGame is very barebones
If you're looking into starting your first project and you don't have a lot of experience, it's likely MonoGame is not really the engine for you. You can get going if you have a minimum understanding of C#, but if you don't and your project is in 2D, GameMaker will more likely be a good fit for you. MonoGame requires a lot of building upon.
"It's very barebones -- developers will need to build tools or add ways to import data from other sources and create their own collision system and so on," Major says. "The main disadvantage of MonoGame is you only get a layer of abstraction to the platform you are working on. You have no tools or pre-built game components. This can be very daunting to someone just starting out and can slow your process of getting up and running with your first project."
Happ continues: "It is definitely more geared towards people who can program their own thing. There is no WYSIWYG [What You See Is What You Get] or graphical editing, there is no built in physics or animation components; you have to make that yourself or find a library that does that. Also since it is in a managed language, it's more complicated when you need to interface directly with hardware or memory than engines using C++."
- MonoGame lacks documentation and support
Because MonoGame finds its roots in XNA, which has been retired for almost seven years, online resources are scarce. There is a small but strong online community of MonoGame developers (more on that below) but few official resources.
"[MonoGame's disadvantages are] its lack of documentation and the fact that its target audience is mostly ex-XNA developers," Altenburger says. "People who already know about it are typically very proficient with it and don't quite require community interaction or documentation.
"Most tutorials and documentation are almost ten years old, dating from the XNA era (providing that the host websites didn't expire), and aren't quite up-to-date with the great work that has been made in recent days on the framework. MonoGame experts are also quite under the radar. Since they work documentation-less through a decade of practice, they don't disseminate that much knowledge."
"Most tutorials and documentation are almost ten years old, dating from the XNA era"Thomas Altenburger, Flying Oak Games
You can find some documentation on this page, but don't expect official support. As we have already touched upon, MonoGame is an all volunteer, 100% free project so there is no assets store or official, corporate service to answer developer questions -- unless you have access to one of the project leads through a publisher or platform holder of course.
"For me [support] has been basically incredible, though I think this is largely since from the beginning I had a Sony-facilitated line to the creator, Tom Spilman of Sickhead Games," Happ says. "I think the average person will have to rely more on their online forums. Since it's not a paid engine or service I don't think there's any customer support, so you need to go into things understanding that."
- It's difficult to find experienced MonoGame developers
While Happ reckons recruiting experienced MonoGame developers is essentially as simple as finding C# coders, some of our interviewees believe it's actually not so easy.
"It's hard, pretty hard," Altenburger says about recruitment. "Real MonoGame experts are getting rare, and if you need porting support, it comes down to a handful of companies worldwide, though C# developers should be at ease with the tech."
- MonoGame requires time and effort to unlock its flexibility
Another topic about which our respondents were in disagreement is how quick it is to get something working with MonoGame. While Major earlier praised a fast iteration process, Tea for Two programmer Garry Williams argues MonoGame is not fast. And that is why the studio switched to Unity for Snowtopia.
"[MonoGame is not good at] doing things quickly," he says. "If it's a small project -- if you don't already spend all your time reading your own codebase -- it will be easier to just grab Unity. We actually started [Snowtopia] with MonoGame, which I used for several projects before. In general I prefer MonoGame because it's more hands on, it's more flexible. But because the game is in 3D, I switched to Unity to have all the ease of having a rendering engine and material system -- it just handles all the added complexity of doing something in 3D."
And he's not the only one thinking that for some aspects, Unity is a better alternative.
"I was tinkering around with Unity and was able to add some post-processing effects like bloom and chromatic aberration in no time," Silva says. "In the various MonoGame game engines I've made, adding something like that involves a bit of restructuring, which always threatens to break everything."
Advice for new MonoGame users
- Rely on the community
"The community is great -- full of people who want the tech to move forward"Thomas Altenburger, Flying Oak Games
As always when it comes to discussing the best approach to starting with a new engine, most of the advice given revolves around making good use of the community. MonoGame has well populated official forums and a small but pretty active Discord server.
"[The community] is super great -- full of people who want the tech to move forward, and great developers who are pretty open about sharing knowledge," Altenburger says. "There are very cool interactions with very skilled studios which are using the tech since the XNA era."
Major adds that MonoGame sponsor Sickhead Games and FNA creator Ethan Lee have been very helpful and approachable over the years, with their work being a "god send" for XNA developers.
"The community is probably much smaller than that of Unity, but is quite active," Silva says. "I haven't had much trouble with MonoGame, but I'm able to get any issues resolved pretty quickly through the community in one form or another."
- Don't limit your web searches to MonoGame
With MonoGame being only one of XNA's various evolutions, it may be that when faced with difficulty you'll have more luck if you expand your horizons a little bit.
"When looking for help or tutorials, make sure to look at results for XNA, FNA or MonoGame," Major says. "All of these should accomplish the same behavior XNA once did. So it widens the amount of results you can get."
Happ advises to actually also look into FNA itself and not only MonoGame when considering your options.
"FNA is based on an earlier branch of Monogame but designed with the idea of using a single binary for Windows, Mac, and Linux," he explains.
- Manage your expectations, MonoGame is not for beginners
When choosing to use MonoGame, you need to be fully aware of what you're getting into. As our interviewees discussed at length, MonoGame is not strictly speaking a game engine, so do not expect it to behave like one.
"Don't expect a fully fledged editor, MonoGame is mostly about abstracting low level things to make them cross-platform," Altenburger says. "Making an engine and tools on top of it is actually up to you. It typically is best suited for people who want fine control and great portability of 2D games."
You may realise as you get started that MonoGame is not for you, Happ continues: "I'd say if you are an experienced programmer used to using C++ or C#, you'll find Monogame saves you a lot of time and energy. But if you're just getting started it might be easier to begin with something like Unity."
Silva concludes: "If you like coding more than dealing with a complex engine, and you're embarking on some 2D game creation, MonoGame is worth a try."
Our in-depth guides on all the major game engines can help you find the best technology for your game -- this page will be regularly updated to add new engines to the list. If you're eyeing the most popular game engines, you can jump to our Unity guide right away, or read more about Unreal Engine here.