This piece was originally published on our game development blog at http://www.funinfused.com/devlog.aspx?blogid=6
Currently two of our games are now available for the Ouya, Abduction Action Plus! and VolChaos. I’d like to get many of our other releases on that platform too (Bad Caterpillar, 2D Voxel Madness, and potentially Hypership Out of Control). Unsurprisingly our sales on Ouya thus far haven’t been good (our total sales so far are nearly $75 after Ouya’s cut) so why would we continue to invest in this platform? While I do see room for growth on Ouya into something bigger (Target kiosks are coming which will help consumer awareness, the number one issue with Ouya in my opinion), that’s not the main or only reason.
All the titles I’ve released so far and plan to port to Ouya in the future were written using XNA. The simplest way to get these games on platforms other than XBLIG is by using MonoGame. While I do really like the consoles, my ultimate goal is to get these releases on PC (and hopefully Steam some day). Simply replacing the XNA pieces with MonoGame pieces (which I have to do for every XNA to PC port) gives me a game that pretty much runs on the Ouya. At that point to do an Ouya release requires really only three areas to address (sometimes four if performance is an issue, but let’s ignore that for today). I should also mention that my Ouya and PC ports use the exact same code base with simple switches in code that handle platform specific features.
First the UI needs to be addressed. Xbox buttons need to be replaced with Ouya buttons. Starting with the port of VolChaos, I’ve been doing my ports in a way that they load different graphic assets depending on the platform I’m building them for. Setting that up is easy and now doing Ouya or PC UI graphics becomes mostly about the time it takes to replace buttons on images.
Second is the screen resolution / sizing. There appears to be a bug in MonoGame when running on the Ouya that doesn’t allow you to specify a screen resolution. I’d like to specify 1280x720 but it seems to instead take the largest size my TV can handle and without digging deep into MonoGame code (which I could since its open source but I won’t because I’m lazy), the easiest way to resolve that is to draw the game at 1280x720 and then resize it to whatever resolution the game ends up running at. This isn’t a bad thing though because it’s pretty close to what I’ll have to do in order for the PC version to handle multiple screen resolutions too.
Finally is handling purchasing. This is the most different piece and likely nothing like what I will do on the PC. I have set this up on two Ouya games so far though and it isn’t a big deal to do again. I've done a good job separating this too so it will be easy to put in PC specific code when I need to.
Given that these three spots aren’t significant work beyond what I’m already doing for future PC ports (likely less work than switching XNA to MonoGame), even in light of poor sales I feel it’s not a bad idea to do the Ouya ports. I’m increasing awareness of Fun Infused Games while expanding to a newer market and who knows, maybe one of my games will hit there. Even worst case, once I get all my games ported over, I should have a little extra income in my coffers ever month for hopefully many years to come.