Amazon GameLift 入門 #1 サーバービルドのパッケージ

2016.02.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon GameLift に触れてみよう

Amazon GameLift (以下 GameLift) はマルチプレイヤー向けのゲームのサーバーアプリケーションのデプロイや運用、監視などを行うことができるマネージドサービスです。ゲームのために最適化されたサーバーを簡単に構築することができます。

概要は下記をご参照ください。

以下で公開されている「Amazon GameLift Getting Started」に沿って、サンプルプロジェクトを動かしてみたいと思います。

サンプルのゲームサーバーは、ざっくり言うと以下の手順で構築することができます。

  1. サーバービルドのパッケージ
  2. サーバービルドのアップロード
  3. フリートの作成
  4. ゲームセッションの開始

この内容はボリュームが多いので、数回にわたって紹介していきます。

事前準備

GameLift を試すための環境として Amazon Lumberyard (以下 Lumberyard) をセットアップ済みである必要があります。

セットアップ方法については、下記の記事を参考にしてください。

サーバービルドのパッケージ

1. Multiplayer Project の有効化

まず、Lumberyard のランチャーの設定で、デフォルトのプロジェクトを Multiplayer Project にする必要があります。

Summary 画面の「Configure project」をクリックします。

gamelift-01-01

Project Configurator 画面が開きます。この画面ではデフォルトのプロジェクトを設定できます。「MultiplayerProject」を選択し「Set as default」をクリックします。

gamelift-01-02

これで 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

下図のような感じで、ビルドが進みます。ちょっと時間がかかります。

gamelift-01-03

ビルド時、以下のようなエラーが出ることがあります(私の環境では発生しました)。

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 で保存し直します。

gamelift-01-04

参考 : (source code encoding problem) Please DO NOT use over 0x7f character in source code. It will fail on multibyte character system. - Game Dev Forum

ビルドが完了すると 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 を使います。このフォルダに、必要なファイルを追加していきます。

  1. dev/Bin64.Dedicated フォルダを dev/MultiplayerProject_pc_Paks_Dedicated フォルダに移動する
  2. dev/Bin64/Redistributables/Visual Studio 2013 フォルダの中にある vcredist_x64.exe ファイルを dev/MultiplayerProject_pc_Paks_Dedicated フォルダにコピーする
  3. 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 がある画面が表示されます。

gamelift-01-05

この CLI で以下のコマンドを実行します。

map multiplayergame

コンソールに map が読み込めていることを示すメッセージが表示されれば、ひとまず成功です。

gamelift-01-06

最後に以下のコマンドを実行し、ゲームサーバーを終了します。

quit

dev/MultiplayerProject_pc_Paks_Dedicated フォルダの中に新しく user フォルダが生成されていれば、正常に動作していることになります。

gamelift-01-07

まとめ

まだ実際にゲーム画面は出てきていませんが、マルチプレイヤーゲームに必須とも言えるゲームサーバーをひとまずビルドするところまでは終わりました。

次は GameLift にビルドパッケージをアップロードしてみます。

参考