OculusRoomみたいなアプリを作りたい

概要

OculusPlatformSDKを使ってVoIPで音声通話するまでの記事を書きます(の予定です)

今回は、OculusPlatformの最初の使い方を書いていこうと思います。

はじめに

OculusGoでOculusRoomみたいなアプリを作りたい。

みんなそう思いますよね。

私はUnityチョットワカリマス。

なので、VR側のUIはUnityで行こう。

じゃあ、ネットワーク機能ってどうやって実装しよう?

ネットワーク機能の選定

ネットワークって難しい、、

現在エンジニア歴2年目プログラミング歴2年目。

やっぱ楽したいなって思っちゃうんですよね。

私が考えた最初の選択肢は、これ。

  • UNET
    • やっぱりUnity標準!
  • Photon
    • なんだろうこれ。でもみんな使ってるぞ

僕は以前UNETを使ってHoloLensとOculusGoで同期させたことがありました、が、結構苦労しました。

http://motoyama.hateblo.jp/entry/unet-00

その際にお世話になったバイブルがこちらです。

 

この記事を読んでUNETめっちゃ神。。

1つのコードでサーバーもクライアントも書けるなんて最高では??

そんな風に思っていた時期が僕にもありました。

 

いざ実装してみて、自分の理解不足もあり、めちゃくちゃ苦労してしまいました。

なんで同期されてないのか良く分からないなんて事が多発。

実装中にUNETの次のネットワーク機能が完全に出ると発表も受け、モチベーションは一気に下がりました。

今から選択するのは無しとしました。

 

次にPhoton。

こちらも選択しませんでした。

理由は、

  • Unity、Oculus、他のベンダーの製品と繋ぎ合わせるのが怖かった
    • 実際にはかなりVRの事例があるし、みんな使ってました
  • なんかお金かかりそう。。
    • 実際には無料枠もある
  • Unityのバージョンが古そうだった

じゃあどうする?

 

僕はOculusGoだけを対象としたネットワークで良いなって思ってたんです。

 

それじゃ、Oculusが用意したものでいいじゃん!!

OculusPlatformを使おう。

選定理由はこちらです。

  • OculusのAvatarSDKなどと親和性高そう
    • 実際にはPhotonにAvatarを使うサンプルがあった。。
  • Oculusプラットフォームのみでネットワーク構成したかった
    • OculusQuestを遊んでOculusに未来を感じていた
    • ハイエンドなPCを持っているVRユーザーを対象としていなかった
  • 事例が圧倒的に少なかった
    • チャンスだと感じた(ブログを書けるなど)

などなどです。

今となってはPhotonを使った方が良いかも?なんて思ったりしてます。

この理由としては、Oculusを使わずにネットワーク機能の検証が出来ることに尽きます。

 

が、今回の開発で本当にためになったなと感じているのは、

ドキュメントを読む力が圧倒的につきました。

 

今までQiitaやはてぶなど先人の力をフルに活用していた、そっちの方が早かった。

 

けど、凄い先輩によく言われていました。Qiitaを見ずにドキュメントを見ろと。

自分も読みたいと思いつつ、必要性を感じてなかったんです。

だってQiitaにあって、ちょっと変更加えたら実現できちゃう。。。

今回はそんな甘えを一切許さず、ひたすらドキュメントを読んで苦戦し、積み上げていきました。

 

そんな私の苦闘を書いていこうと思います。