OculusGoでリリースする際のテクニカルレビューポリシーのポイントを整理する

OculusGoでアプリをリリースするときに、下記URLに記載されている要件を満たす必要があるのだが、毎回調べるのも面倒くさかったので、自分が過去にハマったポイントだったり、実装が必要だったりする部分をまとめた。今回、一発でテクニカルレビューは通っているので、問題ないはず。

Mobile Virtual Reality Check (VRC) Guidelines

使用したツール / 環境

  • Unity 2017.3.1f1 (64-bit)

チェック表

OverView(Translation) 対応方法 参考サイト
Headlocked menus and UI elements are generally uncomfortable for the user and should be avoided.(ヘッドロックされたメニューとUI要素は、一般的にユーザーにとっては不快であり、避けるべきです) これは、前回のゲーム作成時、プレイ中にUIをHMDの動きに合わせて常に表示したいたら、NGを食らってしまった。追従する速度を遅くしてもだめだった。この時は対策としてコントローラに追従する方針に変更したら問題なかった。 特になし
When the user presses the back button, the app must either go back one level in your UI or display a menu with an option to quit the app.(ユーザーが戻るボタンを押すと、アプリはUIの1つのレベルに戻るか、アプリを終了するオプション付きのメニューを表示する必要があります。) 参考サイトの「戻るボタンの機能は融通がきかない」の項目を参照 OculusGo用の個人制作ゲームをストアリリース ~ストア審査はパフォーマンス確保との闘い~ - Qiita
The app must detect if the 3DOF controller is set to left-handed or right-handed, and it must function equally well when used with either configuration.(3DOFコントローラが左利きまたは右利きに設定されているかどうかを検出する必要があります。どちらの設定で使用しても機能する必要があります。) TrackPadの設定変更が必要。Left側の変更を忘れずに(参考サイトの「コントローラーの動作は左右両方の手で確認しよう」を参照)。もう一つポイントがあるとしたら、もしコントローラの動きにUIを追従させたい場合、「OculusGoControllerModel」の子オブジェクトにすること。そうしないと、左右を変更した時に前の手のUIが残ってしまう。 同上
The app displays graphics in the headset at 60 frames per second.(このアプリはヘッドセットのグラフィックスを60フレーム/秒で表示します。) これは、もしかしたら一番ネックになるところかもしれないです。OculusGoでは常時60FPSを出す必要があるため、パフォーマンス・チューニングが必要です。参考サイトを参照に、FPSを表示できるようにして、常に実機で確認してました。対策は、前にかいた記事でパフォーマンス・チューニングの方法についてまとめています(”今回かつ私の場合は”ですが)。 【Unity】FPS を画面に表示するスクリプト - コガネブログ / OculusGoアプリのリリースに向けて行ったパフォーマンス・チューニングまとめ - たくあんポリポリ
The app must perform an Oculus Platform entitlement check within 10 seconds of launch and exit the app if the check fails.(アプリは、起動から10秒以内にOculus Platformの資格のチェックを実行し、チェックに失敗した場合はアプリを終了する必要があります) これは、Oculusが提供しているAPIを使用して不正起動がされていないかチェックする機構を実装する必要がある。もっともリジェクトをくらいやすいポイントらしい。実装例があるので参考にすると良い。 Unity Engine Entitlement Checks for Gear VR and Rift | Oculus
The app must request the minimum number of permissions required to function.(アプリは機能するために必要な最小限のアクセス許可を要求する必要があります) 要は、使用されていない機能の権限を入れてはだめですよ。というもの。前回も今回も、スクリプトにあるクラスを見て、自動でそれに必要な権限を入れてしまう。今回はマイクの権限が入っているのだが、実際にマイクは使用しない。この問題は、参考サイトの通りに対応することで解決できる。 Oculus GO アプリで、マイクのパーミッションが出ないようにする - littlewing

まとめ

このあたりは実装が必要なので、うっかり忘れるとリジェクトをくらってしまうので気をつけましょう