MECの使用感について、ゲーム(Valheim)を用いて検証

## はじめに

NTTコムウェアでネットワーク系の部署に所属している森と申します。

私は業務の中で、MEC(Multi-Access-Edge Computing)に関わる機会ががあります。

::: note warm
MECとは、Multi-access Edge Computingの略称でデータ処理を行うサーバーをエッジ（利用する端末の近く）に配置することで、低遅延な通信を実現できるものです。
::: 

MECの特徴の中で、低遅延な通信が可能という特徴があるのですが、本当に低遅延なのか疑問を持ちました。
そこでMECサービスの1つであるAWS Wavelengthを用いて、通信速度について検証を行おうと考えました。

速度検証については下記ブログより
https://qiita.com/comware_mori/items/e3416a53324d995d88ff

上記でAWSの通常azとWavelength Zoneにそれぞれサーバーを立てて通信速度を検証したのですが、
思ったより差が得られませんでした。

ただ、数値では差分が見えなかったものの実際のユースケースに即して検証を行うとまた違う結果が見えてくるのかもしれないとも考えました。

そこで、今回はAWSの通常azとWavelength Zoneにそれぞれゲームサーバーを立てて、実際にゲームを操作したときの使用感を比較する検証を行っていきます。

## 試験概要
今回はAWS上の通常azとWavelength zoneにそれぞれゲームサーバー用のEC2を配置し、Valheim (©2021 Coffee Stain Studio Inc.) というゲームを用いてそれぞれのゲームサーバーにアクセスし使用感を比較していきます。

### クライアント側の準備
SteamというPCゲームを購入できるサイトからValheimをダウンロードします。
https://store.steampowered.com/games/?l=japanese

利用するPCにValheimのダウンロードが終わったら準備完了です。

### サーバー側の準備
続いてAWS上にゲームサーバーを立てていきます。
まずは、EC2を通常AZとWavelength Zoneの双方に立てます。

##### EC2設定項目
- AMI：ubuntu22.04
- インスタンスタイプ：t3.xlarge
- その他はデフォルトで設定

また、セキュリティーグループは下記のように設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/ce377583-932b-f783-d666-fe83f009c677.png)

また、EC2以外にはインターネットゲートウェイとキャリアゲートウェイを作成しています。
※キャリアゲートウェイとは、キャリア網からWavelength zone内に入るための入口

構成やPCからの接続のイメージは下記になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/b6559323-0aeb-58b5-9691-8b0d18ce2d43.png)





続いてubuntuに接続して設定を行っていきます。

##### ubuntu設定項目
・Steamcmdインストール
```
# add-apt-repository multiverse; dpkg --add-architecture i386; apt -y update
# apt install -y steamcmd
```

・Valheimサーバーインストール
```
# steamcmd +login anonymous +force_install_dir /valheim +app_update 896660 validate +exit
# apt install -y libpulse0 libpulse-dev libatomic1 libc6
```
・サーバー名設定
```
# vi /valheim/start_server.sh

-------------------------------------
./valheim_server.x86_64 -name "My server" -port 2456 -world "Dedicated" -password "secret" -crossplay
↓
./valheim_server.x86_64 -name "任意のサーバー名" -port 2456 -world "任意のワールド名" -password "任意のパスワード" -crossplay
-------------------------------------

```
My server、Dedicated、secretがそれぞれサーバー名、ワールド名、パスワードになるので
そちらを任意のものに変更します。


・Valheimサーバー起動
```
# cd /valheim
# ./start_server.sh
```

### クライアント側からの接続
AWS Wavelength ZoneにはKDDI網からしかアクセスできないためKDDI網より、通常azに関してはdocomo網よりアクセスします。

早速Valheimを起動して、AWSに立てたゲームサーバーにアクセスしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/64e731e9-96f5-2369-f39b-aec84075d21f.png)


Startボタンを押し進めていくと、ワールドを選択する画面に移ります。
そこで、Add server(サーバーを追加する)ボタンを押すと、IPアドレスを入力するよう求められます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/b1571107-483e-14a5-98fb-4d7f43ec92d9.png)
そこで、通常azに立てたサーバーであればパブリックIPを、Wavelength Zoneに立てたサーバーであればキャリアIPを入力します。

するとサーバーの選択欄に、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/0c697cb7-71f6-377c-997c-aaec2675dbb3.png)
入りたいサーバーのサーバー名が追加されるはずです。
（サーバー名は先ほどエディタで設定したもの）

そしたら、追加されたサーバーを選択し"Connect"を押していきます。
するとパスワードが求められますので、先ほどエディタで設定したパスワードを入力すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/d339dba3-3cc2-7c38-02dd-d4de0a61cbde.png)

ゲームに入れます！

### 試験項目の設定
ゲームに入ることが確認できたので、次は試験項目を設定していきます。
今回の検証では、AWSのWavelengthと通常のazでのネットワーク遅延の差分を確認することが目的です。

そのため、以下の2つの試験項目をメインに設定しました。
- 2つのアカウントで同じ通常azのサーバーに入り、片方のアカウントを操作し、もう片方のアカウントは何も操作せずに画面を比較します
- 2つのアカウントで同じWavelengthのサーバーに入り、片方のアカウントを操作し、もう片方のアカウントは何も操作せずに画面を比較します

上記の項目で試験をすると、端末AはPC上での処理で画面が表示され、
端末Bは、端末Aでのキャラの動きがNWを経由して端末Bの画面に表示されます。

画面間の動作差分がNW遅延時間となるため、2つの環境を比較することで環境間の差分を確認できます。

### 試験結果
2つのPCを用意して、通常azのサーバーに入るアカウント、Wavelength Zoneのサーバーに入るアカウントで利用する端末を分けます。
そしてPCの画面を外側から動画を撮る形で比較できればと思います。

試験結果は以下となります。

通常az
![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/4448e822-0733-3807-51e3-b0ddab293e3f.gif)


Wavelength
![Videotogif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641898/00437801-afde-9530-5502-1704247f7b14.gif)


上記動画を見てもらえれば分かるように、視認できるレベルでWavelengthの方がスムーズに
ゲーム内でキャラクターを操作することができました！


### 振り返り
今回は初めてAWS上にゲームサーバーを立てる経験をしましたが、うまくいかない部分もありました。

例えば、クライアント側からゲームサーバーに入ろうとした際に"Imcompatible version"というエラーメッセージが表示され、ゲームに入ることができなかったことがあります。
ここの原因はクライアントとサーバーのバージョンが異なるためだったので、バージョンを合わせることで解決しました。
（クライアント側は自動的にバージョン更新が行われますが、サーバー側は自動的には更新されないため、このような事態が生じたようです。）

また、試験については予想外の結果が得られたと思いました。
速度検証をした際、通常azとWavelengthで通信速度の差分があまり見られなかったため、今回もそこまで差分が見られないのではないかと思いつつ取り組んでいたのですが、動画を見れば分かるように視認できるレベルで差分が見られたので、検証を行った甲斐があったと感じました。

今ゲームに限らず実際のユースケースに即した検証を行うことで技術の威力より身近に感じることができると思うので、今後もこのような取り組みは続けていきたいなと思いました！

/////////////////////////////////////////////////////////////////////////
※記載されている会社名、製品名、サービス名は、各社の商標または登録商標です
※本記事は2024年8月2日時点での情報です。