クラウドでの Unreal Tournament¶
このセクションでは、Unreal Tournament プロジェクトを、Amazon Web Services (AWS) クラウドインスタンスで動作する Genvid SDK と統合するための手順を紹介します。
Genvid SDK の統合後、クラウドで動作するゲームをセットアップしていない場合、クラウドでの SDK セクションで、概要を参照してください。クラウドで動作するプロジェクトのシンプルなサンプルについては、 クラウドのチュートリアルサンプルを作成する を参照してください。
In This Section
はじめに¶
- AWS インスタンスを設定して、Genvid SDK で使用できるようにします。詳細については、新しいクラウド環境の設定 を参照してください。
- Genvid SDK を Unreal Tournament に統合します。詳細については、Unreal Tournament の統合 を参照してください。
UT4 プロジェクトとクラスタの準備¶
Unreal Tournament は大規模なゲームで、クラウドへの転送を簡素化するために、いくつかの準備が必要です。
まず、プロジェクトを用意する必要があります。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*
アクティブなアーカイブフォルダのコンテンツを Amazon S3 バケットに同期させます。
aws s3 mb s3://[mys3bucket]/v1/ aws s3 sync [UT Folder]/ s3://[mys3bucket]/v1/
[mys3bucket]
は AWS S3 バケットのユニーク名です。[UT Folder]
はパッケージディレクトリの\\WindowsNoEditor
フォルダです。
/samples/ue4/ut4/config/config/cloud.example.hcl
のコピーをプロジェクト設定に使用する/samples/ue4/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 イメージがすべて更新されていることを確認します。
ゲームを開始します¶
更新ジョブが完了したら、ゲームを開始して、結果を 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.