Put Your Game on
OUYA Publishing is in the process of testing games in the
OUYA Store for compatibility on
Cortex, Razer's appstore for
Some games are perfectly functional, whereas other games may have issues with input, and other games may have cosmetic issues with button images.
This document will help you put your game on
Razer Cortex (the storefront for the Forge TV) by making your game
OUYA Everywhere compliant.
Table of Contents
OUYA Developers wanting to publish to the
Forge TV console.
Forge TV runs the
Android 5.0 OS (API 22).
- Forge TV - Spec details
Razer Serval controller is supported by
- Razer Serval Controller - Spec Details
The OUYA Controller is supported by
Forge TVwhich includes support for many controllers.
Be sure to update 3rd party libraries related to input to ensure
Forge TVcompatibility. (i.e.
OUYA-Everywhere allows game builds to use the same API for
in-app-purchases in order to work on
Forge TV and
Engines That Support Forge TV
OUYA-Everywhere adds support for many controllers on the
Forge TV device. The following engines have
Forge TV support and more will be added to this list:
- Adobe Air
- Construct 2
- Cordova -
Accelerated HTML5 wrapper
- *InControl -- If you use InControl for Unity3D, be sure to update your InControl library. For more information, read the InControl documentation on their website.
Step 1. Upgrade the OUYA-Everywhere Plugin
Locate the appropriate engine documentation from the above list in order to the newest plugin.
Step 2. Fix Button Images
Developers can also design custom button images, as long as images reflect
Forge TV A,B,X,Y formatting (see below).
Games need to be updated to use
Cortex button images that had previously used
non-Cortex button images.
Button legends should show the
Forge TV button images. It's best to use the
Cortex API to get the button images at runtime. Alternatively, the button images can be baked or hardcoded into the game.
Step 3. Menu Button Handling
Some games use the OUYA
BUTTON_MENU to start or pause games. On
Forge TV the
OUYA button maps to the
HOME button which opens the
Guide instead. For standard
Android TV controllers the
SELECT buttons have been remapped to the
BUTTON_MENU so games can continue to use the menu button without changing the code. Controllers that don't have a
START button won't be able to trigger a
BUTTON_MENU press in the game (like the
OUYA controller). Games can detect the
onPause event to pause the game which is triggered with the
Guide is opened. Games should make sure they can be started without using the
BUTTON_MENU to maximize controller support.
Step 4. Signing
Be sure to indicate that the game is compatible on
Forge before submitting.
screensavershould be disabled while your game is running.
Engine specific details:
Be sure to prepare
leanback icons for your game. Check out the content review guidelines for details.
On Forge TV, the leanback intent-filter is automatically added to show on the
Android TV launcher.
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="tv.ouya.intent.category.GAME" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter>
By default, the application will appear in the
Apps category. To appear in the
Games category, edit the
AndroidManifest.xml and assign the
isGame attribute on the
API target level 21 or better is needed to assign the
inGame attribute on the application element.
RazerVirtualController example includes controller images for the
Razer Serval Controller. The
RazerVirtualController image resources can be found within the ouya-sdk-examples.
Versioning is critical for every application so that reviewers and users are playing on the right build of your app or game.
Every time a build is submitted for review, the version identifier in the manifest should be changed to a number that is higher than the previous version.
Android documentation for more details about Versioning Your Applications.
It will be necessary to increment the
android:versionName attributes within the
manifest element for each build.
For example, the first time a build is submitted, the
versionName might look like this.
<manifest ... android:versionCode="1" android:versionName="1.1">
The next time the build is submitted, the
versionName should be set higher than the previous version in order to submit an update.
<manifest ... android:versionCode="2" android:versionName="1.2">
The Razer Developer Portal will take you through the setup of
Forge TV for ADB debugging. Debugging and side-loading apps to the
Forge TV requires a male-to-male USB cable.
Settings->Add accessoryopen, hold
presseddown to put the
Servalin pairing mode.