クラウドでの Unreal Tournament¶
このセクションでは、Unreal Tournament プロジェクトを、Amazon Web Services (AWS) クラウドインスタンスで動作する Genvid MILE SDK と統合するための手順を紹介します。
Genvid SDK の統合後、クラウドで動作するゲームをセットアップしていない場合、 クラウドでの SDK セクションで、概要を参照してください。クラウドで動作するプロジェクトの簡単なサンプルについては、 クラウドの DirectX サンプルを作成する を参照してください。
In This Section
はじめに¶
- 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.