MonoGame: A Framework for Indies

MonoGame: A Framework for Indies

We’ve talked with the developer of the Microsoft’s XNA Framework, which powers Bastion, Towerfall: Ascension and Axiom Verge.

Technically MonoGame is not the game-ready engine. It is an open-source implementation of Microsoft’s XNA Framework, which is used by indie game developers from all over the world. It was used to build Bastion, Towerfall: Ascension, Axiom Verge, Apotheon, as well as Infinite Flight. We’ve talked with core developer of the MonoGame Steve Williams and discussed some of this product features.


The MonoGame project is currently run by myself and Tom Spilman.  I have been a professional game developer for 17 years now, and Tom is also a long-time game developer.  Tom is a co-founder of Sickhead Games in Houston, Texas and I spent most of my career at Krome Studios in Brisbane, Queensland.  We are also assisted by Dean Ellis and Dominique Louis in England.


MonoGame is an open-source implementation of Microsoft’s XNA Framework.  A framework is more of a platform abstraction and provides a basic structure, where an engine will provide a more complete structure, including a scene manager, graphical user interface, particle systems, physics, etc. and quite often will also provide tools to create content.

Users of MonoGame will get pre-built libraries, content pipeline tools and project templates with the installer, and they will get full source code if they clone the git repo from GitHub.


It is very easy to get started with 2D games, and most users of MonoGame use it for 2D.  The SpriteBatch class handles most of the 2D rendering tasks and would be one of the most widely used classes in MonoGame.  As with any engine or framework, performance depends on how the system is used. SpriteBatch will try render in the most efficient way, depending on what it has been told to do.

3D is a bit more complex, but MonoGame can handle 3D just as well. Infinite Flight by Flying Development Studio LLC  is a great example of MonoGame used for a 3D flight simulator.

Сross-platform Flexibility

The basis for the cross-platform support is the use of C#.  With Microsoft’s .NET Framework on Windows platforms and Mono on other platforms, we can use the bulk of the code across all platforms without any change.  The platform-specific code is mostly implemented in partial classes, such as the Direct3D 11 support on Windows and OpenGL on Mac and Linux.  This keeps the platform-specific code contained to well-defined modules without littering the code with too much conditional code for the different platforms.

Developers using MonoGame benefit from this by being able to use same code they wrote for one platform and using it on any other platform that MonoGame supports, quite often with little to no change.

The Biggest Games

Infinite Flight has been mentioned already, and that has been one of the long-time flagships of games built with MonoGame.  Other games that have used MonoGame include Bastion, Towerfall: Ascension, Axiom Verge, Apotheon, and Square Heroes to name a few.


No-one has actually measured the size of the community, but my estimates are that there are thousands of people around the world using MonoGame, from the smallest demos through to fully-blown commercial games.  There have been 221 contributors to the MonoGame GitHub repo, and 80 people in the Gitter discussion channel. MonoGame is completely free to download and use.  Most developers using MonoGame use the desktop platforms (Windows, Mac, Linux), with iOS and Android coming next.

We have community forums on our website, a Gitter channel and the GitHub repo.  We also keep an active presence on Twitter where the #MonoGame and #BuiltWithMonoGame hashtags get used a lot. A semi-regular Google Live Hangout takes place once a month or two, with members of the MonoGame team as well as prominent members of the MonoGame developer community.  These can be found on the MonoGame YouTube channel.

We visit various events around the world, though we don’t usually have a MonoGame booth.  Tom is a regular visitor to GDC in San Francisco, Dominique and Dean often go to events around London and I go to Game Connect Asia Pacific in Melbourne.

Beginner’s Guide

The easiest place to start using MonoGame is to our website, download the installer and try it out. There is some documentation on the website and links to many tutorials.

The MonoGame YouTube channel has many great videos.

Simon “Darkside” Jackson has started posting some great tutorial videos at his MonoGame channel.

If you want to dive into the source code, build the framework yourself, or contribute to the development of MonoGame, clone the git repo on GitHub.

Steve Williams, Core MonoGame Developer

Interview conducted by Kirill Tokarev

Follow on Facebook, Twitter and Instagram

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more