Macでもexe形式のゲームがしたい｜EC2インスタンスタイプの変更

## はじめに
**記事の目的と内容の概要:**
MacOSでexe形式のゲームを実行するための解決策として、AWS EC2インスタンスのWindows Serverを利用する方法について説明します。

**対象読者:**
・MacOSでexe形式のゲームを実行できない方。
・AWS EC2の立ち上げができている方。
※AWS EC2の立ち上げがわからない方は、[前回記事](https://qiita.com/FuruFuroof/items/decfd860ebc3cd3b5144)を参考にしてください。

## 目次
１．現行環境の確認
２．目標スペックの確認
３．EC2インスタンスタイプの選定
４．インスタンスタイプの変更
５．新環境の動作確認
６．新環境の総評
７．まとめ
８．おまけ（リモートオーディオ設定）

## １．現行環境の確認
### １-１．現行EC2インスタンスのスペック
[前回記事](https://qiita.com/FuruFuroof/items/decfd860ebc3cd3b5144)では、AWSの無料EC2インスタンスを立ち上げました。
このとき、**インスタンスタイプ**と呼ばれるPCスペックの設定があり、「t2.micro」を選択しておりました。

こちらのスペックは下表のようになります。


| 項目        | 詳細                          |
| ----------- | ----------------------------- |
| インスタンスタイプ | t2.micro                    |
| vCPU        | 1コア                         |
| メモリ      | 1 GB                          |
| ストレージ  | EBSオンリー                   |
| ネットワークパフォーマンス | 低〜中程度                     |
| コスト      | リージョンにより異なる（無料枠対象） |
| 用途        | 低トラフィックのWebサーバ、小規模なデータベース、開発・テスト環境 |


### １-２．ゲーム実行の動作確認
今回は、Unity製のオフラインアクションゲーム[「ニュー・スーパーフックガール」](https://freegame-mugen.jp/action/game_4501.html)をAWS EC2インスタンス上で動作させることを目指します。

まずは現行EC2インスタンス上でゲームを実行し、そのパフォーマンスを評価します。流れとしては以下の通りになります。

**■ パフォーマンス評価の流れ**
① EC2インスタンスにリモートデスクトップ接続する。
②「フリーゲーム夢現」から「ニュー・スーパーフックガール」のzipファイルを[ダウンロード](https://freegame-mugen.jp/action/game_4501.html)して展開する。
③「ニュー・スーパーフックガール」のexeファイルを実行してプレイする。
![WS20240324_000010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/b31fcb3e-2f15-8d5c-5e5f-fc2b6d6393f0.jpeg)


④「タスクマネージャー」を起動して、パフォーマンスを評価する。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/32a6e7b5-03f5-35e2-92a4-f422193d51c2.png)


**■ パフォーマンス評価**
・メモリ不足で、ゲーム進行が不可能なほど動作がカクつく。
・マウス、ボタン操作が１～２秒ほど遅れて反映される。


### １-３．現行環境の総評
現行のEC2スペックでのプレイは不可能。
**現行EC2のインスタンスタイプを変更することで、スペック（メモリ）を向上させる必要がある。**


## ２．目標スペックの確認
**■ ゲームに必要な最低限のスペック**
exe形式のゲームには、それぞれ異なるスペックが要求されますが、一般的には以下のような最低限の要件が考えられます。

| 項目        | 詳細                          |
| ----------- | ----------------------------- |
|  CPU        | 2コア                         　|
| メモリ      | 4 GB                         　 |
| ストレージ  | ゲームが求める容量                  　 |

「ニュー・スーパーフックガール」には、要求スペックの記述が見つからなかったので、これらのスペックを参考に目標を決めようと思います。

そして、今回は後々の展開のことを考えて、上表よりも高いスペックで環境構築することを決めました。

## ３．EC2インスタンスタイプの選定
前述の目標スペックを考慮して、EC2インスタンスタイプを選択する必要があります。

EC2インスタンスタイプの種類・選び方については、[こちらのサイト](https://techblog.forgevision.com/entry/aws-ec2-instance-bgr)がわかりやすくまとめてくださっているので参考にしてください。
また、[AWS公式サイト](https://aws.amazon.com/jp/ec2/instance-types/)にもインスタンスタイプ一覧があるので参考にしてください。

今回は「m5.4xlarge」を選択することに決めました。
こちらがAWS EC2の「m5.4xlarge」インスタンスタイプの性能に関する情報です。

| 項目        | 詳細                          |
| ----------- | ----------------------------- |
| インスタンスタイプ | m5.4xlarge                   |
| vCPU        | **16コア**                        |
| メモリ      | **64 GB**                         |
| ストレージ  | EBSオンリー                   |
| ネットワークパフォーマンス | 高性能                          |
| コスト      | **リージョンにより異なる（無料枠対象外）**  |
| 用途        | データベースサーバ、エンタープライズレベルのアプリケーション、大規模な並列処理作業 |

:::note warn
注意
「t2.micro」のような無料枠以外のインスタンスタイプを利用する場合、**EC2インスタンスの起動時間に応じて料金が発生します。**
時間あたりの料金はスペックに比例する傾向があるので、インスタンスタイプ選定の際には、料金も必ずチェックするようにしてください。
:::


## ４．インスタンスタイプの変更
現行EC2インスタンスのインスタンスタイプを「	m5.4xlarge」に変更することで、スペックを向上させます。
インスタンスタイプを変更する手順は以下の通りです。



① EC2ダッシュボードにアクセス: AWSマネジメントコンソールにログインし、「サービス」から「EC2」を選択

② インスタンスの停止: 変更したいインスタンスを選択し、「アクション」、その後「インスタンスの」から「停止」を選択。その後、インスタンスが完全に停止するまで待つ

③ インスタンスタイプの変更: 停止状態のインスタンスを選択し、「アクション」、「インスタンスの設定」、その後「インスタンスタイプを変更」を選択
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/0e5f6b34-0378-6c6b-0c39-092d9028f442.png)


④「新しいインスタンスタイプ」に「m5.4xlarge」を入力して、「適用」を選択
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/acf1519b-12c7-cb84-10bf-d8698b4ac7d1.png)


⑤ インスタンスの再起動: インスタンスタイプの変更後、インスタンスを再度選択し、「アクション」、その後「インスタンスの状態」から「開始」を選択して、インスタンスを再起動する
![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/34fc86c0-9b35-84f0-195c-e5037e513aca.png)


## ５．新環境の動作確認
インスタンスタイプを変更した新環境で「ニュー・スーパーフックガール」を起動して、そのパフォーマンスを評価します。流れとしては以下の通りになります。

流れとしては以下の通りになります。

**■ パフォーマンス評価の流れ**
① EC2インスタンスにリモートデスクトップ接続する。
②「ニュー・スーパーフックガール」のexeファイルを実行してプレイする。
![WS20240324_000005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/517fe803-802d-c5d9-d7c5-474a5bb71339.jpeg)


③「タスクマネージャー」を起動して、パフォーマンスを評価する。
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/d7950125-6f35-11f6-200d-b1b8bbaac669.png)

**■ パフォーマンス評価**
・メモリ不足が解消され、画面描写が滑らかになった。
・マウス、ボタン操作はワンテンポ（0.3秒ほど）遅れて反映される。これは、リモートデスクトップ接続によるレスポンスの遅延だと思われる。

## ６．新環境の総評
操作がワンテンポ遅れてしまうため、リアルタイム操作が必要なアクションゲームには不向きである。
しかし、ドラゴンクエストのようなRPGやシミュレーションゲームなどはプレイできるレベルです。

:::note info
インフォメーション
今回は高性能な「m5.4xlarge」を選択しているため、その料金も高くなっています。そのため、メモリ使用量などを参考に、用途に合わせたインスタンスタイプを選択することで、料金を抑えることができます。
<dr>
2024/06/09 追記
AWS請求アラームの作成記事を投稿しました。
こちらを参考にアラームを作成することで、予期せぬ高請求を防ぐことができると思います。
[初めてのAmazon CloudWatch設定｜AWS請求アラームの作成（2024年版）](https://qiita.com/FuruFuroof/items/7b4cf7b0e8c8244a36d8)
:::


## ７．まとめ
本記事では、MacOSでexe形式のゲームを実行するための解決策として、AWS EC2インスタンス上にWindows Serverをセットアップし、ゲームをプレイする方法について説明しました。

初期設定としては、「t2.micro」インスタンスが使用されていましたが、ゲームを快適に実行するには不十分であることが判明しました。

そこで、「m5.4xlarge」インスタンスタイプへのアップグレードすることで、ゲーム環境を構築することができました。

## ８．おまけ（リモートオーディオ設定）
リモートデスクトップ接続先のコンピューター音声が聞こえない場合、「リモートオーディオ」という機能を設定してください。
（接続先の音声を接続元で再生する機能）

① デスクトップ画面右下のオーディオアイコンを右クリックして、「Sounds」を選択
![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/43519781-3e7d-2411-1c65-1483a6a6141f.png)

② ポップアップ画面が表示されたら「Yes」を選択
![図7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/240eda86-934f-abad-6ebd-72dfd0cd5941.png)

③ Sounds設定画面が表示されたら「OK」を選択して閉じる
![図8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/4661cee1-58ea-eab1-1641-cd1c5d7a305a.png)