5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Oculus RiftAdvent Calendar 2018

Day 21

OculusPlatformについて

Last updated at Posted at 2018-12-20

はてなブログに投稿したものを転載しました。

前回

OculusRoomsみたいなアプリを作りたくて、OculusPlatformを使ってみようとなったいきさつを書きました。

OculusRoomみたいなアプリを作りたい - 海外で生活したいXRエンジニアのブログ

今回はOculuPlatformのことはじめを書いていこうと思います。

概要

Introduction to the Platform SDK

The Platform SDK contains features that you can use to create engaging and social game experiences.

ドキュメントによると、OculusPlatformにはソーシャルゲームを作る事が出来る機能が含まれているようです。

使ってみての私の理解は、
OculusPlatformはBaaS(Backend as a Service)だと思っています。

本来サーバーが必要な部分をOculus側が用意してくれていて、機能ごとにAPIが用意されていて、

開発者は必要なAPIを利用するコードを書くだけで、ソーシャルVRを実現できる。

そのAPIを叩きやすくしたものが、OculusPlatformSDK。という認識をしています。

OculusPlatformの機能

OculusGo、特にOculus Roomsをイメージすると分かりやすいかもです。

  • ユーザーはアプリ内で写真を撮りFacebookに投稿することが出来る

    Sharing

  • ユーザーはアプリ内で友人を招待し一緒にゲームをプレイできる

    Rooms

  • ユーザーはアプリ内で音声通話をすることが出来る

    Voice Chat (VoIP)

  • ユーザーはアプリ内で世界中のユーザーとマッチングし一緒に遊ぶことが出来る(Dead and Buriedや、Bigscreen、Oculus Venueをイメージすると良いかもです)

    Matchmaking

これ以外にもOculusが用意してくれている機能をふんだんに使えます!

もちろん、OculusPlatformの機能を使用しなくても出来る機能はあると思います。

OculusPlatformの良いところ

通信をする相手を指定する際にOculusアカウントを簡単に使えるのは便利です。

多分他のネットワークライブラリなどを使う際には、通信する相手を指定するのはちょっと面倒、か、ユーザーにIDを打たせるなどのUIを与えてしまいそうな気がしました。

OculusPlatformの注意点

Oculusデバイスのみしか使えません。(OculusRift, GearVR, OculusGo, OculusQuest...)

Oculusデバイスのみを考えれば良くなるので私は良いな。と思ってました。

が、既存のマルチプレイのゲームをVR化したい、なんて時は使いづらいというかいらないですよね。

でも、そんな人でもOculusStoreに出したいなら、

絶対にやらなきゃいけない事があります。

Entitlement Checkは必須

https://developer.oculus.com/documentation/platform/latest/concepts/pgsg-unity-gsg/

Verifying that the user is entitled to your app is required to sell an app on the Oculus Store.

OculusStoreにアプリを売り出すには、提出するアプリのユーザーが、そのアプリを使う・持つ資格があるか(entitled)を検証する必要があるそうです。

なので、OculusPlatformの機能を使わなくとも、Storeに出したいなら
EntitlementCheckは必須です。

OculusPlatform使ってみる

最初のセットアップは今回ざっくり書きます。

まずはOculusのOculus Developer Dashboardからアプリを作成します。

作った際のappIDというものを控えておく。

参考

https://developer.oculus.com/distribute/latest/concepts/publish-create-app/

↑のCreating an App Page参照

次に、Unityのセットアップをします。

UnityのAssetStoreからOculusIntegrationをインポート。

Unityの上のメニューから、OculusDashboardで作ったアプリのappIDを記述する。

参考

https://developer.oculus.com/documentation/platform/latest/concepts/pgsg-unity-gsg/

↑のConfigure Your Development Environment

かなり飛ばしましたが、これでOculusPlatformを使う下地は整いました。

EntitlementCheck

何か一つGameObjectを作成し、Startなどに下のメソッドを書きましょう。

using Oculus.Platform;

Start()
{
		// Oculus.Platform.Entitlementsのメソッドを呼ぶ
		Entitlements.IsUserEntitledToApplication().OnComplete(IsEntitledCallback);
}

Entitlements.IsUserEntitledToApplicationで、↑で設定したappIDに紐づいたアプリに資格があるかを検証します。

そして検証した結果が、IsEntitledCallback
にMessageとして渡されます。

このCallbackは自分で記述する必要があります。

void IsEntitledCallback(Message msg)
{
    if (msg.IsError)
    {
        // EntitlementCheckに失敗した場合、msg.IsErrorがTrueになる
	   // ①
        return;
    }
		// EntitlementCheckが成功
		// ②
}

1番について。

このエラーをハンドリングするようドキュメントにはあります。

また、アプリを終了するよう促す文言もありました。

You may not allow the user to proceed in your app after a failed entitlement check.

Sampleシーンでは、メソッドを呼び、そこでUnityEngine.Application.Quit()を実行し、アプリを強制終了していました。

2番について。

OculusPlatformを使って実行したいような処理を記述します。

例えば、アプリを使っているユーザーの情報を取得するメソッド

Users.GetLoggedInUser().OnComplete(GetLoggedInUserCallback);

ここのCallbackは割愛しますが、さっきと同じようにMessageをハンドルする処理を書くのみです。

次回

今回はここまでとします。

次回は、私はこれでも失敗したので、OculusDashboardの設定や、Rooms機能について書いていこうと思います。

5
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?