OUYA Publishing
is in the process of testing games in the OUYA Store
for compatibility on Cortex
, Razer's appstore for Forge TV
.
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.
Step 1. Upgrade the OUYA-Everywhere Plugin
OUYA Developers
wanting to publish to the Forge TV
console.
The Forge TV
runs the Android 5.0
OS (API 22).
- Forge TV - Spec details
The Razer Serval
controller is supported by OUYA-Everywhere
on Forge TV
.
- Razer Serval Controller - Spec Details
The OUYA Controller is supported by OUYA-Everywhere
on Forge TV
.
-
Cortex
supportsOUYA-Everywhere
onForge TV
which includes support for many controllers. -
The
review team
testsOUYA-Everywhere
enabled builds onForge TV
after receiving game builds that were submitted through the developer portal. -
Be sure to update 3rd party libraries related to input to ensure
Forge TV
compatibility. (i.e.InControl
*)
OUYA-Everywhere
allows game builds to use the same API for gamepad-input
and in-app-purchases
in order to work on Forge TV
and OUYA
consoles.
The latest 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
- Corona
- GameMaker
- Java
- Marmalade
- MonoGame
- Unity
- *InControl -- If you use InControl for Unity3D, be sure to update your InControl library. For more information, read the InControl documentation on their website.
- Unreal
Applications and games should use the latest OUYA-Everywhere
Plugin for their particular game engine to publish in the developer portal.
Locate the appropriate engine documentation from the above list in order to the newest plugin.
Button images vary on each device. Games can use OUYA-Everywhere
to get the correct button images at run-time. The submission review process checks to see that the correct button images are used.
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 OUYA
or 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.
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 START
and 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 SELECT
or 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.
Before submitting your game to the developer portal, be sure to sign your APK
with the keystore.
Be sure to indicate that the game is compatible on Forge
before submitting.
- The
screensaver
should be disabled while your game is running.
Engine specific details:
Be sure to prepare default
, store
, and 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 Application
element.
android:isGame="true"
API target level 21 or better is needed to assign the inGame
attribute on the application element.
The 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.
See the Android
documentation for more details about Versioning Your Applications.
It will be necessary to increment the android:versionCode
and android:versionName
attributes within the manifest
element for each build.
For example, the first time a build is submitted, the versionCode
and versionName
might look like this.
<manifest
...
android:versionCode="1" android:versionName="1.1">
The next time the build is submitted, the versionCode
and 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.
- With
Settings->Add accessory
open, holdHOME
,BACK
, andPOWER
buttonspressed
down to put theServal
in pairing mode.