ローカル環境で試すGameLift Anywhere:オンボーディング機能を使った構築手順まとめ
こんにちは。ゲームソリューション部の出村です。
前回は、Amazon GameLift Serverのオンボーディング機能について紹介しました。
今回は、このオンボーディング機能を活用して、実際にGameLift Serverの環境を構築する手順をご紹介します。
この記事では、「GameLiftを使ってみたいけど、何から始めればいいかわからない」という方に向けて説明していきます。
構築環境
GameLift Serversのオンボーディング機能は、ローカルPCやクラウドなど、さまざまな環境で試すことができます。
利用可能なOSは以下の3つです:
- Windows
- Linux
- macOS
また、GameLift Serversでは、ゲームサーバーをデプロイ(配置)するための方法として、以下の3種類の「Fleet(フリート)」が用意されています。
フリートの種類 | 説明 |
---|---|
マネージドEC2フリート | AWSのEC2インスタンス上にサーバーを構築 |
マネージドコンテナフリート | コンテナ環境(例:ECS)でサーバーを構築 |
Anywhereフリート | 自社サーバーやローカル環境など、AWS外部のマシンに構築可能 |
オンボーディング機能では、これらすべてのフリートを試すことができます。
今回は以下の構成で構築を試してみました:
- OS:Windows 11
- フリート:GameLift Servers Anywhere(ローカルPCで動作)
また、GameLiftで動作させるためには、ゲームサーバーの実行ファイル(.exeなど)が必要です。
このファイルは、GameLiftが起動する際に実際に動かすサーバープログラムのことです。
なお、今回の構築では、ゲームクライアント側のソースコード(ゲームのプレイヤー側アプリ)には一切手を加える必要はありません。
手順概要
構築の流れは以下の通りです。
詳細な手順は、GitHub上にある amazon-gamelift-servers-game-server-wrapper(以下「game server wrapper」と記載)のREADMEにも記載されています。
- ビルド環境の準備
- game server wrapperのソースコード取得とビルド
- GameLift Serversの環境構築
- ゲームセッションの起動
それでは、順を追って構築を進めていきましょう。
GameLift Serversの環境を構築
ここからは、実際の構築作業に入ります。
1. ビルド環境の準備
まずは、game server wrapperをビルド(コンパイル)するために必要なツールをインストールします。
以下のソフトウェアが必要です:
- Go言語(バージョン1.18以上)
→ プログラムをビルドするために使用します。 - Makeコマンド(Mac、Linux環境のみ)
→ ビルド手順を自動化するためのツールです。 - AWS CLI(コマンドラインインターフェース)
→ AWSのサービスをコマンドで操作するためのツールです。
WindowsではMakeは不要ですが、GoとAWS CLIは必ずインストールしておいてください。
2. game server wrapperのソースコード取得とビルド
次に、GitHubからgame server wrapperのソースコードを取得し、ビルドします。
以下のコマンドをPowerShellで実行してください:
git clone https://github.com/amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git
cd amazon-gamelift-servers-game-server-wrapper
powershell -file .\build.ps1
⚠️ 注意:PowerShellのスクリプト実行が無効になっている場合、以下のようなエラーが出ることがあります。
このシステムではスクリプトの実行が無効になっているため、ファイル C:\example\amazon-gamelift-servers-game-server-wrapper\build.ps1 を読み込むことができません。
その場合は、以下のように一時的に実行を許可してから再実行してください。
powershell -ExecutionPolicy Bypass -File "C:\example\amazon-gamelift-servers-game-server-wrapper\build.ps1"
ビルドが成功すると、プロジェクト直下に out
ディレクトリが作成され、その中に実行ファイルが生成されます。
3. AWS CLIの設定
GameLift Servers Anywhereを使用するには、AWS CLIを使ってFleet(フリート)を操作する必要があります。
まずはIAM(AWSのユーザー管理サービス)でユーザーを作成し、以下のポリシーを割り当ててください:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"gamelift:ListCompute",
"gamelift:RegisterCompute",
"gamelift:DeregisterCompute",
"gamelift:GetComputeAuthToken",
"gamelift:CreateGameSession"
],
"Resource": "*"
}
]
}
その後、AWS CLIの aws configure
コマンドでアクセスキーなどを設定しておきましょう。
4. カスタムロケーションの作成
GameLift Servers Anywhereでは、AWSリージョンとは別に「カスタムロケーション」という概念を使います。これは、自分のローカル環境やデータセンターを「独自の場所」として登録するためのものです。
ロケーション名には「custom-」を先頭に付ける必要があります。
今回は「custom-tokyo-japan」としました。
5. Anywhereフリートの作成
次に、Anywhereフリートを作成します。
- 名前:任意(例:my-gameserver)
- カスタムロケーション:先ほど作成した「custom-tokyo-japan」
6. game server wrapperの設定
2.でビルドを実行した後はディレクトリ構成は以下のようになっています:
out
└── windows
└── amd64
└── gamelift-servers-anywhere
├── amazon-gamelift-servers-game-server-wrapper.exe
├── config.yaml
この config.yaml
ファイルは、ゲームサーバーの起動設定を記述する重要なファイルです。
ここからgame server wrapperを実行するための準備を進めます。
今回は、ゲームサーバーの実行ファイルを以下のように配置しました:
out
└── windows
└── amd64
└── gamelift-servers-anywhere
├── amazon-gamelift-servers-game-server-wrapper.exe
├── config.yaml
└── myserver
└── gameserver.exe
設定ファイルであるconfig.yamlは以下のように設定しました。
config.yamlの例:
log-config:
wrapper-log-level: debug
anywhere:
provider: aws-profile
profile: fooprofile
location-arn: arn:aws:gamelift:ap-northeast-1:11112222xxxx:location/custom-tokyo-japan
fleet-arn: arn:aws:gamelift:ap-northeast-1:11112222xxxx:fleet/fleet-xxxxxxxx-1111-2222-3333-111111111111
ipv4: 127.0.0.1
ports:
gamePort: 37016
game-server-details:
executable-file-path: ./myserver/gameserver.exe
game-server-args:
- arg: "--port"
val: "{{.GamePort}}"
pos: 0
主に設定が必要な項目は以下の通りです:
パラメータ | 説明 |
---|---|
provider | AWS CLIの認証方式(例:aws-profile) |
profile | 使用するAWS CLIのプロファイル名 |
location-arn | 作成したカスタムロケーションのARN |
fleet-arn | 作成したAnywhereフリートのARN |
executable-file-path | ゲームサーバーの実行ファイルパス |
game-server-args | ゲームサーバーに渡す引数 |
7. game server wrapperの起動
設定が完了したら、以下のコマンドでサーバーを起動します:
./amazon-gamelift-servers-game-server-wrapper
ログが出力され、ゲームサーバーが起動します。
8. ゲームセッションの起動
最後に、ゲームセッションを作成します。これは、ゲーム内でプレイヤーが参加する「部屋」を作るイメージです。ここで指定する引数は、locationやregionはここまでに設定してきた値を参照、fleet-idはAWSのマネージドコンソールを参照するとよいです。
以下のコマンドを実行します:
aws gamelift create-game-session \
--fleet-id fleet-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--game-properties Key=Difficulty,Value=Easy \
--maximum-player-session-count 3 \
--location custom-tokyo-japan \
--region ap-northeast-1
実行すると、セッション情報がJSON形式で返されます。
この情報をもとに、クライアント側の接続処理を行うことができます。
GameLift Server Anywhereのメトリクスを確認すると、ゲームセッションの数などが増えています。
これ以降の処理について
ここまでで、GameLift Anywhereを使ってローカルPC上でゲームサーバーを起動し、セッションを立ち上げるところまで完了しました。
この後は、通常のGameLift Serverの実装と同様に、クライアントからの接続やプレイヤーセッションの管理などの実装をすすめていくことになります。
まとめ
GameLift Servers Anywhereを使えば、AWSのインフラに依存せず、ローカル環境や自社サーバー上でGameLiftの機能を試すことができます。
初めての方でも、オンボーディング機能を使えば簡単に導入できますので、ぜひ一度試してみてください。