004 - Multi-platform Development with MonoGame


MonoGame is an Open Source implementation of the Microsoft XNA 4 Framework. It provides all the basic functionality of a game engine such as rendering, sound and input as well as support for shaders and a content pipeline. MonoGame is a cross-platform game engine through and through. It runs on everything from a PC (Mac, Windows, Linux) to mobile devices (iOS, Android) and consoles (Xbox One, PlayStation 4, Switch). You can either develop on Windows, macOS and Linux, although some targets can only be build on certain platforms.

The entire engine is open source and can be changed or adapted under the Microsoft Public Licence. Written in C# it is a modern, fully managed and extensible engine. Many games have been developed and published using MonoGame including indie hits such as 'Stardew Valley', 'Axiom Verge', 'Bastion', 'Towerfall Ascension' and 'Fez'.

Why MonoGame
The reason I chose MonoGame as my game engine is... not entirely scientific. A couple of years ago I started playing around with XNA as the promise of creating a console game (this was on Xbox 360) was just very appealing. Microsoft was the first console manufacturer in history to open up its platform to indie developers, even providing them with an SDK (XNA). My experiments never went anywhere but when I was going through my books several years later I found one on game development with XNA. So naturally I wondered what happened with XNA and whether it was still a thing on Xbox One. Apparently XNA had been abandoned but it was subsequently recreated and enhanced under the 'MonoGame' moniker.

As I went through the website I got even more excited seeing it was open source, supported by an active community and used by many of my favourite indie games of the past years. Setting it up was easy enough using Visual Studio 2017 on the Mac and I quickly got a 'Hello World' printed on screen. As I also was looking to expand my knowledge on C# (besides Java and Swift) this seemed like a good fit. Additionally I'm a programmer by trade so it made sense (in my mind at least) to go with a basic game engine that is basically a blank slate. As opposed to products such as Unity, GameMaker and Unreal Engine. Only time will tell whether it was the right choice to go with MonoGame, but so far I enjoy the challenge of learning a new language and programming game stuff such as an inventory, quests, procedurally generated levels and basic AI for NPCs.

Resources
There are plenty of resources to get started with MonoGame. I'll list some of them below. Some of these links discuss XNA 4.0 which isn't 100% the same, but close enough to learn and start from (especially the basics).

- MonoGame (download, documentation)
- MonoGame Community
- Game Programming Adventures (Tutorials)
- CodingMadeEasy (Tutorials)
- Packt Publishing (Ebooks)
- MonoGame Samples (Code)

Leave a comment

Log in with your itch.io account to leave a comment.