Ever since the Ouya successfully kicked off the microconsole concept, several other microconsoles have launched too, including the GameStick, the PS Vita TV, and most recently the Amazon Fire. They exist beside the established home consoles, such as the PlayStation 4, Xbox One, and Wii U, and offer smaller games that are more comparable to mobile titles. Many of these are, in fact, ports of former mobile games.
These microconsoles offer developers a new way to get games out there. They are plugged into TVs, and offer similar processing-power to mobile devices. As most are Android based, such as the Ouya, the GameStick, and the Amazon Fire, creating and porting games for them is much simpler than having to re-create them for each system. Many engines (Unity, Flash, Game Maker) that already offer deployment to Android can be easily adapted to port to microconsoles, and also offer documentation on that process.
I have ported one mobile-game to the Ouya (Vertical Void DX), created one exclusively for it (Strike Craft Copperhead), and helped port one while working for a company, where I also handled the majority of a port to the GameStick. While doing that, we had to adapt the (former) mobile games to the environment of being played on a television instead of a phone or tablet, where we encountered some unforeseen issues.
The lessons below are ones I learned primarily from designing for the Ouya and GameStick, but are valid (and important!) when designing for other microconsoles, too.
Use a High Screen Resolution
The games are going to run on a television, so you should aim for performance on a high resolution: 1080p (1920x1080px) should be the goal. At the very least, a game should run and support 720p (1280x720px) as a basic resolution.
Look for Glitches on Larger Screens
Running a previously mobile-only game on a TV in 1080p means you suddenly have a completely different view of it. What previously might have been invisible could now be a very visible glitch. Edges that are not anti-aliased edges can become more prominent, and what looked good on a small phone may look worse on a TV.
Remember to check for these issues and play through the whole game looking out for them, so that they do not surprise you.
1080p Requires More Processing Power
Having a higher resolution also means having more pixels to crunch, so make sure you test performance. If your game is already straining on mobile devices, outputting more pixels could be an issue.
The Ouya is comparable to a decent Android tablet in terms of performance, so if your game runs on a Nexus 7 there's a good chance it will run well on the Ouya.
Adapt the UI for TV Displays
As there are a wide range of TVs, which include older models, it is not 100% possible to guarantee that the game's image will fit perfectly on every screen.
Older TVs, in particular, tend to overshoot the image at times, cutting off the sides of the screen by a sometimes considerable amount.
To ensure that everything is displayed correctly, every console game needs to have a "safe zone", which is a border on the edge of the screen where nothing critical is shown. On the Ouya, this border is 15% of the screen's width.
This is a screenshot of Strike Craft Copperhead, with the interface as it would appear on a desktop or mobile-game, where UI elements are close to the edge of the screen:
For TVs, however, we need to think of the aforementioned safe zone. Here is the same image with a 15% safe zone marked:
Nothing vital to the game can go into that part, so we must move all interface elements inside it:
In addition, you can add an option for players to adjust the interface position themselves, so that they can make sure it is in a good position, and so make best use of the available screen space.
Add Complete Gamepad Support
Every microconsole game needs to be able to be controlled with a gamepad, which means that some kinds of games (such as strategy games) could be difficult, or even impossible, to control well.
Unless you can come up with a workable control scheme, such genres will remain very difficult to port.
Avoid the Ouya Touchpad
The Ouya controller has a built-in touchpad, so you might assume that mouse-based controls would work well for such games.
However, in practice, the touchpad is really only useful as an emergency input when running mobile apps on the Ouya. It will not work as a mouse substitute, as the speed, sensitivity, and comfort levels barely even approach those of mice.
Make sure that everything works well with just a controller.
Support Xbox, PlayStation, and Other Gamepads
There are ways to recognize what kind of gamepad is connected. Unity, for example, has a function called
Input.GetJoystickNames(), which outputs a string that identifies a controller.
Xbox 360 Controller would show up as
"CONTROLLER (XBOX 360 FOR
WINDOWS)"; a PlayStation 3 controller as
This allows us to differentiate different types of controller, and to tailor the game to work well with all gamepads we want to support.
Hot-plugging is the process of plugging in a device while the software runs. Ideally, we want our games to be able to support that; otherwise, the gamepads we use to control the game would all have to be already plugged in when we load up the game first, and wireless pads would have to be booted up. Then we'd have to make sure the wireless pads don't enter sleep-mode, which would necessitate re-booting the game to prevent such annoyances. This still often props up even in AAA releases.
So, let's not do that. Let's make sure that hot-plugging works.
you already a have a system to recognize what kind of joystick is
plugged in, you can adapt the code right there. What we will need to do
is check which gamepads are connected all the time.
This does not have to happen every single frame, in case you're worried about the processing power. Checking between every frame or every second should suffice.
Design Menu Types to Suit Gamepads
There are different ways to set up menu systems for your games. If your game does not support directional menu controls (via a gamepad or keyboard), it needs to be adapted or rebuilt.
One way to do is to label each function with an image of the corresponding button, as seen here in Strike Craft Copperhead:
A better controller-friendly menu system would be one with highlighted buttons. This feels much better, but is also more difficult to create. Here we can see it in Vertical Void DX:
Regardless of the type of menu, it is always useful to have a "legend", explaining what each button does, like in the image above.
Also, remember to use the established way of using certain buttons. The "lower" action button (A on the Xbox, X on the PlayStation, O on the Ouya) is usually the forward button, while the button on the right is to go back. The central system button should be used to bring up menus or to quit the game.
Use "Side-Loading" to Test Ouya Games
The Ouya offers the ability to run any other Android app out there, without it having to be specifically adapted for the microconsole. This process is called side-loading. When any app is on the system (downloaded via the web, or copied via a USB stick), it can be installed and run.
If you already have an Android game programmed and ready, you can just put it on the Ouya and see how it would work!
Side-loading can also make it easier to deploy to the Ouya. If you have AirDroid running, for example, you can copy new builds via Wi-Fi, which makes the process far quicker and simpler.
Know the Difference Between Ouya and Android
Even though many microconsoles are Android-based, the platforms have to be approached separately.
As we have already discussed, every Android game can also be run on the Ouya. But to become an actual Ouya game, it needs to be adapted and to have all the necessary plugins configured. Some Ouya-specific settings can also override settings in an Android build, so you must consider those separately to prevent problems.
Price Your Games Appropriately
Microconsole games are smaller than AAA-titles, but can be more complex than mobile-titles. The pricing of microconsole games leans closer to the mobile side of things, with prices around $10 being acceptable. Towerfall, one of the most successful Ouya games, had a price of $15 for a long time.
Free-to-play games are also allowed, and microtransactions are supported, at least on the Ouya.
Implement Offline DLC Checks
Usually games check whether the player has bought DLC packs on startup, to make sure they are there before the game starts.
This system breaks, however, when no internet-connection is available.
An alternative would be to use an offline variable, like Unity's PlayerPrefs, to check whether packs were bought. This way, the game with all its content can be played offline too, and a (possibly long) check period at startup can be avoided.
Consider App Store Age Restrictions
Pretty much every major app store (including the iOS App Store and Google Play) restricts "adult" content, and apps for an 18+ years audience are not allowed.
Add a Quit Button
Traditionally, iOS games lack an in-game quit button. On Android, however, those appear quite often.
A quick survey of games on the Ouya store shows that around half have a quit button. It seems worthwhile to add one to our microconsole games as a matter of habit.
We have learned about the major (and some minor) design elements that we have to consider when making a microconsole game. While these aren't the only ones that will come up, this list should give you an idea of what to expect when targeting the microconsole platform.