クラウドでの Unreal Tournament

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

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

はじめに

  1. AWS インスタンスを設定して、Genvid MILE SDK で使用できるようにします。詳細については、新しいクラウド環境の設定 を参照してください。Twitch でのストリーミングのように SSL でストリーミングを行う必要がある場合は、クラウドクラスタ用の alb_ssl モジュールを使用します。
  2. Genvid MILE SDK を Unreal Tournament に統合します。詳細については、Unreal Tournament の統合 を参照してください。

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

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

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

    • Cooker 設定: Development
    • Platform: WindowsNoEditor

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

    SERVER

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

    クライアント

    Engine\Build\BatchFiles\RunUAT.bat BuildCookRun
    -project="UnrealTournament/UnrealTournament.uproject" -noP4
    -platform=Win64 -clientconfig=Development -serverconfig=Development
    -cook -compile -stage -pak -archive
    -archivedirectory="UnrealTournament\Archives"
    -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/[Windows Folder]
    
    • [mys3bucket] は AWS S3 バケットのユニーク名です。
    • [UT Folder] はパッケージディレクトリの \\WindowsNoEditor フォルダです。
    • [Windows Folder] は、バケットに作成される \\WindowsServer\\WindowsNoEditor フォルダで、このフォルダにアセットが追加される予定です。
  3. /samples/ut4/config/config/cloud.example.hcl のコピーをプロジェクト設定に使用する:file:/samples/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 イメージがすべて更新されていることを確認します。

  4. SSL を使用している間にストリームをウェブサイトに埋め込む必要がある場合は、設定ファイルの embed_ssl キーが true に設定されていることを確認してください。たとえば、Twitch では次のようになります。

    version = "1.7.0"
    
    settings {
        encode {
        stream {
          enable  = true
          service = "twitch"
          // YOU MUST CHANGE THE ADDRESS, CHANNEL AND KEY VALUE
          addr    = "rtmp://<twitch-ingest-server>/app"
          channel = "channelname"
          key     = "live_NNNNNNNN_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        }
      }
        leaf {
        port = 30001
      }
    } // end of settings
    
    link "button" {
      name     = "Twitch Channel"
      template = "http://twitch.tv/${key `genvid/encode/stream/channel`}"
    } // end of link "twitch"
    
    config {
      embed_ssl {
        enabled = true
      }
    } // end of config
    

チャンネル、アドレス、キーを正しく入力してロードします。

genvid-sdk -c [myclusterid] load-config samples/streaming_services/twitch.sample.hcl.

ゲームを開始します

更新ジョブが完了したら、ゲームを開始して、結果を 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.