Oculus Questを使い始め、色々とゲームで遊んでみている。そのなかでもThe Climbというロッククライミングゲームが、Questならではの機能を十分に活かしならがも、非常にシンプルなゲーム体験を実現できているので、お気に入りのひとつだ。
しかしこのゲーム、操作方法に関してアンチパターンではないかと感じる場面もみられた。例えば以下のような例がある。
- 隣接するX、Yボタンにそれぞれ、致命的機能とそうでない機能が割り当てられている(X:ジャンプ、Y:道案内表示)
- トリガーボタンが「選択」の目的で使用できない
そこで気になったのが、OculusプラットフォームにInterface Guidelineは存在するだろうかということで、調べてみるとそれに近い公式ドキュメントがあった。
Introduction to Best Practices
なかでも、User Inputという項に、コントローラ操作におけるDo/Don’tがまとまっていそうだったので読んでみた。以下に要約してみる。
前書き
- コントローラの機能が異なると、ベストプラクティスも異なる。
- モバイルデバイス用は3DoFに対し、Rift用は6DoF。
- 3DoFコントローラはコントローラの向きトラッキングでき、それに加えて6DoFコントローラは位置もトラッキングできる。
- 3DoFコントローラは位置特定できないために単体使用しかできないが、6DoFコントローラは2つを同時使用することが可能。
一般的な推奨事項
動きの1:1比率
- 現実世界でのユーザーのコントローラーの動きと仮想表現の動きの間に1:1の比率を維持すること
- これに反して動作を誇張する場合は、それが非自然であることが容易にわかるほど誇張するべき(例: 4倍)
標準的なボタンマッピング
- 標準的なボタンマッピングを使用すること
- 特定のボタンや動きが特定のアクションと紐づいていることを継承することで、学習コストを下げる
メニュー
- メニューは視線ベースでなく、コントローラベースとすること
左利きと右利き
- 左利きも右利きもサポートすること
- 2コントローラ時はどちらかの手でインタラクションを、1コントローラ時はシステムの効き手設定を尊重すること
3DoFコントローラにおけるBest Practices
アプリ内のコントローラ表現
以下は行わないこと
- 手や、手を模したオブジェクトとして表現すること
- コントローラがものを掴んだり、操ることができるような示唆をすること
ポインティングデバイス
- 3DoFコントローラはポインティングデバイスとして機能し、ポインティングや選択を直感的に行える
- アプリ内でのコントローラ表示においては、コントローラからレーザーを射出し、それとUI上との交点にカーソル表示することが推奨
ページングやスクロール
- ページングやスクロールの発生するメニュー操作にはタッチパッドを用いること
- タッチパッド上のスワイプ操作によるUIの動きは、それらの方向において一致すること
- 選択行為はなるべく、トリガーおよびタッチパッドクリックのどちらでも行えるようにすること
VR空間の物体への照準
- コントローラでVR内のオブジェクトを狙う場合、光線ポインタ(ray-cast pointer)は常時オンとすることが推奨
- 光線はレンダリングされたコントローラの端から射出すること
物体とのインタラクション
- VR物体とのインタラクション可否を示唆するために、光線ポインタに対して、インタラクティブなオブジェクトは完全な不透明で、そうでないオブジェクトは半透明で描画すること
- VR物体とのインタラクションにおいて、ハイライトやホバー時は物体をわずかに大きくすることで視覚的手がかりを与えること
乗り物の操作
- 乗り物の操作には、コントローラの傾きと舵取りの方向を一致させると良い
- 走行中にトリガーやタッチパッドを使用できるようにすると良い
ベストプラクティスが必要十分に提示されていて、これを読むだけでも、何か作る際のイメージが明確化できそうだ。
ちなみに冒頭で触れたアンチパターンだが、一般的な推奨事項(General Recommendations)における「標準的なボタンマッピング(standard button mapping)」にあたりそうである。