クラウドでの Unreal Tournament
このセクションでは、Unreal Tournament プロジェクトを、Amazon Web Services (AWS) クラウドインスタンスで動作する Genvid MILE SDK と統合するための手順を紹介します。
Genvid SDK の統合後、クラウドで動作するゲームをセットアップしていない場合、 クラウドでの SDK セクションで、概要を参照してください。クラウドで動作するプロジェクトの簡単なサンプルについては、 クラウドの DirectX サンプルを作成する を参照してください。
このセクションの内容
はじめに
AWS インスタンスを設定して、Genvid MILE SDK で使用できるようにします。詳細については、新しいクラウド環境の設定 を参照してください。Twitch でのストリーミングのように SSL でストリーミングを行う必要がある場合は、クラウドクラスタ用の alb_ssl モジュールを使用します。
Genvid MILE SDK を Unreal Tournament に統合します。詳細については、Unreal Tournament の統合 を参照してください。
UT4 プロジェクトとクラスタの準備
Unreal Tournament は大規模なゲームで、クラウドへの転送を簡素化するために、いくつかの準備が必要です。
まず、プロジェクトを用意する必要があります。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*
アクティブなアーカイブフォルダのコンテンツを 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
フォルダで、このフォルダにアセットが追加される予定です。
/samples/ut4/config/config/cloud.example.hcl
のコピーをプロジェクト設定に使用する:file:/samples/ut4/config/config/cloud.hcl として保存します。cloud.hcl
のバケットを編集して、S3 バケットで動作するようにします。config { cloud { artifact { s3url = "s3://[some_unique_name]/v1/" destination = "c://game//" } } }
s3url
は S3 バケットの場所です。destination
は、ゲームマシンがダウンロードする保存フォルダです。
提供された Python スクリプトを使用して、クラウド設定が適切に読み込まれるようになります。
注釈
Z:
ドライブ (AWS インスタンスのローカルドライブ) を使用して、EBS ボリュームの IO 制限を回避し、ゲーム処理が止まってしまうことがないようにしています。クラスタが適切に設定されていることを確認します。
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 クラスタにつけたユニーク名です。
クラスタにプロジェクト定義を読み込みます。
py ut4.py -c [myclusterid] load
アップデートの開始と Web サイトの構築
アップデートサービスが S3 クラスタからゲームマシンにゲームを送信します。この処理には時間がかかるため、Web サイトの作成と設定を行うとよいでしょう。
カスタムジョブを開始して、ゲームを更新します。
genvid-sdk -c [myclusterid] start update
Cluster UI ページの進行の確認を参照してください。
Logs ページには、アップデートサービスの処理中、Pending と表示され、完了すると緑色に変わります。
コマンドプロンプトから直接出力することで、処理を確認することもできます。
genvid-sdk -c [myclusterid] log -t update
アップデート実行中、Web サイトを構築して S3 へアップロードできます。
py ut4.py -c [myclusterid] build-cloud py ut4.py -c [myclusterid] upload-images --update-config
2 つ目のコマンドで、Docker イメージがすべて更新されていることを確認します。
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 サイトで確認できます。
Cluster UI を起動します。
genvid-sdk [myclusterid] monitor
Jobs タブをクリックします。
START ALL をクリックします。
以下のジョブが開始されます。
services
チュートリアル用アプリケーション
Web
サービスを個別に開始することもできます。
ジョブステータスが
running
に変わると、リンクがアクティブになります。Links セクションで UT4 DEMO をクリックしてチュートリアルを起動します。
終了後に、 STOP ALL をクリックするとすべてのサービスが停止します。
コマンドラインから実行することもできます。
ゲームを開始します。
genvid-sdk -c [myclusterid] start
Web ページを開きます。
genvid-sdk -c [myclusterid] open web
終了したら、ゲームを停止します。
genvid-sdk -c [myclusterid] stop # Stop the game but not the servers.