Amazon GameLift 入門 #1 サーバービルドのパッケージ
Amazon GameLift に触れてみよう
Amazon GameLift (以下 GameLift) はマルチプレイヤー向けのゲームのサーバーアプリケーションのデプロイや運用、監視などを行うことができるマネージドサービスです。ゲームのために最適化されたサーバーを簡単に構築することができます。
概要は下記をご参照ください。
- ゲーム開発のためのサービス Amazon Lumberyard & Amazon GameLift が公開! | Developers.IO
- ゲーム開発者向けサービス「Amazon GameLift」の基礎知識 | Developers.IO
以下で公開されている「Amazon GameLift Getting Started」に沿って、サンプルプロジェクトを動かしてみたいと思います。
サンプルのゲームサーバーは、ざっくり言うと以下の手順で構築することができます。
- サーバービルドのパッケージ
- サーバービルドのアップロード
- フリートの作成
- ゲームセッションの開始
この内容はボリュームが多いので、数回にわたって紹介していきます。
事前準備
GameLift を試すための環境として Amazon Lumberyard (以下 Lumberyard) をセットアップ済みである必要があります。
セットアップ方法については、下記の記事を参考にしてください。
サーバービルドのパッケージ
1. Multiplayer Project の有効化
まず、Lumberyard のランチャーの設定で、デフォルトのプロジェクトを Multiplayer Project にする必要があります。
Summary 画面の「Configure project」をクリックします。
Project Configurator 画面が開きます。この画面ではデフォルトのプロジェクトを設定できます。「MultiplayerProject」を選択し「Set as default」をクリックします。
これで bootstrap.cfg
という設定ファイルの sys_game_folder
の設定が MultiplayerProject
に設定されたことになります。
2. Dedicated Server のビルド
サンプルプロジェクトである「Multiplayer Project」のためのサーバー(Dedicated Server と呼ぶ)のバイナリは、コンパイル前の状態で提供されています。そのため、まずはソースコードをビルドする必要があります。コマンドプロンプトで以下のコマンドを実行します。
$ cd C:\Lumberyard\dev $ lmbr_waf.exe configure build_win_x64_profile_dedicated -p game_and_engine --enabled-game-projects MultiplayerProject --progress
下図のような感じで、ビルドが進みます。ちょっと時間がかかります。
ビルド時、以下のようなエラーが出ることがあります(私の環境では発生しました)。
The file contains a character that cannot be represented in the current code page (932). Save the file ...
これはソースコードファイルのエンコードが誤っていることが原因のエラーです。このようなエラーが出たときは対象のファイル (C:\Lumberyard\dev\Code\Framework\AZCore\AZCore\Math\IntersectSegment.h
など) を Visual Studio などで開き、 UTF-8 で保存し直します。
ビルドが完了すると Bin64.Dedicated
というフォルダが生成され、その中に MultiplayerProjectLauncher_server.exe
というファイルが生成されます。このファイルは後ほど使用します。
3. アセットのコンパイル
次に Dedicated Server が使用するアセットファイルをコンパイルします。この作業を実行する .bat
ファイルが用意されています。
このファイルを実行すると、以下の処理が行われます。
- Asset Processor でアセットのソースをコンパイル済みのアセットに変換
- Resource Compiler でコンパイル済みのアセットを
.pak
にパッケージング
$ cd C:\Lumberyard\dev $ BuildMultiplayerProject_Paks_PC_dedicated.bat
処理が正常に終了すると MultiplayerProject_pc_Paks_Dedicated
フォルダの中に .pak
ファイルが生成されます。
4. GameLift にアップロード可能なビルドパッケージの作成
ここまでで、ゲームサーバーの素材となるファイル群の作成が終わりました。次にこれらのファイルを GameLift にアップロードできるよう、1フォルダの中で構成していきます。これをビルドパッケージと呼びます。
ビルドパッケージには、以下のファイルが必要です。
install.bat
ファイル- ゲームサーバーのバイナリ
- ゲームサーバーの実行に必要な依存関係のあるファイル
アップロードするフォルダそのものは MultiplayerProject_pc_Paks_Dedicated
を使います。このフォルダに、必要なファイルを追加していきます。
dev/Bin64.Dedicated
フォルダをdev/MultiplayerProject_pc_Paks_Dedicated
フォルダに移動するdev/Bin64/Redistributables/Visual Studio 2013
フォルダの中にあるvcredist_x64.exe
ファイルをdev/MultiplayerProject_pc_Paks_Dedicated
フォルダにコピーするinstall.bat
ファイルをdev/MultiplayerProject_pc_Paks_Dedicated
フォルダに新規作成する(以下のソースにする)
vcredist_x64.exe /q
ここまでで GameLift にアップロードするビルドパッケージの作成は完了です。
5. ゲームサーバーのローカルでの実行
GameLift にアップロードする前に、ゲームサーバーが正常に動作するかローカルで実行しておきましょう。
エクスプローラで dev/MultiplayerProject_pc_Paks_Dedicated/Bin64.Dedicated
フォルダを開き、MultiplayerProjectLauncher_Server.exe
を実行します。
下部に CLI がある画面が表示されます。
この CLI で以下のコマンドを実行します。
map multiplayergame
コンソールに map
が読み込めていることを示すメッセージが表示されれば、ひとまず成功です。
最後に以下のコマンドを実行し、ゲームサーバーを終了します。
quit
dev/MultiplayerProject_pc_Paks_Dedicated
フォルダの中に新しく user
フォルダが生成されていれば、正常に動作していることになります。
まとめ
まだ実際にゲーム画面は出てきていませんが、マルチプレイヤーゲームに必須とも言えるゲームサーバーをひとまずビルドするところまでは終わりました。
次は GameLift にビルドパッケージをアップロードしてみます。