How to build a bungalow… begin with the chimney

Whilst nobody was looking, Mono became the most important framework in the world of games.

And I mean that with only a smidge more than my usual levels of hyperbole. It really is fantastically important, as far as game development goes.

I blogged a long time ago about its use inside EA’s multi-million-selling The Sims 3. And the massive performance gains in Second Life when they switched from their in-house scripting language to Mono are well documented. But I’m not talking about those, I’m talking about the now, the recent stuff.

First up is Unity 3D. Not to be confused with the Ubuntu user interface, Unity 3D is a proprietary game development tool which began life for Mac, and has now managed to become the single most popular game engine amongst smartphone developers. It targets a bunch of new platforms – not just Android and Windows and iOS, but in the new 4.0 release, Linux too for the first time. And every Unity 3D game is a Mono game – the core of Unity is a fork of Mono, which enables it to have the performance and ease of development which it does. A reasonably large percentage of the cross-platform games on Kickstarter, such as Wasteland 2 and Super Retro Squad, are cross-platform because Unity 3D makes it easy – and each of those games is powered by Mono.

However, I have better things to do today than gush about a proprietary tool. No, far more important are the Free ways to develop games. So today I’m going to talk about MonoGame.

MonoGame is an implementation of Microsoft XNA – a high level framework for developing in .NET languages, originally designed to allow indie developers access to the Xbox 360. XNA covers many of the bases covered by SDL – sound, graphics, input, and so on, but can go onto platforms where SDL isn’t an option, such as the aforementioned Xbox 360. And with MonoGame, any game written for XNA is a game which can not only run on Microsoft’s approved platforms – Windows, Xbox 360, Windows Phone – but also on other platforms such as Mac OS X, iPhone, iPad, Android, and Linux. Cross-platform is good. More games are good. And MonoGame enables every Xbox 360 indie developer to throw a Linux port out of the door with a relative minimum of fuss. There are 2,521 games on the Xbox Live Indie Games store (games by individuals or small groups, with no major publisher) and each of those can become a game for Debian and Ubuntu with very little work. Not to mention the games with actual publishers (some portion of the 492 games on XBLA), not to mention the mobile games written for Windows Phone, Android and iOS. All of these developers have an easy route to Linux releases, as long as the effort remains low.

And with today’s publishing in the Debian archive of MonoGame 2.5.1, the effort is as low as can be.

Anyone who purchased the recent Humble Indie Bundle 5, and played Bastion, has seen MonoGame in action – Bastion began life as an XNA game for Xbox 360, and the Linux port was made possible only by MonoGame. Bastion’s 100+ industry awards should indicate the possibilities open to a creative mind with decent developer tools.

MonoGame is Free Software, built on top of other Free Software, with an active upstream development team genuinely responsive to the needs of Linux distributions. It’s well worth a look not just for porting, but for new projects too. And I’m delighted that it will be available to all users of Debian 7.0, as well as Ubuntu 12.10.

24 Responses to “How to build a bungalow… begin with the chimney”

  1. [...] source: Go to Source Feed source: http://planet.debian.org/rss20.xml License: The original licenses are retained – [...]

  2. [...] source: Go to Source Feed source: http://planet.debian.org/deriv/rss20.xml License: The original licenses are retained [...]

  3. Good example of technology championed by Microsoft, then?

    [reply]

  4. Mono has nothing to Free Software. It’s MS patented mess and should be avoided. I’m dying to see performance gains with mono (lol). Compare this toy to c/c++ engines and you’ll see what real performance means.

    [reply]

    directhex Reply:

    @Pawlo, games aren’t written in one language. The 3D engine is written in one thing, and various other duties like AI and scripting are usually in something else. Lua is a popular choice (check the back of your game manuals, plenty will mention Lua in the copyright rambling). Python is an occasional choice (Civilization 4). UnrealEngine has its own Java-like language, UnrealScript.

    And nowadays, with engines like Unity3D, C# is also a popular choice.

    Mono is larger than Lua, no question there, but it *is* unequivocally a better performer. Take the CryEngine for example, there’s now a project to provide a C# bridge via Mono, and performance is incredible compared to the Lua supported natively by the engine. http://inkdev.github.com/CryMono/

    [reply]

    Jef Spaleta Reply:

    @directhex,

    I’m still waiting for someone to write a dedicated device UI in mono as a new codebase. I’m sort of shocked someone hasn’t done that already and stand it up as an alternative interface to android.

    It seems the the right high level deliverable for mono to shine and be the defining language in the same way java is the defining language for android…without other factors muddying the waters.

    I may personally have lingering issues with mono, but for people who aren’t me and like mono, a pure mono device UI project seems appropriate to spin up and try to make a business out of.

    -jef

    [reply]

    Vadim P. Reply:

    @directhex,

    As someone experienced with Lua, I’m dubious about these claims. If that is really the case, I’m doubting that they’ve used all available tech to them (LuaJIT) and integrated it properly as well.

    There are no benchmarks so there’s not much to say either here – and besides Lua is used for scripting, which you don’t do with C#…

    [reply]

    directhex Reply:

    @Vadim P., Lua shows as 9x slower than Mono on the Alioth language shootout, so I wouldn’t say “no benchmarks”

    And you’re wrong – C# *is* being used for game scripting. That’s the point.

    [reply]

    Vadim P. Reply:

    @directhex, That’s Lua, it’s not LuaJIT… it’s not the quickest Lua available. That in my opinion is a bad comparison.

    LuaJIT used to be there, but it was removed. Here’s proof that it is very, very good at what it does: http://stackoverflow.com/questions/2588071/is-luajit-really-faster-than-every-other-jit-ed-dynamic-languages

    [reply]

  5. Tried installing on Ubuntu 12.04 (using instructions from the screencast) monodevelop installed ok but not monogame.

    Couple of points please:

    * Put the instructions from the video in your post (yes I know what it is but I had to rewind a couple of times to get the package names right).

    * On badgerports website – instructions (and screen captures) for importing badgerports into “Software Sources” are for Ubuntu prior to Unity. Not confusing to me but potentially ambiguous to new Ubuntu 12.04 users.

    Thanks for doing this and good luck :)

    Mark.

    [reply]

    directhex Reply:

    @Mark Fernandes, oh buggeration, I hadn’t thought that the instructions needed updating. I’ll get that done ASAP

    [reply]

    Mark Fernandes Reply:

    @directhex, Followed the updated instructions so I am sure the repository is correctly installed.

    However there is no meta-package called monogame (so instructions in the video are not accurate), instead I had to install four separate monogame related packages via the software centre:
    monodoc-monogame-manual
    monodevelop-monogame
    libomonogame-cil
    libmonogame-cil-dev

    Could you verify why monogame does not install via the apt-get command.

    Thanks

    [reply]

    directhex Reply:

    @Mark Fernandes, huh? Didn’t I say monodevelop-monogame in the video? Can you link to the relevant timestamp?

    [reply]

    Mark Fernandes Reply:

    @directhex, You said at 0:25-0:28 “monodevelop” “monogame”, but you typed “monodevelop-monogame” (hence my original comment of having the instructions in the blog post itself). I only heard you but did not see you type it (as the font was too small for me to read) so when I tried “sudo apt-get install monodevelop monogame” it obviously did not work, now when I try “monodevelop-monogame” all is fine as it tells me I have the latest version.

    Thank you for your prompt replies :)

    [reply]

  6. Interesting stuff! Didn’t know it integrates so well in Monodevelop.

    [reply]

  7. Great news, well done! I first discovered MonoGame when investigating a third-party port of Terraria to Linux. I was amazed that it was possible. I look forward to playing around with it.

    [reply]

  8. This is awesome news, well done guys. It has been interesting to see people previously vocal about there concerns with mono, playing and blogging about mono powered games.

    [reply]

  9. After the failure to port Netflix, I didn’t think Mono would ever be useful. But this extra feature lays a neat pipe down to get games into free desktops and relieve competitive pressures.

    And games aren’t that scientific, so no need for free software versions yet.

    [reply]

    Alan Reply:

    Netflix worked with Moonlight. Unfortunately Netflix were not able to secure a license for their DRM subsystem for the linux desktop.

    [reply]

  10. Hey, where’s the Google-juice-building link love for MonoGame?

    [reply]

    directhex Reply:

    @Jed, good point. Added.

    [reply]

  11. [...] Mono enabling Ubuntu gaming… [...]

  12. [...] Mono enabling Ubuntu gaming… [...]

  13. [...] Mono enabling Ubuntu gaming… [...]

Leave a Reply