24
23

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 3 years have passed since last update.

AWS EC2にクラウドゲーミングサーバを立ててOculus Quest 2でVRゲームを遊ぶ

Last updated at Posted at 2021-09-27

TL;DR

  • VRゲームをやりたいけど、高スペックGPUのWindowsマシンがない
  • AWS EC2にWindows Serverを立て、Oculus Quest 2を接続してVRゲームをプレイする
  • ゲーミングPCなしでも$1/h程度のコストでVRゲームをプレイ可能

はじめに

VRゲームを遊ぶための大きなハードルとして、高いGPUスペックが求められる点があります。しかしそうしたGPUは仮想通貨マイニング需要などもあり価格が高騰して簡単に入手することができません。そこで時代はクラウド、足りないリソースはクラウドで調達すれば良いのです。

本記事ではAWS EC2のGPUインスタンスを利用してVRゲームを遊ぶ環境を構築し、そこにVRデバイスであるOculus Quest 2で接続する手順をご紹介します。1時間あたり$1ほどののコストは発生するものの、初期費用を低く抑えながらVRゲームを始めることができます。VRを体験してみたいけど機材を整えることにハードルを感じている方は是非お試しください。

利用機材/技術/アプリケーション

EC2インスタンス作成

AWSコンソールにログインしてEC2インスタンスを作成します。マシンイメージはMicrosoft Windows Server 2019 Baseを選択してください。

スクリーンショット 2021-08-29 21.55.47.png

次にインスタンスタイプを選択します。EC2のGPUインスタンスにはg4dng4adの二つのファミリーがあります。前者はNVIDIA T4、後者はAMD Radeon Pro V520というGPUを搭載しています。のちにご紹介するParsec Cloud Preparation Toolがプロセッサの差異を吸収してくれるのでどちらのファミリーを選んでも問題ありません。AWSの紹介文によるとg4adファミリーの方がグラフィックの処理に優れているとのことだったので筆者はそちらを利用しています。

インスタンスタイプは最低限のスペックのg4dn.xlarge/g4ad.xlargeでOKです。

スクリーンショット 2021-08-29 21.56.34.png

イメージとインスタンスタイプを選んだらインスタンスの具体的な設定に進みます。G4インスタンスは高価なのでスポットインスタンスとして利用します。「3.インスタンスの設定」で「スポットインスタンスのリクエスト」にチェックをつけてください。

スクリーンショット 2021-08-29 21.56.55.png

ゲームのダウンロードなどにある程度のストレージが必要なので「4.ストレージ」で適当なサイズのストレージをアタッチしてください。ボリュームタイプは汎用SSDでOKです。

「6.セキュリティグループの設定」ではデフォルトでタイプ:RDPの3389番ポートが開いています。ここに追加でタイプ:カスタムTCPの38810,38820,38830,38840番ポートを解放してください。(重要!)

これらのポートは後述するVirtual Desktopというアプリケーションを使ってOculus Quest 2からこのサーバに接続する際に必要になります1

スクリーンショット 2021-08-29 22.00.21.png

最後に起動ボタンを押すとキーペアの設定モーダルが開きます。何かしらの鍵がAWS上にある場合はそれを利用してもいいですし、新規作成してもOKです。作成する場合はWindows Serverにログインする際に必要になるのでわかりやすいところに保存しておきましょう。

スクリーンショット 2021-08-29 22.02.09.png

RDPで接続

インスタンスの作成が終わったらRDPで接続して環境の設定を行います。作成したインスタンスを選択して「接続」>「RDPクライアント」>「パスワードを取得」で先程設定したキーを使ってRDP用のパスワードを生成します。

RDP接続にはWindowsの場合はOSのリモートデスクトップ機能が使えます。Macの場合はApp Storeから入手できるMicrosoft Remote Desktopを使うのが簡単です。

インスタンスのRDPクライアント画面で表示されたIPアドレスとパスワードを入力して接続します。

使用したEC2インスタンスのRDP用パスワードは初期接続用のものです。このインスタンスをAMIイメージとして保存してから再度立ち上げた場合は再生成できません。

どこかにメモしておく、Windows上でパスワードを変更する、ログイン時にパスワードを要求しないように設定するなどしておくといいでしょう。ただし、パスワードを要求しないようにした場合はRDP用のポートを閉じておいた方がいいと思います。後述するように環境構築以降はPersecで接続するのでRDP用ポートを開けておく必要はありません。

ゲーミングPC環境構築

各種ゲームを実行する環境はParsec Cloud Preparation Toolによって構築するのが簡単です。ついでに低レイテンシでリモート接続できるPersecというアプリケーションがインストールされるので以降はこちらで接続して作業します。

あらかじめローカル環境でPersecのアカウントを作成しておきましょう。

サーバ上でブラウザから以下のリンクを開いて、PowerShellスクリプトをコピペして実行してください。

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" 
$ScriptWebArchive = "https://github.com/parsec-cloud/Parsec-Cloud-Preparation-Tool/archive/master.zip"  
$LocalArchivePath = "$ENV:UserProfile\Downloads\Parsec-Cloud-Preparation-Tool"  
(New-Object System.Net.WebClient).DownloadFile($ScriptWebArchive, "$LocalArchivePath.zip")  
Expand-Archive "$LocalArchivePath.zip" -DestinationPath $LocalArchivePath -Force  
CD $LocalArchivePath\Parsec-Cloud-Preparation-Tool-master\ | powershell.exe .\Loader.ps1  

コマンドラインのメッセージに従ってインストールを進めていきます。Persecのインストールが完了すると画面が開くので、作成したアカウントでログインします。

また処理の途中でGPUドライバーをS3からインストールするためにAWSのアクセスキーの入力を要求されます。AmazonS3ReadOnlyAccessだけを付与したIAMユーザーを作成して、その鍵を入力すればOKです。

スクリーンショット 2021-08-29 22.15.34.png

ローカル環境に戻ってAWSコンソールのIAM>「ユーザー」>「ユーザーを追加」から適当な名前を入力し、「アクセスキー - プログラムによるアクセス」を選択、アクセス権は「既存のポリシーを直接アタッチ」からAmazonS3ReadOnlyAccessを選択します。作成完了画面でシークレットキーをダウンロードできるので保存しておき、アクセスキーと合わせてサーバのPowerShellにコピペしましょう。

スクリーンショット 2021-09-27 15.52.45.png

以上が完了すればPersecで接続してWindows用のゲームをプレイする環境が整っています。以降はPersecで接続した方がレイテンシが低いのでおすすめです。

Oculus Quest 2で接続

次にOculus Quest 2で接続してVRゲームを起動する手順をご紹介します。

まずVRゲームを起動するためのものをインストールしていきます。

Steamは各種ゲームのプラットフォームです。この中でVR用ゲームを入手します。SteamアプリをインストールしたらSteam内でSteam VRをダウンロードしてください。

  • Oculusアプリ

またOculus Quest 2を接続するPCにはOculusのアプリをインストールしておく必要があります。上のリンクからダウンロードできます。

最後にOculus Quest 2からサーバにリモート接続するためにVirtual Desktopというアプリをインストールします。まずOculus Quest 2上のストアで購入して本体にインストールしておきます。

次にサーバ側にもデータ送信用のアプリをインスールします。サイトの「Download Streamer App」からダウンロードしてください。

インストールして起動するとOculusのユーザー名の入力を求められるので入力してください。Oculus Quest 2側からVirtual Desktopを起動してこのサーバに接続できれば成功です。

VRゲーム起動

Virtual DesktopはWindows PC上でSteam VRを起動して、そのVR映像をOculus Quest 2に送信してくれます。つまりOculus Quest 2でSteam VRのゲームを遊ぶことができるということです。

Oculus Quest 2のVirtual Desktopのメニューの「Launch Steam VR」というボタンで起動することができます。Steamでお好きなVRゲームを入手して、Oculus Quest 2でプレイできるようになりました!

ゲームでマイクを使う際に音声を入力できないことがあります。その際はWindowsのマイクのプライバシー設定で「アプリがマイクにアクセスできるようにする」をオンにすると解決する場合があるのでお試しください。

スクリーンショット 2021-09-04 3.25.16.png

ゲームをやり終えたら

スポットインスタンスとして起動しているので、「停止」/「起動」することができません。「終了」のみ可能ですが、インスタンスを終了するとストレージ内容が全て消えてしまいます。なのでその前にAMIイメージを作成するようにしましょう。次回起動時はそのAMIイメージからインスタンスを作成します。多少手間はかかりますがインスタンスの使用料は大幅に削減することができています。

コスト

EC2の利用料金とData Transferを合わせて概ね1時間あたり$1ほどの料金がかかります。AMIを取る際にストレージのスナップショットが保存されますが、そちらも課金対象なので古いものは定期的に消していくといいでしょう。

ゲーミングPCが15万円くらいかかると想定すると、大体1,500時間以上利用するならPCを買ってしまった方が安いという計算になります。かなり本格的なプレイ時間なので、ほとんどの方はクラウド環境の方が大幅にコストを抑えられるでしょう。

参考文献

2

補足

このようなクラウドゲーミング環境を提供するサービスもいくつかあるようです。

ただしいずれも北米でのみサービスを展開しており、日本国内にサーバを立てることができません。AWSなどクラウドに馴染みのある方は自前で用意した方がレイテンシの低い環境を構築することができるでしょう。

また個人的には自前で環境を用意することでEC2などの使い方の勉強になってよかったです。

  1. 接続できなくて困っている時にVirtual DesktopのDiscordチャンネルで質問すると教えてもらえました。ヘルプページにも近しいことが書かれていますが、サーバのポートを開けるという理解までは自力ではたどり着けませんでした。> Can I connect to my computer over the Internet? Yes, make sure "Allow remote connections" is checked in the Streamer window. You'll also need to enable UPnP on your router and the Streamer App will forward the required ports automatically. If you want to manually configure your router, forward TCP ports 38810, 38820, 38830 and 38840. https://www.vrdesktop.net/

  2. VRChat内でこの記事の筆者の方にお会いして、VR温泉に浸かりながら参考にさせていただいたお礼を直接お伝えする機会がありました。面白い世界です。

24
23
0

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
24
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?