見出し画像

ゲーミングPCをクラウド上に構築した話

概要

やりたいPCゲームがあったのですが、現PCのスペックが足りずできなかったときに、ふとクラウド上にゲーミングPCを構築してリモートアクセスでできないかと思い至ったので、それを実現した時の話をします。
「AWS Parsec」などで検索するとそれっぽい記事が色々出ますが、それらを参考に自分なりにやったことをまとめてみたという記録です。

やったこと

  1. AWSで仮想サーバーを構築

  2. Parsecで低遅延リモート接続

  3. ParsecをOBSで配信・録画

自前PCからParsec→クラウドにアクセス→ゲーム画面を表示

図解するとこんな感じ。
Parsecを用いてAWS仮想サーバーにアクセスし、ゲームを操作する。
録画や配信はParsecの画面をキャプチャする、という形。

注意

AWSの利用料金がかかります。アクセスした時間の分だけ利用料が増えていくという形式(オンデマンド)。スポットインスタンスという形式の方が安くできるそうですが、ゲーム中に中断されると困るので、オンデマンドに設定してやりました。
今回の記事通りでやると、固定料3.60$ + 通信料0.89$/h かかります。私の場合だとやりたいゲームが1本しかなかったので、そのゲームの利用料と考えれば、ゲーミングPCを買って設定するコストよりは安く上がると思っています。

AWSで仮想サーバーを構築

サーバーを構築するだけであれば、調べながらやればなんとかできました。
ただ後述するParsecとの相性がいいものを構築するのが難しかったですが、この記事通りにやればきっとうまくできるはず。

AWSとは?

大前提の部分なので、知っていたら飛ばしてください。
AWSは「Amazon Web Services」の略で、Amazonが提供するWebサービスの総称です。データベースやストレージなどの利用方法もありますが、今回は仮想サーバーを構築したいので「Amazon EC2 (Amazon Elastic Compute Cloud)」を利用します。
この辺りは公式サイトや「AWSとは」などで調べて頂いた方が分かりやすい記事が出てくると思います。

利用登録をする

Amazonのアカウントはあっても、AWSへの利用登録は必要みたいでした。
Emailやパスワードなどを設定して進めていきます。
住所の項目は英字しか入力できないようでしたが、公式の例にある通りに入力すれば問題なさそうです。
またアカウント登録時に支払情報を入力する必要があったので入力します。
※ベーシックプランであれば、アカウントを作成しただけではまだ請求はされません。AWS内の有料サービスを利用した時点で請求されるようです。

利用設定をする

アカウントを作成したら、最初にやっておいたほうがいい設定が色々あるようです。これは、下記の記事を参考に行いました。

本当はこちらの記事通りにすべての設定を行いセキュリティを向上させるべきなのですが、今回は無料で出来るところの設定のみ行いました。

  • ルートアカウントのMFA設定

  • IAM User / IAM Groupの作成

  • 支払通貨の変更

  • Budgetの設定

  • Cost Explorerの有効化

中でも「IAMユーザー」については後述するParsecの設定で必要になってきますので、ここで取り上げておきます。

IAMユーザーを作成

IAMユーザーとは「Identity and Access Management」ユーザーで、ユーザーごとに認証情報を設定できます。
ユーザー作成時にアクセスキーとシークレットアクセスキーが表示されるので、必ずメモしておいてください。これを後程使用します。

ユーザーを作成するとき、AWS認証情報タイプを「アクセスキー」としてください。

認証情報タイプは「アクセスキー」に

権限は、「AdministratorAccess」としておきました。
ここではユーザーグループを作成し、グループに対して「AdministratorAccess」を割り当てています。

権限は「AdministratorAccess」

次の項目で表示される「タグ」は、今は特に設定は不要でいいと思います。
ユーザーが増えてきた時の管理用タグなので。

設定は上記で完了なので、これでユーザーを作成します。
ユーザーの作成に成功すると、アクセスキーIDシークレットアクセスキーの確認ができるので、忘れずにメモしておきます。
この2つは後程使用します。

※アクセスキーIDは後からでも確認できますが、シークレットアクセスキーはユーザーの作成時にしか確認することができません。この時点で必ず確認しておいてください。

アクセスキーIDの確認

仮想サーバーを作る

この記事を読んでいる人が知りたいのはきっとこの辺りだと思います。
AWSのEC2から、インスタンス(仮想サーバーの単位)を作成していきます。


インスタンスを作成する前に、先行してやっておくことがあります。
アカウントを作成したばかりだと、vCPU(サーバーを動かすための仮想CPU)の使用数が制限されていることがあり、インスタンスを作成ができないことがあります。
現アカウントのvCPUを確認しておきましょう。
EC2の制限から、vCPUを選択します。

vCPU制限を計算

作成したいインスタンスのタイプ(今回であればg4dn.xlarge)を追加します。インスタンスタイプの解説は後述。
現在の制限と必要なvCPUを比較し、足りていればインスタンスを作成してOKですが、足りていなければ制限の引き上げをリクエストする必要があります。アカウント作成時だと0だと思うので、制限を引き上げましょう。

必要なvCPUの確認

リクエスト内容は下記の通りで、インスタンスタイプと新しい制限を入力していきます。
リージョンは東京、インスタンスタイプはAll G instances (g4dn.xlargeを利用したいため)、new limit valueは、上記vCPU確認時に表示された「新しい制限」を入力すれば良いと思います。

リクエスト内容

また、Case descriptionに理由を入力する必要がありますが、おそらく何でも通ると思います。
今回はPCゲームがしたいという理由をうまいこと言い換え「高GPUを用いるアプリケーションの使用」で申請をしました。
制限の解除は申請が多いのか、割とすぐにやってくれます。完了したらメールが来るので待ちましょう。夜中なのに15分くらいで返信がきてびっくりでした。

制限が解除されたら、いよいよインスタンスを作成していきます。


EC2のインスタンス画面で「インスタンスを起動」から作成します。

AMI (Amazon マシンイメージ) は「Windows Server 2022 Base」で、最新のものを選択。ここはやりたいPCゲームの対応OSを選択でいいと思います。

インスタンスタイプは、「g4dn.xlarge」を選択します。
インスタンスタイプは仮想サーバーの性能を左右するもので、使用用途によって様々なタイプが用意されています。しかし多すぎてちょっと分かりづらかったので、調べるのに時間がかかりました……。

最近のPCゲームには高GPUが必要であり、これが搭載されているのがGシリーズになります。WindowsでGシリーズで最新のg4を選択します。
g4はadとdnで違いがありますが、これはGPUの種類が異なるようでした。最初はg4adで試してみましたがどうしてもうまくいかなかったので、g4dnでやりました。おそらくg4adのGPUじゃParsecに対応していない?のかと思いますが、原因はあまり分かっていないです……。
xlargeはサイズで、大きいほど性能や容量が上がっていきます。同シリーズであれば互換性があり、後から増設ができるようなので、最初は一番小さいサイズにしておきます。
上記より、g4dn.xlargeの選択となります。

設定の続きですが、インスタンスタイプを設定した後は、セキュリティグループの設定が必要です。自分のIPアドレスでしか接続できないようにするため、マイIPを追加します。

セキュリティグループの設定

他の設定は、今は特に不要です。何か気になれば調べてください。

インスタンスを作成するタイミングで、キーペアの作成が求められるので作成します。
ここでダウンロードしたキーペアは後程使用するので、大切に保管しておいてください。

キーペアは大切に保管

これでインスタンスは作成できました。早速アクセスしてみましょう。

仮想サーバーにアクセスする

仮想サーバーの設定ができたら、リモートデスクトップでアクセスしてみましょう。
インスタンスの状態が「実行中」であることを確認したら、接続のボタンをクリックします。

インスタンスの状態を確認

次にRDPクライアントを選択し、リモートデスクトップファイルをダウンロードしてください。これを使用して、リモートデスクトップ接続を行います。

インスタンスに接続

パスワードですが、「パスワードを取得」をクリックすると、下記画面に遷移します。ここで先ほど作成した「キーペア」が必要になります。キーペアを読み込んだらパスワードを複合化してください。このパスワードを、リモートデスクトップ接続時に入力します。

キーペアを参照し、パスワードを複合化する

先ほどダウンロードしたリモートデスクトップファイルを起動し、パスワードを入力することで、仮想サーバーにアクセスすることができます。
※下記キャプチャは、いろいろ設定し終わった後なので違うところあると思います。

リモートデスクトップ接続画面

ここで、サウンドが有効になっていないと思うので、サウンドの設定を行います。

サウンドの右クリックメニューから「サウンド」を選択すると、有効にするかどうかを聞かれるので、有効にすることでサウンドの設定は完了します。

やりたいゲームのインストール

私はここのタイミングでゲームをセットアップしておきました。
リモートデスクトップ接続時に、GoogleChromeをインストールしたり、ゲームをダウンロード・インストールしたりをしました。それは各々にお任せします。

このままリモートデスクトップでプレイしてもいいのですが、Parsecを用いて接続した方が低遅延で快適にゲームをプレイできます。

Parsecで低遅延リモート接続

Parsecとは?

Parsecはリモート接続のソフトウェアで、主にゲームをリモートでプレイする時に使用されるようです。今回初めて試してみましたが、遅延がほぼなく操作できたので、絶対に設定しましょう。

設定方法

まずは利用登録。EmailやユーザーIDを登録します。
インストールですが、クライアント側とサーバー側のどちらにも行う必要があります。
クライアント側(操作するPC)は、ただ入れるだけでOKです。
下記画像のようになっていることを確認してください。

サーバー側(クラウド側、EC2)のインストールは特殊なので、気をつけて下さい。下記サイトを参考にさせていただきました。

Ctl + Alt + Del を無効にする作業は、絶対に必要です。じゃないとPersec経由でアクセスができなくなります。

Windows 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

途中でアクセスキーとシークレットアクセスキーの入力が求められます。ここでIAMユーザー作成時に保存しておいたアクセスキーとシークレットアクセスキーを入力してください。
Y/Nの質問が求められますが、大体YでOKです。
インストールが完了したら再起動を行ってください。
※EC2のインスタンスタイプをg4adでやってみたところ、これのインストールがうまくいきませんでした。

再起動が終わったらもう一度リモートデスクトップで接続します。
Parsecがインストールされていることを確認し、起動します。
ログインしたら、Setting → Host から設定を変更します。記事通りにHost NameやBanding limit を変更でOKです。
設定が完了したら、早速Parsec経由で接続してみましょう。

Parsecで接続

クライアント側でParsecを開くと、Computersが増えていると思います。
EC2のコンピューターにConnectしてみましょう。

EC2のコンピューターにConnectしよう

パスワードを求められる場合は入力すればいいですが、鬱陶しいのでadministratorのパスワードはoffにしておきましょう。
接続画面は下記のような感じです。ボタンからメニューを出して色々できます。ボタンの非表示もできるので録画や配信時は非表示にしておいた方がよさそうです。

Parsec経由での接続画面

ゲーム起動

普通に開けば問題ないと思います。
私の場合だと、ダウンロードしたexeファイルを開いてゲームを起動するといった形で。

下記は参考までに、クライアント側PCでの起動時とサーバー側での起動時の比較です。元々の挙動(クライアント側PCでゲーム起動時)がひどいですが、今回作った環境ではヌルヌル動いて最高です。

さて、ゲームをできる環境は出来上がりました。
これを録画や配信したい場合は次の章へ。

ParsecをOBSで配信・録画

OBSとは?

大前提の部分なので、OBSの使い方などは別途調べてください……。
大事な部分だけ下記に載せておきます。

設定方法

  • ウィンドウキャプチャ

  • ウィンドウ:Parsec

  • キャプチャ方法:Windows 10 (1903以降)

ウィンドウキャプチャのプロパティ

これでParsec経由でプレイしているゲームの録画や配信が可能となります。

最後に

所感

ここまで低遅延でアクセスできる現代の技術に驚いたし、低コストでゲーミングPCを疑似的に実現できたのがすごいと思いました。
私の場合だと常時的に高性能PCを必要としていた訳ではないので、そういう方はPC買ったほうがいいかもしれないです。
ただちょっとやりたいPCゲームがあっただけで他に用途はないので、ゲームプレイ時間=接続時間となり、コストも抑えることができています。そういう方にはこの方法はオススメです。
※必要としない時間帯は、インスタンスを停止しておいてください。

クラウドゲーミングはまだ発展途上とどこかで見ましたが、今後のゲームの基盤になってくると思うので、こういうやり方を知っておいて損はないと思います!

最後に、ここまで長文にお付き合いいただきありがとうございました。

宣伝

ゲーム実況やTRPG配信で活動をしています!
よろしければ下記リンクからご視聴いただけるとありがたいです!
今回紹介したやり方でプレイを録画したものもある(投稿予定)ので、もしご興味あれば是非ご覧ください。

参考

下記参考にさせて頂いたサイトです。


この記事が気に入ったらサポートをしてみませんか?