HIKI Tech Blog

yhikishimaのブログ。ゆるくUE4やUnity、web開発の記事を書いてます。

UE5 + Amazon GameLift でマルチプレイ 導入実装手順 vol.2

1. はじめに

vol.1にて、ローカルでの検証が完了したので、実際にAWS GameLiftにアップロードするまでの手順を記載していきます。

AWSのアカウント作成や、CLIコマンドの設定の仕方などは割愛します。

2. パッケージしたビルドをGameLiftにアップロード

アップロードする前に、起動するためのInstall.batを配置しておきます。

  1. パッケージ化したディレクトリに移動
  2. WindowsServerまで移動する
  3. install.batというファイルを作成
  4. install.batを以下に書き換える
Engine\Extras\Redist\en-us\UEPrereqSetup_x64.exe /install /quiet /norestart /log c:\game\UE5PrereqSetup.log 

次にサーバーのビルドを以下のコマンドでアップロードします。(aws cliが実行できる状態が必須)

aws gamelift upload-build ^
  --operating-system WINDOWS_2012 ^
  --build-root %ビルドしたパス% ^
  --name %ビルドにつけたい名前% ^
  --build-version "0.01" ^
  --region ap-northeast-1

GameLift上で、上記のようになっていれば準備完了。

ここからFleetを作成します。

3. フリートの作成

GameLiftのフリートから フリートの作成を選択します。

すると、フリート作成画面がでてくるので、選択していきます。

ビルドには先ほどアップロードしたビルドが選択できるので、選択します。

  • フリート名 : 管理しやすい名前
  • フリートタイプ:オンデマンド
  • ビルド: 上記でアップロードしたゲームサーバーを選択する
  • インスタンスタイプ: 無料のタイプ(c5.largeなど)
  • ロケーション管理: 日本のリージョン(ap-northeast-1)
  • 起動パス: {プロジェクト名}\Binaries\Win64{プロジェクト名}.exe 同時プロセス: 1
  • ポート範囲: 7777
  • プロトコル: UDP
  • IPアドレス範囲: 0.0.0.0/0
  • その他デフォルト値でよい

上記のような形で設定する。

CLIからも実行可能

aws gamelift create-fleet ^
    --name {フリート名} ^
    --description "{説明}" ^
    --ec2-instance-type c5.large ^
    --region ap-northeast-1 ^
    --locations "Location=ap-northeast-1" ^
    --fleet-type ON_DEMAND ^
    --build-id {GameLiftのビルドID} ^
    --certificate-configuration "CertificateType=GENERATED" ^
    --runtime-configuration "GameSessionActivationTimeoutSeconds=300, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath={起動のexeパス}, ConcurrentExecutions=10}]" ^
    --new-game-session-protection-policy "FullProtection"  ^
    --resource-creation-limit-policy "NewGameSessionsPerCreator=3, PolicyPeriodInMinutes=15" ^
    --ec2-inbound-permissions "FromPort=7777,ToPort=7777,IpRange=0.0.0.0/0,Protocol=UDP" "FromPort=7777,ToPort=7777,IpRange=0.0.0.0/0,Protocol=UDP"  ^
    --metric-groups  "EMEAfleets"

十数分ほど待つと、以下のようにfleetが準備完了になる。

4. 接続して検証

以下のコマンドでセッションを確立させます。

aws gamelift create-game-session --fleet-id {作成したフリートのID} --maximum-player-session-count 2

以下のように、fleet > ゲームセッション から接続できているのが確認できればOK。 記載のある IP アドレス をメモ

あとはローカルで実行したときと同様に、 2台のプレイヤーでEdior実行して、 Open {IP アドレス} で実行。

同じマップに入っていれば成功となります。

あとは、マッチングのルール設定がなどがあるので、別途記載していきます。

参考

Amazon GameLift × Unreal Engines 5 でオンラインマルチプレイゲームを作る - ISID テックブログ

UE4のDedicated ServerをAmazon GameLiftにデプロイしてみる - Qiita