格安ノートパソコンでもスト6がしたい！助けて、AWS！！

普段ゲームをしないので、Webブラウザが動けばいい程度のパソコンを使用しています。昔よくやってたスト2の続編が出ると知り、ちょっとやってみたくなったので、なんとかAWSを活用してできないか試してみました。

キーワード

* GPU搭載インスタンス
* NICE DCV


## GPU搭載インスタンス

AWSには高速コンピューティングという区分でGPUを搭載したインスタンスが存在します。
高速コンピューティングにも複数あり、**NVIDIA A100 Tensor Core GPUが8つ** 搭載されているP4インスタンスやAWSが開発した **Trainium**を搭載したTrn1、同じくAWSが開発した **Inferentia2** と搭載したInf2があります。

流石に、スト６をするためにこんなモンスターは不要なので、今回は **g4dn.xlarge** インスタンスを使用しました。

https://aws.amazon.com/jp/ec2/instance-types/g4/

g4dn.xlargeのスペックと価格

**GPU** : 1
**vCPU** : 4
**メモリ (GiB)**	 : 16
**インスタンスストレージ (GB)** : 1 × 125 NVMe SSD
**ネットワーク帯域幅 (Gbps)**	: 最大 25
**EBS 帯域幅 (Gbps)** : 最大 3.5

**オンデマンド料金/時間** : 0.894 USD（東京リージョン）

ゲームは1日1時間(by [高橋名人](https://ja.wikipedia.org/wiki/%E9%AB%98%E6%A9%8B%E5%90%8D%E4%BA%BA))で計算するとひと月たったの**26.82ドル**！

:::note
おそらく、G系インスタンスの特徴は
**G5** : AMD EPYCプロセッサー + NVIDIA A10G Tensor Core GPU
**G5g** : AWS Graviton2プロセッサー + NVIDIA T4G Tensor Core GPU
**G4dn** : 第 2 世代インテル Xeon スケーラブルプロセッサ  + NVIDIA T4 Tensor Core GPUs
**G4ad** : 第 2 世代 AMD EPYC プロセッサ + AMD Radeon Pro V520 GPU
:::

## NICE DCVによる低遅延ストリーミング

NICE DCVとは

> NICE DCV は、**高性能のリモートディスプレイプロトコル**です。さまざまなネットワーク条件で、リモートデスクトップやアプリケーションストリーミングをクラウドやデータセンターからあらゆるデバイスへ**安全に配信**できます。NICE DCV と Amazon EC2 を使用すると、グラフィックスを多用するアプリケーションを Amazon EC2 インスタンス上でリモートで実行できます。**結果をより控えめなクライアントマシンにストリーミング**できるため、**高価な専用ワークステーションが不要**になります。

[管理者ガイド](https://docs.aws.amazon.com/ja_jp/dcv/latest/adminguide/what-is-dcv.html)より抜粋

通信プロトコルはデフォルトで**TCPのWebSocket**が、さらに**UDPのQUIC**を使用することも可能です。
サーバー側をEC2で実行する際は無料で利用できるようです。

また、**コントローラーにも対応**しており、手元のパソコンにUSBで接続したスイッチのプロコン（もどき）を自動で認識してくれました。

詳細なリファレンスはこちらです。

* [管理者ガイド](https://docs.aws.amazon.com/ja_jp/dcv/latest/adminguide/what-is-dcv.html)　・・・　サーバーのインストールなど
* [ユーザーガイド](https://docs.aws.amazon.com/ja_jp/dcv/latest/userguide/getting-started.html)　・・・　クライアントの使い方など

:::note
NICE DCVは[NICE社](https://www.nice-software.com/)の製品のようで、このNICE社はAWSに買収（？）されたようです。そのため、EC2上での利用は無料なんだと思われます。
:::

## GPUドライバーとNICE DCVのセットアップ済みAMI

NICE DCVサーバーのセットアップやGPUのドライバーがインストール済みのAMIが提供されています。
本日時点では以下のものが提供されていました。

* [NICE DCV for Windows (g4 and g5 with NVIDIA gaming driver)](https://aws.amazon.com/marketplace/pp/prodview-67uoddn7zjdxu?sr=0-1&ref_=beagle&applicationId=AWSMPContessa)
* [NICE DCV for Windows (g3, g4 and g5 graphics-intensive instances)](https://aws.amazon.com/marketplace/pp/prodview-3hjza2gbnepkg?sr=0-2&ref_=beagle&applicationId=AWSMPContessa)
* [NICE DCV for Windows (non-graphics-intensive instances)](https://aws.amazon.com/marketplace/pp/prodview-tujxrwmb77kbg?sr=0-3&ref_=beagle&applicationId=AWSMPContessa)
* [NICE DCV for Amazon Linux 2](https://aws.amazon.com/marketplace/pp/prodview-ulbymol35e3ws?sr=0-4&ref_=beagle&applicationId=AWSMPContessa)
* [NICE DCV for Windows (g4ad graphics-intensive instances)](https://aws.amazon.com/marketplace/pp/prodview-fzxvqp2r3vvgc?sr=0-5&ref_=beagle&applicationId=AWSMPContessa)
* [NICE DCV for Amazon Linux 2 (ARM)](https://aws.amazon.com/marketplace/pp/prodview-fzxvqp2r3vvgc?sr=0-5&ref_=beagle&applicationId=AWSMPContessa)

non-graphics-intensive instancesは、T系、M系、C系など、GPUが非搭載のインスタンスタイプ向けのものです。

今回はNICE DCV for Windows (g4 and g5 with NVIDIA gaming driver)を使用しました。

## NICE DCVクライアントのインストール

[NICE社のダウンロードサイト](https://download.nice-dcv.com/latest.html)から最新版のクライアントをダウンロードし、インストールします。ウィザードに従うだけなので特に難しいところもありませんでした。

https://download.nice-dcv.com/latest.html

## ベンチマーク

環境が整ったところで[ベンチマーク](https://www.streetfighter.com/6/benchmark/ja-jp/)を実行してみました。

https://www.streetfighter.com/6/benchmark/ja-jp/

けっかはこちら！ **どーーん！！**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/273ca44e-5f38-bb4c-01ba-39800d16226d.png)

ノーマルセッティングで **問題なくプレイできます** とのことです。
ちなみにグラフィック設定をLOWやLOWESTにすると **快適にプレイできます** となりました。

## 実際にゲームしてみた

動画を取りましたので見てください。（ゲームの下手さは気にしない。。）

動画では伝わりづらいところとしては

* 動画には入ってませんが、音声は上手に再生されます
* 映像もとてもきれいです

### NICE DCVの解像度：1280x720

<iframe width="560" height="315" src="https://www.youtube.com/embed/0q_WdqjPBSw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

かなりカクカクしてます。画面左側のパネルにfpsを表示してますが、画面の変更が殆どない場面では60fps出ていますが、明転/暗転したり技のエフェクトが派手なときは数fps、場合によっては0fpsまで落ちてしまいます。

しかも、ストリーミングが追いついていないだけで、EC2側ではスムーズにゲームが進行しています。ほぼ目隠しでやってるようなものです。

### NICE DCVの解像度を800x600に下げる

NICE DCVで設定できる最低の解像度まで下げて実行しました。

<iframe width="560" height="315" src="https://www.youtube.com/embed/j4pWHWhT63g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

たまにfpsが落ちますが概ね60fpsを維持しています。先程よりは全然ゲームができる状態です。ギリギリOKかギリギリNGかの瀬戸際ぐらいです。**真空波動拳**も狙ったタイミング（？）で出せました。

### ステージの背景がある場合

良さげなので、背景があるステージを選択してやってみました。

<iframe width="560" height="315" src="https://www.youtube.com/embed/lKy_erxpypo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

やはり画面上の変化点が多いとその分転送量が増え、追いつかなくなるようですね。

## 結論

* NICE DCVの解像度：800x600
* 背景なしステージ（トレーニングルーム）を使う

までやらないと、動作しないという結果になりました。
**一生懸命働いて良いパソコン買いましょう**

ただ、格闘ゲームじゃなかったら、意外と使えるジャンルもあるかも（？）と思いました。