My game submission was just denied, and I was given four items noted by the team (which I assume must all be addressed before the app will be accepted). Three of them are simple nit-picky things which I'll have corrected in a few minutes. The fourth, however, was puzzling to me:
During Install there is mention of the game controlling vibration, there is no vibration support
Well, big duh there is no vibrator support on the OUYA, but my game isn't built to only run on the OUYA. It is built for any Android device, including some that do use the vibrator, and others which don't, like the OUYA. Having the permission in there doesn't break anything, so I don't understand the concern.
I guess my question is, will every game submission be denied if android.permission.VIBRATE happens to be in the manifest? The reason I ask is because I'd prefer not to have to modify the manifest and rebuild a separate APK every type I publish an update (mainly because I am bound to forget to at some point in the future).
Comments
Permissions. Instead of the standard Android behavior where each app has its own custom permissions, we will define a default set of application permissions that will apply to all games.
Sounds like removing the permission every time will be a requirement. Oh well..
Granting the permission does no harm
I understand that the OUYA controller doesn't have a vibrator, but granting this permission does no harm. Graceful failure in the absence of vibration hardware is contractually built into the Android SDK. This is by-design, to alleviate the burden on developers to write lots of conditional logic every time they want to activate vibration. As a real-world example, my Nexus 7 does not have vibration hardware, but I run all sorts of apps that require the vibration permission without any issues whatsoever. As an analogy, you can ask my permission to drive my Ferrari. Even though I don't own a Ferrari, it's still perfectly logical for me to say "Yes!"
Denying the permission causes headaches for developers
On the other hand, there are many existing games on the Google Play store that use the vibrator to provide haptic feedback (for virtual buttons) and a "rumble" experience. For example, Mupen64Plus-AE (which I'm a contributing developer for). Porting these games to the OUYA platform requires us to make a one-off build just for OUYA, with vibration permissions removed and all calls to the vibration API removed. Alternatively we have to insert a bunch of logic that run-time tests for the vibration permission (and we still need to custom build with a one-off manifest). Sure, we can write build scripts to streamline this process, but why make us deal with this at all? This just represents more hoops to jump through and dampens my enthusiasm for the OUYA platform.
If there are any OUYA devs here, I humbly ask you to grant this permission moving forward. Thanks...
FilePwn lead developer
Android Specialist
OUYA
FilePwn lead developer
Android Specialist
OUYA
FilePwn lead developer
Android Specialist
OUYA
FilePwn lead developer
For reference, the 4 issues raised which I was referring to:
1.During Install there is mention of the game controlling vibration, there is no vibration support.
2. In the settings the controller layout does not correctly display the OUYA controller, or naming conventions https://devs.ouya.tv/developers/docs/interface-guidelines
3. Once you enter the controller diagnostics screen, there is no way to navigate out, forcing the user to restart the OUYA console.
4. System button is used as back button, and does not allow navigation back to the OUYA menu/system screen
Let me reiterate that all these items have been addressed, and only #1 is relevant to this thread. #2 took about 2 minutes to correct, and Piers and I discussed #3 and #4 via emails (those turned out to be caused by the isRunningOnOuyaHardware bug where the published ODK version at the time did not match the testers' more updated firmware. That was also a couple-minute fix.)
The assumption that vibration permission is prohibited isn't that hard to make here. Not only is it item #1 on the list of issues, but in the absence of information about which items are critical and which are merely suggestions, whenever 4 issues are raised, then the logical conclusion is that they must all 4 be corrected. If that assumption is wrong, and vibration is allowed, then I apologize (the feedback probably should have been clearer).
Like I said, we have already addressed all 4 issues. The purpose of re-visiting this thread is to to hopefully get official confirmation once and for all on whether OUYA apps are allowed to have vibrate permission or not.
So are they?
@Piers - Why is this question so hard for team OUYA to answer? You guys keep answering this question with more questions. For the third time, Is it possible to install an app with the vibrate permission on the OUYA? A simple yes or no answer will suffice.
FilePwn lead developer
@littleguy77 your question was about permissions, which has now been answered by default. The more important question though was whether exposing this to the user as a feature is a failable issue. It's not, but again it's best to script your APK versions appropriately as it only makes you look good.
You also forget that just because the OUYA controller doesn't have a vibrator doesn't mean the feature is irrelevant on the OUYA platform. Xbox 360 and PC controllers are compatible with OUYA and they do provide vibration support. Keeping the feature in the OUYA build gives users the best experience possible.
FilePwn lead developer
FilePwn lead developer
@Richarmeleon, the only thing requiring a custom APK for OUYA was the lack of vibrate permission in the manifest. I've mentioned this on other threads here, but I do not see the value in making custom APKs when sets of interfaces and features can simply be pipelined in a single APK. If I have a tablet-sized display, optimize the controls for tablets. If I don't have a touchscreen, use controller-based menu navigation and don't show the touchscreen controls. If I don't have a vibrator, don't vibrate. There's no reason to have a completely special build for every system.