Tales from the Dev Side: MonoGame is The One
February 12, 2013 24 Comments
XNA, which my non-developer readers will note is the development framework of Xbox Live Indie Games, is being put out to pasture. It’s not quite dead yet. Put it this way: the family has been notified and doctors are starting to determine what organs are viable for transplant, but the plug is not completely pulled yet. Although I’m confident indies will exist in a similar (but hopefully better) form on the next generation Xbox, creating games for the platform will be a much different experience. I’ve been seeking out possible XBLIG alternatives. MonoGame isn’t necessarily what I had in mind, but the more I read and heard about it, the more I saw the potential in what they offer.
I should probably preface this editorial by noting that I have absolutely no clue what any of this means. Like traveling in a country with Romance Languages, I’m at best picking out an odd word here or there, but otherwise it’s all Greek to me. Which is weird because Greek is not a Romance Language and doesn’t fit into the metaphor at all.
MonoGame is The One
by Dominique Louis
If you are reading this, you will have probably heard that XNA is no longer being developed/enhanced by Microsoft, though it will continue to be supported on Windows 8 and Windows Phone 8, in a limited capacity.
Most XNA developers saw this coming, but hearing an official announcement makes it a reality and can make it hard to take. So what are your choices? Some of you may move to Unity3D (great product), if you have not done so already. But those of you who have invested time, blood, sweat and probably tears in your C# XNA codebase have a better option. That option is MonoGame!
My aim is that you, an XNA developer, will at the very least take a look at it, instead of just taking my word for it and make up your own mind. I believe most XNA developers will find it will fit their needs. For some it will not and of course there will be those who won’t like it… just because.
For those of you reading about MonoGame for the first time, MonoGame is an Open Source implementation of the XNA 4.x API. It supports 2D, 3D, touch, mouse, gamepad, keyboard, audio and also a networking stack (via the open-source Lidgren networking library). We have ports for iOS, Android, Mac OSX, Linux, and Windows 8. We are already working on ports for Windows Phone 8, PlayStation Mobile, Raspberry Pi and plan to support Ouya and Chrome. Maybe one day we’ll support consoles too.
As of this writing, we are the *only* way to get your XNA 4.x game onto Windows 8 (thanks to a SharpDX backend) as a fully managed Windows 8/RT Store App. So far we have close to 20 MonoGame powered games on the Windows Store. These include Skulls of the Shogun by 17Bit (our first Microsoft Studios published game, and it won’t be our last), ARMED! by Sickhead Games and Draw a Stickman: Epic by Hitcents(on Windows 8/RT, iOS and Android). On iOS, Mac, Linux and Chrome, Bastion, by Supergiant Games, was powered by a forked version of MonoGame. As most of you know, Bastion has won many awards and topped the iOS AppStore charts in many countries. Late last year, Draw a Stickman: Epic was No. 1 in the UK, Australia, Ireland and New Zealand on the iOS AppStore as well. Most recently Tin Man Can became our first iOS title that was published by Chillingo (the publishers behind Angry Birds).
As you can see, many developers using MonoGame are having tremendous success with their innovative and highly polished games, on both Windows and non-Windows platforms.
In the current market, you cannot have all your eggs in one marketplace. Due to MonoGame’s cross-platform nature, it is relatively easy to port to other operating systems and devices. Massive markets like iOS and Android cannot be ignored, nor can you ignore the emerging Windows 8 and Windows Phone markets, because Microsoft is committed to seeing them succeed.
Our aim is to maximize code reuse, hence why we use exactly the same namespaces as those in XNA. This means your code has the minimal amount of changes for things to work across the platforms you target. In most cases you create a new project from our project templates, reference the MonoGame.Framework.* assembly, create links to your xnbs and source files and recompile. Once you get the hang of porting to new platforms it should take about an hour or two (depending on its complexity) to get your game compiling onto another platform. Then you will need to tweak things for that specific device or operating system. Some game developers who have used MonoGame, like Hitcents, claim up to 95% code reuse between platforms. Hence our motto, Write Once, Play Everywhere.
So what will you need to get started on each platform?
|Windows||Windows 8||iOS||Android||Mac OS X||Linux|
|Machine||PC||PC||Mac||Mac or PC||Mac||PC|
|IDE||Visual Studio||Visual Studio||Mono Develop||Visual Studio or Mono Develop||Mono Develop||Mono Develop|
Building a community takes time, just like becoming good friends with someone takes time. The community has to build up trust. We understand that. MonoGame and the fact it is Open Source, gives XNA developers the opportunity to take control of the future of the technology they have invested so much in, and with it will come increased community spirit. But the community will not happen if XNA developers don’t want it to. Jump In and make it all it can be!
Now that MonoGame 3.0 is stable and publicly available, work has begun on a cross-platform content pipeline that will integrate into MonoDevelop and Visual Studio. Here is a video of it working on Linux, other platforms to follow:
We won’t just stop there. There are plans to enhance MonoGame to take it past its XNA 4.x roots. For example we plan to create a DirectX 11 backend for Windows 7, so that those who have not upgraded to Windows 8 can still use the latest Direct X features instead of being stuck with the DirectX 9 feature set. Another area we plan to improve is documentation. These are just a few examples of how MonoGame will continue to move forward. If you are an XNA fan who works on console games, why not help us get MonoGame onto the NextBox or PlayStation 4 in the future.
Open Source projects succeed or fail based on the passion of the core team and the community that builds up around them. The team is very passionate! Why else would Tom and his team (Sickhead Games) implement the 3D stack donated to use by the Infinite Flight team, or work feverishly to get Windows Phone 8 support working only 2 days after the Windows Phone 8 SDK was publically released? Or 2 weeks before that, Dean getting the Raspberry Pi port working? We have Steve (slygamer, a Krome Studios employee) and Aranda (Gnomic Studios) constantly fixing bugs that are raised as well as implementing features. Why else would I spend over $2000 of my own money, on a hobby, to help promote it at //Build, if I didn’t believe in the project? We want this project to succeed, but we cannot do it alone. We need XNA developers to help this project realise its full potential! The future of XNA is now in your hands, through MonoGame.
Here are a few things to think about:
- There are over 1 billion PCs in the world.
- There are over 1 billion smartphones/tablets in the world.
- MonoGame supports nearly all of them.
- Being used in AAA games published by Microsoft Studios and Chillingo
- Growing (games, developers, platforms)
- In your hands
- Now supported by Microsoft evangelists(Tara Walker, Bob Familiar, Lee Stott to name a few)
- Currently the only way to use XNA on the Windows 8/RT Store App
- Open Source
- Actively being developed.
If you are interested, visit our main page @ http://monogame.net.
If you want to help, create a http://GitHub.com account, fork our GitHub repo @ http://GitHub.com/mono/MonoGame, then send us some pull requests.
On irc.gnome.net some of us hang out on #MonoGame.
Follow us on twitter @MonoGameTeam and send us a message when you release a game with MonoGame so that we can retweet it.