てんちょーの技術日誌

自分がつまづいたこととかメモ

【UE4】Oculus Preview Appとしてアップする時にチェックしておきたいこと

はじめに

最近はVALUしたり、bitcoinを覗いたりしてます。

valu.is

そしてめちゃ安かったので買ってしまった…

ついさっきRiftのセットアップをして、HoloStickyの前のVRStickyで動作チェックしようと思ってゴニョゴニョしてました。

いろいろ面倒でPreview Appにしてしまえと思ったら、久々にやってハマったところがあったのでメモついでに。

HoloStickyはこちら。

てんちょー@C92 1日目東こ34b委託 on Twitter: "⚡️ "HoloStickyを作るまで" #HoloSticky https://t.co/VVfP3jflEr"

やること

  • entitlement checksを実装する
  • VR Modeで起動するようにする
  • Steam VR Pluginを切る

の3つです。

entitlement checks

なんじゃこりゃ。 こちらを読んで下さい。

qiita.com

端的にまとめると、

  • Online Platform → Online SubSystem Oculus プラグインを有効に
  • プロジェクト名\Config\DefaultEngine.ini に追記
  • Verify Entitlement ノードの追加

です。2つ目の追記事項はこんな感じ そのまま1番下に追加すればいいはず。 OculusAppIdに関してはDeveloper Dashboardで配布用アプリの設定をしてから、https://dashboard.oculus.com/application/“ココ!!”/build のココの部分にある数字の列をコピペしてください。

Oculus Developer Dashboard

[OnlineSubsystem]
DefaultPlatformService=Oculus
[OnlineSubsystemOculus]
bEnabled=true
OculusAppId="IDを入れる"

そしてVerify Entitlement ノードはこんな感じ。どこでもいいのかなこれ。 今回はMotionControllerPawnを使っているので、そのBeginPlayにはさんでます。

f:id:shop_0761:20170803013710p:plain

LatentノードなのでOn SuccessとOn Failure時の処理を決められます。とりあえず元の処理を一番上に繋いでいます。 今回は適当にFailureだったらQuit Gameしてるだけなので、大したことはないです はい。

VR Modeで起動

エディタで実行テストしてると普通にVR Previewできちゃうので忘れがちですが、普通にパッケージングしてもVR Modeにはなりません。 ので、Execute Console Commandを仕込む、起動時に引数でVR Modeにするなどあるかと思います。 けど、面倒いので1番簡単そうなStart In VR にチェックをいれました。

Project Settings → Description の下の方にあります。

f:id:shop_0761:20170803014357p:plain

ここにチェックを入れるとVR Modeで起動してくれます。

Steam VR Pluginを切る

ここまでの2つは実際大したことないのでアレなんですが、これが盲点というか仕様変更があったのかな…?(前はなかった

このPluginが生きているとPackaging後の WindowsNoEditor\Engine\Binaries\ThirdParty 以下にOpenVR のフォルダが出来ます。これがあるとアップロード時に弾かれます。 忘れたまま一度PackagingしてしまうとPluginを切ったとしても残骸として残っている可能性があります。一応確認しましょう。

ただVR Templateから持ってきたMotionControllerPawnなどを使っているとSteamVR Pluginありきの実装になっている部分が一部あるので、 Pluginを無効にしても大丈夫かチェックする必要があります。

今回はMotionControllerPawnの場合で簡単に説明します。というよりMotionControllerですね。

f:id:shop_0761:20170803015612p:plain

こんな感じでSteamVRChaperoneがついてるので、こいつを消したい。 SetupRoomScaleOutline関数で使っているので消しておきます。

f:id:shop_0761:20170803015818p:plain

忘れずにコンポーネントも消しておきましょう。

f:id:shop_0761:20170803020717p:plain

するとGetBoundsが空になるので、適当に配列を間に合わせで入れておけばセーフw

f:id:shop_0761:20170803020003p:plain

Oculus Riftでも境界線を出したい…そんな時もあるかもしれません…そんな時は!

これに書いてます!!買ってね!! alweiさんのブースに委託させていただいているので、当日はそちらにいます。 紙とPDF版を用意していて、PDF版は後日どこかで頒布しようかなーと思っていたり。

まとめ

最後は急に販促的になりましたが、概ねこんな感じでアップロードできるかと思います。 どれもエラーを追いかければなんとかなりますが、事前に知っておくと便利かもしれないですね!

おまけ

ちなみにアップロード時はzipにするんですが、こんな感じにしてVRStickyのフォルダをzipにしてます。

f:id:shop_0761:20170803021434p:plain

こうするとDashboard側でのLauche Fileのパスはこうなります。

VRSticky/WindowsNoEditor/VoiceRecognition.exe

最初は WindowsNoEditor/VoiceRecognition.exe にしてましたが、多少勝手に補完してくれるようです。