ローカル環境で試すGameLift Anywhere:オンボーディング機能を使った構築手順まとめ

ローカル環境で試すGameLift Anywhere:オンボーディング機能を使った構築手順まとめ

本記事では、Amazon GameLift Serversのオンボーディング機能を使い、Windows環境でGameLift Servers Anywhereを利用したゲームサーバーの構築手順を紹介します。game server wrapperのビルド、AWS CLIの設定、カスタムロケーションやフリートの作成、ゲームセッションの起動までを具体的に解説しています。
Clock Icon2025.05.16

こんにちは。ゲームソリューション部の出村です。

前回は、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にも記載されています。

  1. ビルド環境の準備
  2. game server wrapperのソースコード取得とビルド
  3. GameLift Serversの環境構築
  4. ゲームセッションの起動

それでは、順を追って構築を進めていきましょう。

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の機能を試すことができます。

初めての方でも、オンボーディング機能を使えば簡単に導入できますので、ぜひ一度試してみてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.