クラウドでの Unreal Tournament

このセクションでは、Unreal Tournament プロジェクトを、Amazon Web Services (AWS) クラウドインスタンスで動作する Genvid SDK と統合するための手順を紹介します。

Genvid SDK の統合後、クラウドで動作するゲームをセットアップしていない場合、クラウドでの SDK セクションで、概要を参照してください。クラウドで動作するプロジェクトのシンプルなサンプルについては、 クラウドのチュートリアルサンプルを作成する を参照してください。

はじめに

  1. AWS インスタンスを設定して、Genvid SDK で使用できるようにします。詳細については、新しいクラウド環境の設定 を参照してください。
  2. Genvid SDK を Unreal Tournament に統合します。詳細については、Unreal Tournament の統合 を参照してください。

UT4 プロジェクトとクラスタの準備

Unreal Tournament は大規模なゲームで、クラウドへの転送を簡素化するために、いくつかの準備が必要です。

  1. まず、プロジェクトを用意する必要があります。Unreal Engine 解説書 の手順に従う場合、以下の値を使用します。

    • Cooker 設定: Development
    • Platform: WindowsNoEditor

    Unreal Editor から制作するのではない場合、Unreal Engine のルートディレクトリで、以下のスクリプトをコマンドプロンプトにカット&ペーストすることもできます。

    SERVER

    EngineBuildBatchFilesRunUAT.bat BuildCookRun
    -project="UnrealTournament/UnrealTournament.uproject" -noP4
    -platform=Win64 -clientconfig=Development -serverconfig=Development
    -cook -server -serverplatform=Win64 -noclient -compile -stage -pak
    -archive -archivedirectory="UnrealTournamentArchives"
    -map=DM-Underland+Example_Map+UT-Entry -build
    

    クライアント

    EngineBuildBatchFilesRunUAT.bat BuildCookRun
    -project="UnrealTournament/UnrealTournament.uproject" -noP4
    -platform=Win64 -clientconfig=Development -serverconfig=Development
    -cook -compile -stage -pak -archive
    -archivedirectory="UnrealTournamentArchives"
    -map=DM-Underland+Example_Map+UT-Entry -build*
    
  2. アクティブなアーカイブフォルダのコンテンツを Amazon S3 バケットに同期させます。

    aws s3 mb s3://[mys3bucket]/v1/
    aws s3 sync [UT Folder]/ s3://[mys3bucket]/v1/
    
    • [mys3bucket] は AWS S3 バケットのユニーク名です。
    • [UT Folder] はパッケージディレクトリの \\WindowsNoEditor フォルダです。
  3. /samples/ue4/ut4/config/config/cloud.example.hcl のコピーをプロジェクト設定に使用する /samples/ue4/ut4/config/config/cloud.hcl として保存します。

  4. cloud.hcl のバケットを編集して、S3 バケットで動作するようにします。

    config {
      cloud {
        artifact {
          s3url       = "s3://[some_unique_name]/v1/"
          destination = "c:\\game\\"
        }
      }
    }
    
    • s3url は S3 バケットの場所です。
    • destination は、ゲームマシンがダウンロードする保存フォルダです。

    提供された Python スクリプトを使用して、クラウド設定が適切に読み込まれるようになります。

    注釈

    Z: ドライブ (AWS インスタンスのローカルドライブ) を使用して、EBS ボリュームの IO 制限を回避し、ゲーム処理が止まってしまうことがないようにしています。

  5. クラスタが適切に設定されていることを確認します。

    genvid-sdk -c [myclusterid] clean-config
    genvid-sdk -c [myclusterid] load-config-sdk
    genvid-sdk -c [myclusterid] upload-images-sdk --update-config
    genvid-sdk -c [myclusterid] setup
    
    • [myclusterid] は、の設定 中に Genvid クラスタにつけたユニーク名です。
  6. クラスタにプロジェクト定義を読み込みます。

    py ut4.py -c [myclusterid] load
    

アップデートの開始と Web サイトの作成

アップデートサービスが S3 クラスタからゲームマシンにゲームを送信します。この処理には時間がかかるため、Web サイトの作成と設定を行うとよいでしょう。

  1. カスタムジョブを開始して、ゲームを更新します。

    genvid-sdk -c [myclusterid] start update
    
  2. Cluster UI ページの手順を確認してください。

    Logs ページには、アップデートサービスの処理中、Pending と表示され、完了すると緑色に変わります。

    コマンドプロンプトから直接出力することで、処理を確認することもできます。

    genvid-sdk -c [myclusterid] log -t update
    
  3. アップデート実行中、Web サイトを構築して S3 へアップロードできます。

    py ut4.py -c [myclusterid] build-cloud
    py ut4.py -c [myclusterid] upload-images --update-config
    

    2 つ目のコマンドで、Docker イメージがすべて更新されていることを確認します。

ゲームを開始します

更新ジョブが完了したら、ゲームを開始して、結果を Web サイトで確認できます。

  1. Cluster UI を起動します。

    genvid-sdk [myclusterid] monitor
    
  2. Jobs タブをクリックします。

  3. START ALL をクリックします。

    以下のジョブが開始されます。

    • services
    • チュートリアル用アプリケーション
    • Web

    サービスを個別に開始することもできます。

    ジョブステータスが running に変わると、リンクがアクティブになります。

  4. Links セクションで UT4 DEMO をクリックしてチュートリアルを起動します。

  5. 終了後、STOP ALL をクリックするとすべてのサービスが停止します。

コマンドラインから実行することもできます。

  1. ゲームを開始します。

    genvid-sdk -c [myclusterid] start
    
  2. Web ページを開きます。

    genvid-sdk -c [myclusterid] open web
    
  3. 終了したら、ゲームを停止します。

    genvid-sdk -c [myclusterid] stop # Stop the game but not the servers.