game dev on aws...パッケージング(ue4 sample, paragon:agora) 24 自動テスト 4...

55
Game Dev on AWS ゲーム開発環境のクラウド化によるベネフィット シリコンスタジオ株式会社 テクノロジー事業本部 プロジェクト管理部 副部長 営業企画部 副部長 向井 亨光 氏 アマゾン ウェブ サービス ジャパン株式会社 Amazon Game Services & Studios Japan Engineering Manager 下田 純也

Upload: others

Post on 09-Sep-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Game Dev on AWSゲーム開発環境のクラウド化によるベネフィット

シリコンスタジオ株式会社

テクノロジー事業本部 プロジェクト管理部副部長 兼 営業企画部副部長

向井亨光氏

アマゾンウェブサービスジャパン株式会社

Amazon Game Services & Studios Japan Engineering Manager

下田純也

Page 2: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

冒頭に…これまでの開発パイプライン

エンジニアの皆さんはよくご存知だとは思いますが

プロデューサーさん・ディレクターさん目線だとどうでしょう?

• エンジニアさんが、なんか凄いの組んでるけど…

• もっと後押ししてあげることで高速なイテレーションによる品質向上、安定したリリース、さらにコスト削減の可能性

アーティストさん・デザイナーさん目線だとどうでしょう?

• なんか凄いのが社内にあるのは知ってるけど…

• 夜中にせっせとビルドしてくれていて翌朝には出来上がっているアレだよね

• でも、実は翌日まで待たなくてもすぐにビルドできるようになる可能性がある事ご存知ですか?

Page 3: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

まずは開発パイプラインについて質問

• パイプラインは自動化されていますか?

• どの段階まで自動化されていますか?

• ソースコードのビルド

• コード周りのテスト

• アセットのビルド

• ステージのライティング

• パッケージング

• 実行環境のテスト

• どなたが管理・運営されていますか?

• お一方だったり、他の誰も手を出せない状態になっていませんか?

Page 4: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

想像してみてください

ビルドマシンが言うことを聞かなかくなった時

バージョン管理システムが

・壊れた時

・容量が溢れた時

ビルドやパッケージングのリクエストが激増した時

Packaging!Build!

Build!

😰 😨

復旧をマシン調達から行う場合完全復旧までに数日かかる可能性も…

Page 5: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

ゲームビジネスのトレンド

• コンソール:パッケージ売り切りモデルでなく、サービスモデルへの移行が始まっている

• モバイル:サービスモデルの開発・運営現場ではプロジェクトが大規模化・複雑化してきている

• どちらもエンジニアは不足気味

• エンジニアを増員せずに解決する方法は?• 開発パイプラインの効率化・高速化・省力化が急務

Page 6: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Before

ビルドマスター😔:前の人のビルドが終わるまでお待ちを…

😔 Nightlyビルド明けまでお待ちを…

コリジョン

プログラム

直したから

テストした

い!

街A変更し

たからビル

ドしてテス

トしたい!

森B変更し

たからビル

ドしてテス

トしたい!

Page 7: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

After

ビルドマスター😊:いつでも実行して良いですよ!ふふふふっ、実はチームページのボタンからも実行できますよ!

コリジョンプログラム直したからテストしたい!

街A変更したからビルドしてテストしたい!

森B変更したからビルドしてテストしたい!

海C変更したからビルドしてテストしたい!

エネミープログラム直したからテストしたい!

Page 8: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

開発パイプラインのクラウド化による利点

Cloud

• 俊敏性

• スケーラビリティ

• 可用性(物理的なトラブルやメンテナンスからの開放)

AWS Step Functions:

• AWS CodePipeline:フルマネージド CI/CD

• AWS CloudFormation:容易にパイプラインをコピー

• Amazon EC2:Spot Instance/GPU instance

• AWS Device Farm:デバイステスト (iOS/Android)

• Amazon WorkSpaces:セキュアなVDI

3rd Party tools

• Perforce on AWS

高パフォーマンスVCS

• IncrediBuild on AWS

並列化ソリューション

AWS Device Farm

Page 9: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

アーキテクチャ図中のAWSのサービス群のご紹介

AWS Step Functions

AWS Step Functions では、AWS の複数のサービスをサーバーレスのワークフローに整理できるため、すばやくアプリケーションをビルドおよび更新できます。Step Functions を使用すると、AWS Lambda やAmazon ECS などのサービスをつなげて機能豊富なアプリケーションにまとめるワークフローを設計して実行できます。

AWS CodePipeline

AWS CodePipeline は完全マネージド型の継続的デリバリーサービスで、素早く確実性のあるアプリケーションとインフラストラクチャのアップデートのための、パイプラインのリリースを自動化します。CodePipeline は、お客様が定義したリリースモデルに基づき、コードチェンジがあった場合のフェーズの構築、テスト、デプロイを自動化します。

AWS CloudFormation

AWS CloudFormation は、クラウド環境内のすべてのインフラストラクチャリソースを記述してプロビジョニングするための共通言語を提供します。CloudFormation では、シンプルなテキストファイルを使用して、あらゆるリージョンとアカウントでアプリケーションに必要とされるすべてのリソースを、自動化された安全な方法でモデル化し、プロビジョニングできます。

Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2) は、安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービスです。ウェブスケールのクラウドコンピューティングを開発者が簡単に利用できるよう設計されています。

AWS Device Farm

AWS Device Farm はアプリケーションテストサービスです。複数のデバイスで Android/iOS 向けのアプリケーションやウェブアプリケーションを一度にテストするおよび操作することや、あるデバイスでの問題をリアルタイムで再現することができます。アプリケーションをリリースする前に、動画、スクリーンショット、ログ、パフォーマンスデータを確認し、問題を特定、修正して、品質を向上させます。

Amazon WorkSpaces

Amazon WorkSpacesはマネージド型で、セキュアなクラウドベースのデスクトップサービスです。Amazon WorkSpacesを使うと、Windows または Linux のデスクトップが数分でセットアップでき、すばやくスケールすることで世界中のたくさんの従業員にデスクトップを提供できます。

Page 10: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

開発パイプラインをクラウド化することで

大規模プロジェクトの高効率開発

• 大規模で複雑になってしまう開発環境をシンプルにクラウド化・自動化

• 並列動作させ高効率化

• これらを柔軟に組み合わせられる

設備投資を抑えた多拠点開発

• 拠点間をクラウド上の開発パイプラインをハブに接続

• 外部の開発会社もセキュアに開発参加

• テストチームやテスト会社ともクラウドで接続

テストの自動化品質向上とコスト

• テストの自動化・クラウド化をすることでクランチ時等突然のテスト増加にも即座に大量に並列テスト

• 仮にテスターさん費用で試算時給1500円 x 8時間 x 20日 x

100人 = 2400万円

Page 11: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

まずは効果を証明する必要がある

• PoC (Proof of Concept) を実施「新たなコンセプトの実現性や効果を証明するための検証」

• シリコンスタジオ株式会社

• AWS Partner Networkの会員様

• 自社でゲームエンジンの開発もされていて、ゲームエンジンにも詳しくゲーム開発パイプラインにも精通されている方々が多数在籍

Page 12: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

ゲーム開発パイプラインの課題

• プロジェクトの規模の拡大

• 複雑でメンテナンスも大変になる

• 規模拡大に伴う複数拠点化や外部との連携へのニーズ

大規模化するプロジェクト

• プロジェクトの大規模化によるコードのビルドやアセットのビルド時間増大と労力増

• プロジェクト毎に1つしかないパイプライン

ビルドパイプラインに費やされる時間と労力

• 品質を高めるためのテストの時間が増大している

• テストの人員を増やすにも限界がある

テストの手間の増大

Page 13: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

ゲーム開発パイプラインのクラウド化の目的

• 開発中のビルドにかかる時間やテストにかかる手間をコンピューティングリ

ソースのスケール・並列化削減

• 開発者はクリエイティブな活動に集中でき、作品の質を高める事に注力可能

となる

開発者の時間はクリエイティブな仕事に注力

• ビルや開発機器への設備投資を抑えつつ

• 開発拠点の拡大やグローバル展開が可能となる

設備投資を抑えつつ、拠点拡大、グローバル展開

Page 14: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

ゲーム開発パイプラインのAWS化全体像• クラウド上にスケール・並列化することで開発パイプラインに費やされる時間と労力を削減

既にいくつかの検証を進めています1. Game development Pipelines on AWS2. Perforce on AWS3. DevKit on AWS4. IncrediBuild on AWS

Page 15: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

ゲーム開発パイプラインのクラウド化検証• 各開発パイプラインをクラウド上に並列化し時間を短縮と労力を削減

• 高パフォーマンスのAmazon EC2インスタンスに展開

• これをスケール・並列化する

AWS Cloud

VPC

EC2 instance contentsEC2 instance contents

EC2 instance contentsEC2 instance contents

EC2 instance contentsEC2 instance contents

x Platforms x Levels x n

Auto QA Test

Auto QA Tests(Hundreds of Minutes)

EC2 instance contentsEC2 instance contents

EC2 instance contentsEC2 instance contents

x Platforms x Levels

Packaging

Pacaging(Hundreds of Minutes)

EC2 instance contentsEC2 instance contents

EC2 instance contentsEC2 instance contents

x Platforms x Levels

Bake

Bake Lights & Shadows(Hundreds of Minutes)

EC2 instance contentsEC2 instance contents

x Platforms

Shader

Shader Compile(Dozens of Minutes)

EC2 instance contentsEC2 instance contents

x Platforms

Compiler / IDE

Build(Dozens of Minutes)

VCS(Version Control System)

• Perforce• Git• Subversion• Mercurial• Etc

Version Control System

EBSVolume

Snapshot

Source Code Shaders Baked Maps Package Files Release Data

Page 16: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

開発パイプラインをEC2上に構築してみて得られた知見

• 多コアのハイスペックインスタンスだと単体でも高速ビルドできる

• 開発パイプラインを組み合わせて柔軟にスケール・並列化できる

• 大量の自動テストも並列化できる

Page 17: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

1つのサンプルステージのトータルビルド時間

各パイプラインハイスペックEC2インスタンス

(単位:分)

ソースコードのコンパイルRebuild.bat -Target="ShaderCompileWorker Win64 Development“

-Target="UE4Editor Win64 Development" -WaitMutex -FromMsBuild 8シェーダーコンパイル

UE4Editor.exe "%~dp0MyProjects\Paragon_Agora\Paragon_Agora.uproject“

-run=DerivedDataCache -fill 53

ベイク (UE4 sample, Paragon:Agora) 58

パッケージング (UE4 sample, Paragon:Agora) 24

自動テスト 4

トータルのビルド時間 147

Page 18: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

実際の検証に関して

Page 19: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

シリコンスタジオ株式会社によるゲーム開発環境のクラウド化PoC

シリコンスタジオ株式会社

テクノロジー事業本部 プロジェクト管理部副部長 兼 営業企画部副部長

向井亨光

Page 20: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

シリコンスタジオの紹介

設立 1999年11月

上場 東証マザーズ(2015年2月23日)

本社所在地 東京都渋谷区恵比寿1-21-3

資本金 439百万円(2018年11月末現在)

連結従業員数 229名(2018年11月末現在)

関係会社イグニス・イメージワークス株式会社

株式会社イリンクス

Page 21: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

なぜシリコンスタジオなのか

• ゲーム開発環境 自社ゲームエンジン・ミドルウェア開発ゲーム開発サポートによるゲーム開発のノウハウゲーム開発環境構築支援経験

• 受託開発 ゲーム開発向け各社ツール開発、カスタマイズ他多種受託開発経験

• ネットワーク サーバ仕様設計から構築運営までオンラインサービス経験※APNセレクトテクノロジーパートナー

Page 22: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

シリコンスタジオのミドルウェア製品群

Page 23: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

シリコンスタジオの受託開発実績

• 大手プラットフォーマー様開発環境への技術提供

• 大手プラットフォーマー様向け3Dグラフィックス技術支援

• 機械学習向け教師データ作成・作成アプリケーション開発

• 自動車会社様向けカーコンフィギュレータ開発

Page 24: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

シリコンスタジオのオンラインサービス

• サーバープログラム開発から運用まで

• ゲームのサーバー仕様設計構築から最適化まで

• APNセレクトテクノロジーパートナー

• AWS上での環境構築実績

Page 25: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

今回のPoCの概要紹介

• PoCの作業範囲• Compiler / IDE ~ Auto QA Test まで

• 作業内容• AWSの必要インスタンスの準備・設定

• 開発パイプライン各項目の検証データ準備と速度計測

• すべての作業手順を記載した手順書の作成、作業データの保存

Page 26: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Compiler / IDE

• ソースコードのテストターゲット• Unreal Engine 4.22 のソースコード

• ソースコードをリビルドさせる時間を計測

• 並列化環境(比較対象)• IncrediBuildによる並列化

• FASTBuildによる並列化• Unreal Engine 4.22 のソースコードをFASTBuild対応させ計測

• ハイスペックEC2インスタンス(r5.24xlarge)を使用

Page 27: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Compiler / IDE

19

1210 10 10

76 6 6 6

28

2120

1817

8

8 16 32 48 96 144 192 240 288 336r5.12xlarge + IncrediBuild r5.12xlarge + FASTBuild r5.24xlarge

処理時間(分)

スレッド数

28分

6分

Page 28: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Compiler / IDE(参考資料)

UE4_main\

├UnrealEngine-4.22\

├UnrealEngine-4.22_FBuild¥ FASTBuild検証用ソースコード

├MyProjects\

├CompilerIDE\

│ ├ CompilerIDE.bat ソースリビルドバッチファイル

│ └ CompilerIDE_FBuild.bat FASTBuild構築済みソースリビルドバッチファイル

└ common\

└ timersub.bat 時間計測用バッチファイル

call ..\common\timersub.bat STARTcall ..\UnrealEngine-4.22\Engine\Build\BatchFiles\Rebuild.bat -Target="UE4Editor Win64 Development" -WaitMutex -FromMsBuildcall ..\common\timersub.bat STOPpause

• 検証で準備したパッケージ構成

• 検証で使用したバッチファイル( CompilerIDE.bat )の中身

Page 29: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Shader

• シェーダーのテストターゲット• Unreal Engine 4.22のサンプル Paragon Agoraのシェーダー

• シェーダーをリコンパイルする時間を計測• シェーダーコンパイル時に生成されるキャッシュ“DeriverdDataCache”を明示的に消去し、リコンパイルを実施

• 並列化環境(比較対象)• IncrediBuildによる並列化

• FASTBuildによる並列化

• ハイスペックEC2インスタンス(r5.24xlarge)を使用

Page 30: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Shader

60

50 48 48 48 47 47

53

48 96 144 192 240 288 336r5.12xlarge + IncrediBuild r5.24xlarge

処理時間(分)

スレッド数

60分

47分

Page 31: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Shader(参考資料)

UE4_main\

├ UnrealEngine-4.22\

│ └ Engine\

│ └ DerivedDataCache\

├ MyProjects\

│ ├ LandscapeMountains\

│ │ └ LandscapeMountains.uproject

│ ├ ThirdPersonSample\

│ │ └ ThirdPersonSample.uproject

│ └Paragon_Agora\

│ └ Paragon_Agora.uproject

├ Shader\

│ ├ Shader_LandscapeMountains.bat シェーダーリビルドバッチファイル

│ ├ Shader_ParagonAgora.bat

│ └ Shader_TPS.bat

└ common\

└ timersub.bat 時間計測用バッチファイル

• 検証で準備したパッケージ構成• Paragon Agora以外のサンプルも今回のPoCで計測

if exist "..\UnrealEngine-4.22\Engine\DerivedDataCache" (

echo DerivedDataCacheExist

rd ..\UnrealEngine-4.22\Engine\DerivedDataCache /s /q

)

call ..\common\timersub.bat START

..\UnrealEngine-4.22\Engine\Binaries\Win64\UE4Editor.exe

"%~dp0..\MyProjects\LandscapeMountains\LandscapeMountains.uproject" -

run=DerivedDataCache -fill

call ..\common\timersub.bat STOP

pause

• 検証で使用したバッチファイル( Shader_LandscapeMountains.bat )の中身

Page 32: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Bake

• ライトマップベイクのテストターゲット

• Unreal Engine 4.22のサンプル Paragon Agora に対するライトマップベイク

• 並列化環境(比較対象)

• Swarmによる並列化

• Coodinatorにg3s.xlarge、Agentにr5.12xlargeを使用

• GPU搭載ハイスペックEC2インスタンス(g3.12xlarge)を使用

*Unreal Engine 4.22 において、ベイク処理後にGPUへのアクセスがあるため –NullRHIオプションが使用できない(ホストとしてはGPUを持つg3インスタンスが必要)

Page 33: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Bake

処理時間(分)

スレッド数

65

39

3026

23 22

58

52 64 100 148 196 244 292g3s.xlarge + r5.12xlarge + swarm g3.12xlarge

65分

22分

Page 34: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Bake(参考資料)

UE4_main\

├ UnrealEngine-4.22\

├ MyProjects\

├ Bake\

│ ├ Bake_InfinityBlade.bat

│ ├ Bake_LandscapeMountains.bat

│ ├ Bake_ParagonAgora.bat

│ ├ Bake_SoulCity.bat

│ └ Bake_TPS.bat

└ common\

└ timersub.bat 時間計測用バッチファイル

• 検証で準備したパッケージ構成

• Paragon Agora以外のサンプルも今回のPoCで計測

call ..\common\timersub.bat START

..\UnrealEngine-4.22\Engine\Binaries\Win64\UE4Editor-Cmd.exe

"%~dp0..\MyProjects\LandscapeMountains\LandscapeMountains.uproject" -

run=resavepackages -buildlighting -allowcommandletrendering -

map=LandscapeMap.umap

call ..\common\timersub.bat STOP

pause

• 検証で使用したバッチファイル(Bake_LandscapeMountains.bat)の中身

Page 35: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Enlighten

• Enlightenのプリコンピュート性能をAWS上で計測

• ターゲットはEnlightenのサンプル Large world

• 並列化環境

• IncrediBuildによる並列化

Page 36: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Enlighten

103

55

3832

27 24 23 22 22

48 96 144 192 240 288 336 384 432r5.12xlarge + IncrediBuild

処理時間(分)

スレッド数

103分

22分

Page 37: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Enlighten(参考資料)

UE4_main\

├UnrealEngine-4.22_Enlighten

│ ├ Engine\

│ ├ EnlPrecomp\

│ └ EnlightenProjects\

│ └ LargeWorldEnlighten\

│ └ LargeWorldEnlighten.uproject

├ Bake_Enlighten

│ └ EnlightenPrecompute.bat

│ Enlighten(UE4.22.0)のライティングリビルドバッチファイル

└common\

└ timersub.bat 時間計測用バッチファイル

• 検証で準備したパッケージ構成

if exist "..\UnrealEngine-4.22_Enlighten\EnlPrecomp" (

echo EnlPrecompExist

rd ..\UnrealEngine-4.22_Enlighten\EnlPrecomp /s

)

call ..\common\timersub.bat START

..\UnrealEngine-4.22_Enlighten\Engine\Binaries\Win64\UE4Editor.exe

"%~dp0..\UnrealEngine-

4.22_Enlighten\EnlightenProjects\LargeWorldEnlighten\LargeWorldEnlighten.up

roject" -run=EnlightenPrecompute LargeWorld_Main -

AllowCommandletRendering -AutoCheckOutPackages -NullRHI

call ..\common\timersub.bat STOP

pause

• 検証で使用したバッチファイル(EnlightenPrecompute.bat)の中身

Page 38: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Packaging

• パッケージングのテストターゲット

• Unreal Engine 4.22のサンプル Paragon Agora

• 並列化環境

• GPU搭載EC2インスタンスにおけるCore数差での比較を実施

Page 39: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Packaging

106

42

24

16 32 64g3.4xlarge g3.8xlarge g3.16xlarge

処理時間(分)

スレッド数

106分

24分

Page 40: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Packaging(参考資料)

UE4_main\

├ UnrealEngine-4.22\

├ MyProjects\

│ ├ InfinityBlade\

│ | └InfinityBlade.uproject

│ ├ LandscapeMountains\

│ | └ LandscapeMountains.uproject

│ ├ ParagonAgora\

│ | └ParagonAgora.uproject

│ ├ SoulCity\

│ | └SoulCity.uproject

│ ├ ThirdPersonExample\

│ └ThirdPErsonExample.uproject

├Packaging\

│ ├ Packaging_InfinityBlade.bat パッケージングバッチファイル

│ ├ Packaging_LandscapeMountains.bat

│ ├ Packaging_ParagonAgora.bat

│ ├ Packaging_SoulCity.bat

│ └ Packaging_TPS.bat

└common\

└ timersub.bat 時間計測用バッチファイル

• 検証で準備したパッケージ構成• Paragon Agora以外のサンプルも今回のPoCで計測

call ..\common\timersub.bat START

..\UnrealEngine-4.22\Engine\Binaries\DotNET\AutomationTool.exe

BuildCookRun -

project="%~dp0..\MyProjects\LandscapeMountains\LandscapeMountains.up

roject" -noP4 -platform=Win64 clientconfig=Shipping -serverconfig=Shipping -

cook -allmaps -stage -pak

call ..\common\timersub.bat STOP

pause

• 検証で使用したバッチファイル( Packaging_LandscapeMountains.bat )の中身

Page 41: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Auto QA Test

• オートテストのテストターゲット

• 本PoC用に新規作成した検証用プロジェクト

• テストするステージを16準備

• 各ステージでダミーのテストを実施

• ステージ毎に一定時間の処理が入るようなものとした

• 並列化環境

• GPU搭載EC2インスタンスに分散させて計測

• Auto QA Testはグラフィカルな処理も想定されるためg3インスタンスを使用

Page 42: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Auto QA Test17

9

6

4

4 8 12 16g3s.xlarge

処理時間(分)

スレッド数

17分

4分

Page 43: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Auto QA Test(参考資料)

UE4_main\

├ UnrealEngine-4.22\

├ MyProjects\

│ └AutomationTest\

│ └AutomationTest.uproject

├AutoTest\

│ ├AutoTest_NodeX.bat 自動化テストの分散処理を命令

│ ├base_cmd.txt 自動化テストコマンドが記載されているテキストファイル

│ └ simple_svr.bat 各ノードで実行させるためのバッチファイル

└common\

└ timersub.bat 時間計測用バッチファイル

• 実行の流れ• 親ノードから各処理用ノードにテストを振り分けて処理命令

• 分散用の仕組みを作って対応

• 検証で準備したパッケージ構成

Page 44: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

今回のPoCで分かったこと

• 手軽に並列化できるハイスペックEC2インスタンス• ノード分散を考慮せず96Threadsで動作可能

• インスタンスのクローン機能が有用

• ゲームプラットフォーム毎の開発環境もクローンで簡単に作成

• デスクトップ環境としてのGPU搭載EC2インスタンスが有用

• Unreal Editorなどはストレスなく使用可能

Page 45: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

今後さらに検証できること

• Auto QA Test

• ステージ単位以上に分散

• CPUしか使わない自動テストをr5インスタンスで実施

• AIを使ったAuto QA TestのAWS上での動作検証

• GPGPUが可能なp2, p3, g3, g4インスタンスを活用した開発パイプラインの検証

• イテレーション検証

• “アセット更新 → ベイク”などで発生するデータ転送含めたパフォーマンスの検証

Page 46: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

効率的な開発環境を目指すために

• 実開発環境でPoCを実施• 実データに最適なノード構成の検証

• 開発パイプラインボトルネックの確認と改善

• 効率化のための環境(ツール等)の構築

AWS様と一緒に最適なソリューションを提供させていただきます

是非お問い合わせください!

siliconstudio.co.jp

Page 47: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

他にもいくつか関連するPoCを進めています

Page 48: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Perforce on AWS

• Perfoce社とAWSとの協力でウェビナーやドキュメントをリリースしています

• How To Deploy Helix Core on AWS

https://www.perforce.com/webinars/vcs/how-deploy-helix-core-aws

• 日本でも独自にPoCを行った結果なかなか興味深い結果が出ました

• Perforce Proxyにより

• 速度向上

• 転送コスト削減

• 並列化オプションにより

• クラウド経由でもオンプレと遜色ない速度を実現

• この結果を元にPerforceのAWS上への構築の支援もできますのでご相談を

Page 49: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Perforce Proxyと並列化オプションPerforce Proxyを利用しsync/submitを4GBのファイル群でテスト (1GBのUE4ソース群 + 3GBのUE4アセット)

sample assets).

PerforceのP4Dから100GBのデータをP4Pへインターネット回線経由で転送を30日行った場合月間 3,000GB (3TB)

この場合の月間データ転送コストは 3,000GB * $0.114 = $342※2019/9/4現在の東京リージョンでの価格

Direct Connect (東京)1GB port 24H * 30day * $0.285 = $205.2/mo

3,000GB * $0.0410 = $123

Threads

Sync in same region

(second)

Sync Tokyo – Osaka

(second)

Commit in same region

(second)

Commit Tokyo – Osaka

(second)

1 551 702 188 220

4 165 285 62 40

16 105 130 41 45

Sync command:

• p4 -q sync -f //depot/...

• p4 -q sync -f --parallel=threads=4 //depot/...

• p4 -q sync -f --parallel=threads=16 //depot/...

Commit command:

• p4 -q submit -d test -f submitunchanged

• p4 -q submit -d test -f submitunchanged --parallel=threads=4

• p4 -q submit -d test -f submitunchanged --parallel=threads=16

Page 50: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Unity開発のクラウド活用にもご興味あります?

•現在PoCを計画中です!• コードのビルド

• AssetBundle

• 他にも気になるところはありますか?

Page 51: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

まとめ

Page 52: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

パイプラインのAWS化ソリューションの利点①

パイプライン 自動化可能な柔軟で高速な開発パイプライン

デプロイ短時間でデプロイ可能になることで、将来のサービスモデルへの移行に対応

ベイクライトマップやシャドウマップのベイク時間も短縮でき( Unreal Swarm/Lightmass)更に複数インスタンスですく数のステージを同時にベイクも可能

パッケージングパッケージング(Unreal Engineのクック)プロセスも多コア高パフォーマンス EC2インスタンスを利用して高速化

Page 53: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

パイプラインのAWS化ソリューションの利点②

管理ビルドプロセス全体の容易な管理と自動化。デプロイやテスト、さらにはバックエンドへの接続まで一貫して管理可能。

俊敏性 必要な時に瞬時にインスタンスを立ち上げられる

スケーラビリティ テスト等もスケーラブルなAWSで大量に展開可能。

QA自動テストやプレイ内容をGインスタンス上で実行し、ビデオデータとして残す事も可能。

高速なVCS

VCSでのソースの共有も高速回線で繋ぎつつ、並列化させ、さらにスタジオ毎にProxyを建てることで開発パイプラインとのも高速に同期

複数拠点化

このパイプラインをAmazon VPC上に構築しDirect ConnectやSite to Site VPNを利用することで、開発拠点をクラウド上に拡張。そこにAmazon WorkSpacesで外部からセキュアに接続。

Page 54: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

Pipelineを自由に組み合わせて呼び出せる柔軟性

• 各パイプラインをCloudFormationでのテンプレート化や、CodePipeline等から自由に組み合わせて呼び出したり、複数並列で起動したりできる.

• これまでのオンプレのパイプラインだと、プロジェクト毎に1つ、かつドキュメント化されていなかったり…これをシンプルにし並列でビルドさせたりもろもろできるようになる。

• .

Page 55: Game Dev on AWS...パッケージング(UE4 sample, Paragon:Agora) 24 自動テスト 4 トータルのビルド時間 147 実際の検証に関して シリコンスタジオ株式会社による

ありがとうございます!Thank you!

導入のご相談やシリコンスタジオ様のご紹介等このロゴのパーカーを着たスタッフにお気軽にお声がけください