クラウドでの Unreal Tournament

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

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

はじめに

  1. まだインストールしていない場合は、 Genvid Toolbox をインストールします。

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

  3. 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 コマンドを使用してクラスタをセットアップします。

    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 コマンドを使用して、ゲームをアップデートします。

    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 コマンドを使用して、チャンネル、アドレス、およびキーを入力し、ロードします。

    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 をクリックするとすべてのサービスが停止します。

また、 genvid-sdk コマンドを使用して、コマンドラインからすべてを実行することもできます。

  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.