🧪

Quest2とAzureのクラウドゲーミングPCでVR配信をする

2023/06/25に公開

はじめに

PCVRをインターネット越しにクラウドに繋いで出来ないか?」と思ったことはありませんか?

AppleのVision PROがその圧倒的な性能とそれを実現する価格で話題になりました。Meta Quest2Pico4などそれよりはずっと低価格スタンドアローンなVR端末はありますが、やはりよりリッチな体験をするにはゲーミングPCに繋いでPC VRにする必要があります。また、私のようにYoutubeやニコニコ動画に配信もしていますが、Quest2単独ではそういった配信も難しいのが現状。

という分けでPC VRをしたい分けなのですが、ゲーミングPCは高いし、旅行先などに持ち込むのも大変ですよね? GeForce NOW とか今は亡きGoogleのStidiaとかストリーミングゲームも結構出来るので、PC VRもインターネット越しに出来ないかとチャレンジをしてみました。

PlutoSphereで最速最短でクラウドVRを楽しむ

この記事では表題の通りAzureにクラウドゲーミングPCを作る事になるのですが、多くの人にとってのおすすめはPlutoSphereを使う事です。
https://www.plutosphere.com/
https://www.oculus.com/experiences/quest/9278005918892166/

これはこれから紹介するようなVRゲーム専用のクラウドPC環境で、これから紹介するような複雑な設定を必要とすることなく、専用アプリをインストールしてすぐにSteam VRをプレイする事が出来ます。

以下の記事が導入の参考になります。
https://netafull.net/vr/0109459.html

出先のホテルでQuest2で実施したところ、Beat SaberVRChatも特に違和感なくプレイ出来ました。すごい! ホテルなのでもちろんWiFi接続ですが偶々ですが妙にネット環境の良いホテルではありました。とはいえ、十分なネット環境があればどこでもPC VRが楽しめるのは朗報ですよね?

価格は1時間あたり $1.99(286円) なので、毎日1時間程度とか、週末に数時間とかであれば実際にゲーミングPCを買うより安い気がしますね。場所も取らないし。継続的に使うなら $19.99(2,873円)月額サブスクリプションに入ると120GBのストレージと16時間分のトークンが付いてくるのでお勧めです。

第三部 完! と言いたいところですが、後もうちょっとだけ続きます。

PlutoSphereに対する不満とAzureへの道

PlutoSphereでほとんどのケースは「これで良いのでは?」 とも思うのですが大きな不満としてVR SNSであるVirtualCastが動作しない事です。VRCとかは動くのに何で!?
私は配信にメインで使ってるのがVキャスなので色々調べてみたところ、どうやらWindows Serverを使ってる場合に問題が出てるのではないか? という気がしてきました。以下の記事を参考にGCPに環境を構築してみたのですが、同様のエラー状況で起動しませんでした。
https://toutounode.hatenablog.com/entry/2022/01/17/002033

想像ですが、なんらかのセキュリティ機能に引っかかってるのだと思います。一応雑にはセキュリティ機能を無効にしたのですが動作せず... 動作環境に当然Windows Serverは無いので仕方が無いですね...

というわけでWindows 10/11をクラウド環境に構築するのが最適解、となるわけですが実はクラウドで利用出来るWindowsはほとんどがWindows Serverなので今回はAzureのAVD(Azure Virtual Desktop)を使ってゲーミングPCを構築し、QuestのVirtualDesktopを利用する事にしました。

Azure Virtual DesktopでゲーミングPCの構築

まずはAzureと契約

まずは、AVDを使ってゲーミングPCの構築をします。以下から「Azure Virtual Desktop を無料で試す」を選んで下さい。既にAzure環境を持ってる人は任意のサブスクリプションで実施してください。
https://azure.microsoft.com/ja-jp/free/virtual-desktop/

以下のようなホーム画面になればOKです。

NWとAVDの構築

VNetの作成

Azureの管理コンソールにログイン出来たらまずは仮想ネットワーク(VNet)を作成します。

いったん、上記以外はデフォルトで問題無いので作成をしましょう。

ホストプールの作成

続いて 「Azure Virtual Desktop」 を選択してホストプールを作成します。今回は1台しか作りませんが、同じ構成のマシンを量産できるので会社等でクラウドPCとして作成する場合に非常に重宝します。

続いて、ゲーミングPC本体となる仮想マシンの設定をします。


画面の通りVMサイズはNV12ads_A10_v5を選ぶ必要があります。AMD EPYC Milan12コア 分, メモリが 110GB , NVIDIA A10 搭載と中々のハイスペックマシンで価格は $1.9/hour となります。

一見するとオーバースペック なのですが、このライン以上でないとVRAMが8GBにならずVirtualDesktopがまともに動作しません。最初Standard_NV6ads_A10_v5で試したらVRAMが4GBしかなくVirutalDesktopも動作しませんし、各種ベンチマークの数字も振るわず、という事で中々の残念クオリティでした。AI学習とかだと良いのかもしれませんがゲーミングPCに向いた構成も将来的には組めると嬉しいですね。

ちなみに初期だとAzureのクォート制限に引っかかって作成出来ない可能性があるので、以下のように増加依頼を出しましょう。

ユーザを割り当てとホストプールの作成

アプリケーショングループの「割り当て」よりVMを適用するアカウントを選択します。今回の場合は通常自分のユーザアカウントです。

最後にホストプールの作成が完了したらワークスペースの作成を行います。

先ほど作成したアプリケーショングループとホストグループを紐づけます。

これで準備は完了です。続いてRemoteDesktopでクラウドPCにアクセスをしてみましょう。以下のページからVMにログインする事が出来ます。
https://client.wvd.microsoft.com/arm/webclient/v2/index.html

以下のようにWindowsの画面が出れば成功ですね!

GPUドライバ

デフォルトではGPUドライバが設定されていないので、性能が出ません。AzureではWindowsからドライバを通常通りインストールするのではなく、VMに移動して「拡張機能とアプリケーション」からNVIDIAのCUDAドライバを探してインストールします。

インストールに成功するとPC側で以下のように確認できるかと思います。

Virtual Desktop向けの設定

Public IPの設定とACL

AVDではRDPを直接インターネットに晒す必要が無いため普通はPrivate IPのみで運用しますが、VirtualDesktopが38810, 38820, 38830, 38840へのアクセスを要求するのでPublic IPを付与した上でACLを開けてやる必要があります。

まずは以下のようにPublic IPをAzure上で作成します。

次にVMにアサインされているNICに先ほど作成したPublic IPを紐づけます。


同じくNICにNSG(所謂ファイアーウォール)を設定してACLを開けます。

インターネットにポート全開放というのもちょっと気持ち悪いので、一応VRHMDが繋いでいる自宅等のPublic IPを確認くんとかhttpbinとかで調べてそちらをアクセス元に指定します。

Virtual Desktopのインストール

AVD側の準備が整ったので、ようやくPCとQuestにVirtualDesktopをインストールとなります。

まずはQuestStoreでVirtualDesktopを購入しQuestにインストールします。
https://www.oculus.com/experiences/quest/2017050365004772/?locale=ja_JP
価格は無料では無く2,208円ほどしますが、標準のAirLinkでの接続と違ってQuestのハンドトラッキングをPCVR側に伝える事が出来るので、普通に自宅の中で使うだけでも十分メリットがあるのでポチってしまいましょう。知らなかったので思わぬ拾い物でした。

続いてPC側にも公式ページからVirtual Streamerアプリをダウンロードしてインストールします。こちらはインストールしたら単純に起動するだけです。
https://www.vrdesktop.net/

Steamのインストールをして、今回の主役であるVirtual Cast及びSteamVRもダウンロードしておきましょう。
https://store.steampowered.com/

インストールが完了したら下記にユーザ名を入れたら完了です。

クラウド環境のVirtualDesktopに接続

それではいよいよ接続です。基本的にはクラウドPC側でVirtual Streamerを起動したら、あとはQuest側でVirtualDesktopを起動するだけです。IPアドレスもパスワードも入れてないのですがどうなってるのか謎です。セキュリティは大丈夫なんだろうか。大丈夫なんだろうけど。

私の自宅からの接続環境では遅延が28msが出ましたので中々な低レイテンシです。自宅でAirLinkを利用しているのとほぼ同じ感覚で利用する事が出来ました。

この状態でクラウドPC側またはVirtualDesktopからSteamVRを起動すれば VirtualCast も問題無く動作させる事が出来ました! 普通にプレイできますし、N AirやOBSを入れれば配信も出来るし、ボイチェンもバ美声とかソフトウェアベースのものなら問題無く動作します。

これで、どこでもVキャスライフを楽しめますね!

まとめ

Azureの画面からGUIで作ったのでちょっと画面がゴチャゴチャしてしまいましたが、慣れてれば比較的簡単にAVDによるクラウドゲーミングPCの構築が出来そうです。
インターネット環境に依存するとはいえ数十msで不満の無いPC VRを体験する事が出来ますので、普段はスタンドアローンだけど、ミクランドはPCVRで楽しみたい! とか、そういうカジュアルそうにも良い気がします。もうちょっと簡単に使えるように、今後色々整理してみたいと思います。とりあえずBicepにしよう。

今回紹介した方法もPlutoSphereも良くも悪くもPC環境ごと再現が要るのですが、(これはAI向けだけど)MicrosoftのHybrid Loopみたいな感じで、普段はQuest単独なんだけど 「ブーストボタン」 みたいなのを押すとクラウドで実行される、みたいなモードがあると面白いかもですねー。
https://build.microsoft.com/en-US/sessions/359d7364-2c4f-4ee3-a150-cd7f39783c27?source=sessions
NVIDIAのCloudXRとかで似たような事できないのかな?

それではHappy Hacking!

Discussion