Oculus Platform SDKのサンプルアプリVRHoopsをOculus Goで動かす

# はじめに

VRHoopsはOculus公式のサンプルVRアプリで、バスケ風の動くゴールにボールを入れて点数勝負をするというゲームです。

![VrHoops512.png](https://qiita-image-store.s3.amazonaws.com/0/27267/05bc50bd-f8ef-1277-4614-7140e680d912.png)

[Sample Apps](https://developer.oculus.com/documentation/platform/latest/concepts/book-sampleapp/)に軽く説明がありますが、P2Pで他のユーザとマッチング（[Matchmaking](https://developer.oculus.com/documentation/platform/latest/concepts/dg-matchmaking-1intro/)）できて、オンライン対戦できます。
さらにOculusプラットフォームの機能である、[Leadersboards](https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-leaderboards/)（ランキング）や[Achievements](https://developer.oculus.com/documentation/platform/latest/concepts/dg-achievements/)（トロフィー）も実装しています。

基本的にはREADME通りに動くのですが、ちょこちょこはまったのでチュートリアル形式でまとめておきます。

# 手順

## 前提

UnityとAndroid SDKはインストール済み。

## 1. Oculus Platform SDKをダウンロード

[Oculus Platform SDK | Developer Center | Oculus](https://developer.oculus.com/downloads/package/oculus-platform-sdk/)からダウンロードします。

解凍して `/OVRPlatformSDK_vX.XX.X/Samples/Unity/VrHoops` を適当なフォルダにコピーします。

## 2. Unityで開きます

Unityで `/OVRPlatformSDK_vX.XX.X/Samples/Unity/VrHoops` を開きます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/75e72a5a-0051-78ae-54b2-1f35fe5f4356.png)

## 3. OculusPlatform SDKをインポート

[Assets] > [Import Package] > [Custom Package]から `/OVRPlatformSDK_vX.XX.X/Unity/OculusPlatform.unitypackage` をインポートします。

## 4. Androidプラットフォームに切り替え

[File] > [Build Settings]を開き、[Android]を選択し、[Switch Platform]をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/7db676ab-ed6a-eff6-4c7b-e071a9a5e573.png)

右側の設定はスクリーンショットのようにしてください。

## 5. Player Settingsを変更

先程の[Switch Platform]ボタンの右の[Player Settings]をクリックします。

[Resolution and Presentation] > [Orientation] > [Default Orientation]を `Landscape Left`に設定

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/99d84e83-53ff-96a4-53f1-9c940e7cfa30.png)

[Other Settings]の以下3箇所を修正します。

 * [Package Name]: 一意な名前に（com.xxxx.sample.VrHoopsみたいな）
 * [Minimum API Level]: `Android 5.0 'Lollipop' (API Level 21)`
 * Install Location: `Automcatic`

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/0b0ea6fb-29bb-c3a3-a8a0-0f88ac174b96.png)

[Publishing Settings]の[Create a new keystore]にチェック。
以降の手順は[UnityでGoogle Play公開用のAPKをビルドする方法](http://tech.pjin.jp/blog/2016/04/01/unity_googleplay_apk_build/)を参考にしてください。（キャプチャ取り直すのが面倒なので^^;）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/c683e5eb-59a4-bc73-8d2d-431b76d6696e.png)

## 6. Oculus Developer Dashboardでアプリを作成

1. [Oculus Developer Dashboard](https://dashboard.oculus.com/)を開き、[新しいアプリを作成]をクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/ce27f0a1-0230-ab97-6e54-8975790c9fc7.png)
2. プラットフォームを選択で `Mobile`を選択。
3. 適当なアプリ名（VRHoopsなど）をつけて保存。
4. アプリIDをコピーします。（後から確認するときは[Manage]>[団体名]>[アプリ名]>[APIについて]から確認できます。）

## 7. UnityにOculus Platformの設定

Unityに戻り、メニューから[Oculus Platform] > [Edit Settings]を開きます。

[Gear VR App Id]に先程コピーしたアプリIDをペースト。

[Unity Editor Settings]の[Test User Email]/[Test User Password]にOculusアカウントを入力し[Login]ボタンをクリック。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/b104a949-128b-d855-ae3d-9c8ef42b1fa7.png)

※Facebookでログインしていてパスワードを設定していない方は、[マイプロフィール](https://secure.oculus.com/my/profile/)からパスワードを設定してください。

## 8. Matchmakingの設定

1. Oculus Dashboardで[Manage]>[団体名]>[設定]>[アプリグループ]>[アプリ名(App Grouping)]>[ルームとマッチメイク]を開く。
2. [プールを作成]をクリック。
3. 以下を入力。
 * プールキー: `NORMAL_QUICKMATCH`
 * モード: `Quickmatch`
 * 最小ユーザー数: 2, 最大ユーザー数: 3
 * スキルプール: なし
 * 応答時間を考慮しますか？: いいえ
4. [保存して展開] をクリック。

※詳細はVRHoopsフォルダ内のREADMEを見てください。

## 9. Leaderboardsの設定

VRHoopsではLeaderboards機能でプレイヤーのスコアをランキングします。勝利数ランキングとハイスコアランキングです。

1. Oculus Dashboardで[Manage]>[団体名]>[設定]>[アプリグループ]>[アプリ名(App Grouping)]>[リーダーボード]を開く。
2. [リーダーボードを作成]をクリックし、以下のように入力して作成します。
 * API名: `MOST_MATCHES_WON`
 * 並び順: 数値が大きいほど良い
2. もう一つ作成します。
 * API名: `HIGHEST_MATCH_SCORE`
 * 並び順: 数値が大きいほど良い

## 10. Achievementsの設定

10賞するとトロフィーを上げるように設定します。

1. Oculus Dashboardで[Manage]>[団体名]>[設定]>[アプリグループ]>[アプリ名(App Grouping)]>[アチーブメント]を開く。
2. [アチーブメントを作成]をクリックし、以下のように入力して作成します。
 * API名: `LIKES_TO_WIN`
 * タイトル: 10勝達成
 * 説明: 10勝するとゲットできるよ。
 * 書き込みポリシー: Client Authoritative
 * アチーブメントを非表示にしますか？: チェックしない
 * タイプ: カウント
 * ターゲット: 10

## 11. apkファイルをビルド

Unityで[File] > [Build Settings]を開き、[Build]ボタンをクリックし、apkファイルを作成します。

## 12. Oculus Dashboardでapkファイルをアップロード

Oculus Developer Dashboardで、[Manage]>[団体名]>[アプリ名]>[ビルドを管理]から[ビルドをアップロード]をクリック。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/e42cb04f-45ef-4fb6-0ab7-acd3dde149c5.png)

ALPHAチャンネルの[・・・] > [新しいバイナリをALPHAにアップロード]をクリック。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/e5dfa0dc-14ee-5e20-85df-b57997624fd1.png)

[ファイルを選択]で先ほど作成したapkファイルを選択。

## 13. テストユーザを追加

Oculus Developer Dashboardで、[Manage]>[団体名]>[アプリ名]>[ビルドを管理]からALPHAチャンネルのユーザの追加ボタンをクリック。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/3bea6b2e-5b2f-9f76-192d-a1a81ed6d178.png)

自分やテストしてほしい他のユーザのOculusアカウントのメールアドレスを追加。
招待メールが届くので承認します。

## 14. Oculus Go実機にインストール

ここまでの手順を踏むと、Oculus Go実機で[検索]で「VRHoops」（Dashboardで付けた名前）と検索すると、VRHoopsアプリが見つかりますので、ダウンロードします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/b89a98c2-7eff-2220-df45-56d8352e4446.png)

インストールされると通常通りマイアプリに追加されますので、起動できるようになります。

招待したテストユーザにも同じ手順でインストールしてもらいましょう。

## 15. 動く

※VRHoopsはOculus Go用のアプリではないので、普通のOculus Goアプリと違って視線でポインター操作をします。
[Practice]をクリック？すると一人でゲームができます。

![com.poyonpico.sample.VrHoops-20180808-135101.jpg](https://qiita-image-store.s3.amazonaws.com/0/27267/6c88423d-64cd-f4a3-68c4-cdcc6fc9e86c.jpeg)

## 16. Oculus Platform SDKの機能を試す

Matchmaking、Leaderboards、Achievementsの機能を試すには、もう一台Oculus Goが必要です。

二人とも[Play Online]をクリック？するとMatchmakingの機能で二人で一緒にプレイできます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/6a3ba5db-6854-d0ea-b6a8-177c28092717.png)

以下のようにLeaderboardsもちゃんと機能してランキングが表示されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/27267/2162d57c-1d42-c096-7d94-cc61ab86cd52.png)

Achievementsは10勝しないと取れないので（設定変えればいいんですが）、試してませんがきっと動くでしょう。

# 終わりに

特にコード解説はしませんが、VRHoopsはこの辺のOculus Platform SDKの機能を実装するにはいいサンプルだと思います。

[コピペテック](https://note.mu/copipetech)という取り組みはじめました。いくつかOculus Goチュートリアルを書いているのでよかったらご覧ください。
* [3時間でできるはじめてのOculus Goプログラミング「VRブロック崩し」](https://note.mu/copipetech/n/n3d980a908cb3)
* [Oculus Goで動くVR脱出ゲームをUnityで作ろう](https://note.mu/copipetech/n/nf2d6e15c707f)