7億円当てるまで書き続けるブログ

石油王のみなさーん! お知恵拝借!

AWS EC2インスタンスからSteam Home Streamingでゲームをあそぶ

ハローーーーーー!!! プレジデンテ!!!!!!!(挨拶)

そろそろSteamでTropico 6が出るぞという昨今ですが、Cities: Skylines Industries DLCが出たばかりの市長の皆さんはいかがお過ごしでしょうか。私はDLCやらMODやらでモリモリになったCities: Skylinesを6年前のPCで遊ぶことにそろそろ限界を感じています。しかしいまPCを組むのは時期が悪い[要出典]。

ということで、AWSのEC2インスタンスにSteamをインストールして、ゲームをストリーミングプレイしてみたときのメモです。思っていたほどの遅延もなく、ある程度の妥協があれば快適にプレイができるようになりました。

やりたいこと

Cities: Skylinesというゲームがあります。要するにめちゃくちゃ広い土地でめちゃくちゃいろいろなことができるSimCityです。

store.steampowered.com

いろいろな機能がMODにより追加できるのですが、いかんせんMODをいれるとCPUリソースやらメモリリソースやらをバカ喰いしてしまいますので、高性能なPCがないと快適に遊べません。いまはCPUは6年前のSandy Bridge、RAM16GB、GPUだけは新しめのGeForce GTX 1060という環境で遊んでいるのですが、さすがにそろそろ厳しくなってきました。

しかしこれのために今PCを組もうとすると20万円は吹っ飛んでしまいます。さすがにキツいです。初期投資をおさえつつ利用料金さえ払えばいい感じの環境を貸してくれるところはないでしょうか。ありますね。クラウドです。AWSです。

初期投資をおさえつついい感じの環境で遊ぶため、クラウド環境にゲームを遊ぶためのマシンを立てて、そこからストリーミングプレイを試してみることにしました。

必要なもの

AWSアカウント

今回はAmazon Web Serviceで環境を構築することにしました。Google Cloud PlatformやAzureでも似たようなことはできるとおもいます。

端末

ゲームを遊ぶ物理端末です。Steamホームストリーミングが動く環境、WindowsMacOSLinuxの端末が必要です。今回はWindows10のPCで遊びます。

Steam

ゲームを遊ぶためのプラットフォームです。SteamにはSteamホームストリーミングという機能があり、ストリーミングプレイが可能です。

VPN環境

Steamホームストリーミングは、同一LAN内でしか動作しません。そこでVPNで実際にゲームが稼働する環境と手元の端末をVPNでつなぎ、同一LAN内に見せかけるわけです。

ちょうどウチの無線ルータ( NETGEAR Nighthawk R7000 )にはVPNサーバ機能があり、今回はこの機能を使うことにしました。そういうのがなければSoftEtherを使うのが楽だと思います。

VNC

WindowsのRemote DesktopだけではSteamホームストリーミングを立ち上げることができません。VNCあるいは他のWindowsにリモートアクセスする方法が必要です。

今回はUltraVNCを使いました。

やりかた

EC2インスタンス作成

EC2インスタンスをつくります。詳細な手順はなんかググってさがしてください。

まずIAMロールをつくっておきます。あとからインスタンス内でドライバをインストールするときにS3からドライバをダウンロードしますので、EC2インスタンスにS3を読み込める権限が必要です。

f:id:kiyooka:20181215162152p:plain

そしたらEC2インスタンスを作ります。Windows Server 2016のBaseでつくります。

f:id:kiyooka:20181214215001p:plain

うわ〜〜〜CPU16コアRAM122GBだ〜〜〜〜〜〜〜〜〜

f:id:kiyooka:20181215161802p:plain

さっき作ったIAMロールをつけてあげましょう。

f:id:kiyooka:20181215162720p:plain

ストレージ、プロビジョンドIOPSのSSDを使うと結構値段が張ってしまいます。汎用SSDでもいいとはおもうのですが、今回はお試しと言うことでプロビジョンドIOPSのSSDを使いました。

f:id:kiyooka:20181215162903p:plain

FW、とりあえず端末からのアクセスにおいて全てのポートを許可しました。本来ならRDPとVPNVNCで使うポートだけ開けるべきだと思います。考えるのがめんどくさいのでこうしてしまいましたが、端末が頻繁にアドレスが変わる環境にある場合やこのアドレスをもつ端末の信頼が十分でない場合にはきちんと制限をすべきです。

f:id:kiyooka:20181215163425p:plain

ではやっていきましょう。

NVIDIA Driver

RDPでインスタンスにログインできたら、ソフトウェアをインストールしてきます。まずはNVIDIA Driverを下記に従ってインストールします。

Windows での NVIDIA ドライバーのインストール - Amazon Elastic Compute Cloud

Steam

インストールしましょう。

Steam, The Ultimate Online Game Platform

Windows Server 2016でIEをつかうとドチャクソ強力な制限がかかっているので、すこしめんどくさいです。インターネットオプションから制限をゆるめたほうがやりやすいかとおもいます。

VPN

ウチの場合、無線ルータ Nighthawk R7000にVPNサーバの機能がありますのでそれをつかいます。ここで説明してもしょうがないかと思いますので詳細は書きません。

なお、公式の説明の通りにWindowsクライアントとしてOpenVPNの最新版を使ってしまうとセキュリティ上の制限により使えませんでした。今回はOpenVPN 2.4.0を使いました。必要だから制限を掛けているわけで、あまり褒められたものではありません。このクライアントを使って大事な通信はしないようにしましょう。

既存のVPN環境がない場合、Softetherとか使うのが楽だと思います。

VNC

ここまででSteamホームストリーミングうごくかなと思っていたのですが、動きませんでした。調べてみると、RDPのセッションではNVIDIA Driverが動いてくれないようです。VNCのセッションをつくっておけばNVIDIA Driverも動いてくれるようなので、それをつかいます。

Windows Server側にUltraVNC Serverを、クライアント側にUltraVNC Clientをインストールします。

UltraVNC VNC OFFICIAL SITE, Remote Access, Support Software, Remote Desktop Control Free Opensource

このままだと、RDPのセッション上でVNCが動いてしまうので、セッションが切れてもVNCが動くよう、サービス登録をします。

Online Help - UltraVNC: Remote Support Software, Remote Support tool,Remote Desktop Control, Remote Access Software, PC Remote Control

ここでいったんPCを再起動し、VNCで接続してください。Ctr+Alt+Del送出ボタンでログインをして、接続すると、デスクトップに入れるかと思います。

f:id:kiyooka:20181215171438j:plain

VPNクライアントを起動してSteamを起動、すると手元の端末のSteamでストリーミングするという選択肢が出てくるはずです。

f:id:kiyooka:20181215171757p:plain

接続

Steam Home Streamingではいってみました。

f:id:kiyooka:20181215173414p:plain

いま試すと結構画像粗くなっていますけど、深夜とかに試してみるともっときれいにできました。通信速度の違いでしょうか。

雑感

  • VPNとおしたpingが7msくらいでした。ストリーミングでも結構遅延感じなくてすごい。
  • うまくいったときでも画像はちょっと粗いです。うまくいかない時間帯もあるみたいです。
  • なんやしらんけど画面が紫色になって固まったりします。Cities Skylinesを再起動してロードし直したりしたらなおるけどめどいです。