SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
株式会社スクウェア・エニックス
ヒュイ フレッド ( Fr ed T.Y. H ui)
実 行 速 度 の 最 適 化 の あ れ こ れ
プ ラ ス お ま け
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
略称について
・『Unreal Engine 4』をスライド内では『UE4』と記載しています
・『PlayStation®4』も同様に『PS4』と記載しています
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
アジェンダ
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• 自己紹介
• 揺れものアニメーションの改良と並列化
• PGO による実行速度の最適化
• おまけ:静的コード解析
アジェンダ
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• 自己紹介
• 揺れものアニメーションの改良と並列化
• PGO による実行速度の最適化
• おまけ:静的コード解析
アジェンダ
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
自己紹介
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• HUI T.Y. Fred(ヒュイ フレッド)
• ホンコン
• VisualWorks, ドラクエ10オンライン
• エンジニア
• 揺れものアニメーションのライブラリの窓口、カスタマイズ、速度最適化
• 最適化チームのメンバー
自己紹介
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーションの最適化
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• Bonamik - B Plugin
• 鎖、紐、髪、クロスなどの物理シミュレーション
• KineDriver(Deformation/変形)- K Plugin
• 補助骨、ドライバー
• どちらも社内にすでに実績があるライブラリ
• 今回は初UE4対応で、Pluginとして実装された
揺れものアニメーション
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• 今日の話
• 私一人だけではなく、
テクノロジー推進部のメンバー達と共同開発
Aitzol Muelas
Thierry Babin-Ruel
揺れものアニメーション
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
KineDriver
Component
Bonamik
Component
・UE4を改造する設計(Componentなど)
SkeletalMeshComponent
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
K Component B Component
・UE4を改造する設計(Componentなど)
SkeletalMeshComponent
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
K Component::
TickComponent()
B Component::
TickComponent()
・UE4を改造する設計(処理順)
SkeletalMeshComponent::
PostPhysicsTickComponet()
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
K B
・UE4を改造する設計(キャラ一体の処理)
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
K1 B1 K2 B2 K3 B3
・よくある処理順
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
K1 B1 K2 B2 K3 B3
KBD 2 KBD 3KBD 1
A.問題点#1(Componentを統合)
A.問題点#1
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
A.並列化のイメージ(3コアの場合)
揺れものアニメーション
KBD
1
KBD
4
KBD
2
KBD
5
KBD
3
KBD
6
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• 統合版:KBD Component
• もう一つのメリット:表現幅のアップ
• 対応前は固定:K -> B のみ
• 対応後は可変:K -> B -> K でも、B -> K -> B でもOK
揺れものアニメーション
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• PluginをModuleにRefactoringした
• UKBDComponentの生成
• USkeletalMeshComponent::OnRegister()
• UKBDComponent::OnRegister()
• UKBDComponent::TickComponent()
• 必ずメインスレッドで呼ばれる
• TaskGraphのタスク生成、依存関係と待ち処理を設定
揺れものアニメーション
ス テ ッ プ A . の 実 装 イ メ ー ジ
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
A.並列化のイメージ(3コアの場合)
揺れものアニメーション
KBD
1
KBD
4
KBD
2
KBD
5
KBD
3
KBD
6
もうできた!?
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
A.並列化はできたが、現実は
揺れものアニメーション
Other
task
Other
task
Other
task
KBD
1
KBD
4
KBD
2
KBD
5
KBD
3
KBD
6
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
A.現実は
揺れものアニメーション
Other
task
Other
task
Other
task
KBD
1
KBD
4
KBD
2
KBD
5
KBD
3
KBD
6
TickGroup_PostPhysics
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
B.問題点#2
揺れものアニメーション
Other
task
Other
task
Other
task
KBD
1
KBD
4
KBD
2
KBD
5
KBD
3
KBD
6
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
B.タスク・スケジューラの IDEA!
揺れものアニメーション
Other
task
Other
task
Other
task
KBD
1
KBD
4
KBD
2
KBD
5
KBD
3
KBD
6
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
B.タスク・スケジューラ
揺れものアニメーション
Other
task
Other
task
Other
task
KBD
1
KBD
4
KBD
2
KBD
5
KBD
3
KBD
6
どうすればいい?
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
ス テ ッ プ B . の 実 装 の イ メ ー ジ
・タスク
• KBDComponent::TickComponent()
• TaskGraphのタスク生成、依存関係と待ち処理を設定
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
ス テ ッ プ B . の 実 装 の イ メ ー ジ
・タスク
• KBDComponent::TickComponent()
• TaskGraphのタスク生成、依存関係と待ち処理を設定
• TickGroup の最後で、KBDManagerが
• 配列のソート、タスク生成、待ち処理など
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
ス テ ッ プ B . の 実 装 の イ メ ー ジ
・タスク
• KBDComponent::TickComponent()
• TaskGraphのタスク生成、依存関係と待ち処理を設定
• KBDManager::PendingComponents 配列に自分を追加
• TickGroup の最後で、KBDManagerが
• 配列のソート、タスク生成、待ち処理など
• 配列をクリア
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
揺れものアニメーション
ス テ ッ プ B . の 実 装 の イ メ ー ジ
・タスク
• KBDComponent::TickComponent()
• TaskGraphのタスク生成、依存関係と待ち処理を設定
• KBDManager::PendingComponents 配列に自分を追加
• TickGroup の最後で、KBDManagerが
• 配列のソート、タスク生成、待ち処理開始、分散、待ち処理終了
• 配列をクリア
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• PluginをModuleにRefactoringした
• キャラ内のコリジョン・グループごとに計算すれば・・・
• ただ、専用AssetUserDataのデータ構造を変更しないと厳しい
• 良かった
このKBD対応が別のプロジェクトでも使われることになった
揺れものアニメーション
反 省 点
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
PGO による実行速度最適化
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• PGO - Profile Guided Optimization の略
• コンパイラとリンカー要対応!
• プロファイル(の結果)に基づく最適化
• 一般的な PGO
• 実績:Windowsは10年以上, コンソール機は数年前から!?
• 理論
PGO による最適化
P G O と は
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
PGO による実行速度最適化
(質問x2)
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
PGO を使わない場合は・・・ (イメージ)
- Cpp の行単位で
#pragma optimize speed
#pragma optimize size
- コンパイラのオプションで
-OSpeed, -Osize
- 等々
PGO による最適化
P G O と は
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
理論:
Training (Profiling, game play) 時によく通ったコード ー> ビルド時に速度最適化
それ以外のコード -> ビルド時にサイズ最適化
例:
if ( ConditionX )
{
// run A
}
else
{
// run B
}
PGO による最適化
P G O と は
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
PGO による最適化
P G O と は ( 出 典 : M a r c h 2 0 , 2 0 1 3 - - P r o f i l e G u i d e d O p t i m i z a t i o n - -
A n k i t A s t h a n a )
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana
(.exe)
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
例:
if ( ConditionX )
{
PGO( counterA );
// run A
}
else
{
PGO( counterB );
// run B
}
PGO による最適化
P G O と は
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
(ジョブ) (.exe) (複数)
出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
(.exe)
出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana
(複数)
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• Sampling PGO (S-PGO)
• Training用のビルドが要らない
• UE4.19では未対応
• 自分で対応(ビルドオプションのみ)
PGO による最適化
P G O と は
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• UE4.19の機能だけを、うちのUE4(4.17)にマージした
• Platformに依存しないビルドオプション
-PGOProfile, -PGOOptimize (”-bAllowLTCG true” も)
• コンソールコマンド
“pgo start” -> プレイ -> ”pgo end”
PGO による最適化
U E 4 . 1 9 に 導 入 さ れ た 機 能
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
1. Training すべきところ
2. ジョブごとの自動プレイスクリプト(内製ツール)
3. ジョブごとに、平均フレーム速度をログ出力
4. その他:全体自動化、Platformごとの対応、SPGO、エ
ラー対策、ライブラリのビルドなど
PGO による最適化
プ ロ ジ ェ ク ト 側 で 対 応 し た こ と
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
1. Training すべきところ PLAN
2. 自動プレイのスクリプト DO
3. ジョブごとに、平均フレーム速度をログ出力 CHECK KPI
4. その他:全体自動化、Platformごとの対応、SPGO、エ
ラー対策、ライブラリのビルドなど
PGO による最適化
プ ロ ジ ェ ク ト 側 で 対 応 し た こ と
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
PDC (Plan ->Do -> Check)のサイクルを回す
• 全体最適化する
• ジョブの効果高いものを残し、
ジョブの効果低いものを消す
• 最適化できなかった例
PGO による最適化
プ ロ ジ ェ ク ト 側 で 対 応 し た こ と
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• PS4でのフレーム速度の改善(Shipping)
• 37ms -> 33ms(最大効果のところ)
• UE4.19で導入された機能をマージ
• 複数のPlatformのビルドオプション
• コンソールコマンド
PGO による最適化
ま と め 1 / 3 費 用 対 効 果
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
• デメリット
• ビルドが長くなる
• 自動プレイがない場合は面倒?
PGO による最適化
ま と め 2 / 3
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
(.exe)
(.exe)
出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
PGO による最適化
ま と め 3 / 3
Training用
ビルド
Training用ビルド
のRuntime速度
(1)
ジョブの調整
(PDCサイクル)
QA用ビルドの
Runtime速度
対応
Platformの
数
PGO yes 重い より少し速い 
SPGO no  大きく変わらない よりしやすい ?
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
PGO による最適化
ま と め 3 / 3
<戦略>
開発サイクルの最中では、S-PGOを
最終リリースの時期は、PGOを
Training用
ビルド
Training用ビルド
のRuntime時の速度
(1)
ジョブの調整
(PDCサイクル)
QA用ビルド
Runtime時の速
度
対応
Platformの
数
PGO yes 重い より少し速い 
SPGO no  大きく変わらない よりしやすい ?
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
おまけ:静的コード解析
V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved.
ご清聴ありがとうございました!
UNREALはエピック・ゲームズ・インコーポレーテッドの商標または登録商標です。
PlayStationおよびPS4は株式会社ソニー・インタラクティブエンタテインメントの商標または登録商標です。
その他掲載されている会社名、商品名は、各社の商標または登録商標です。

Contenu connexe

Tendances

Tendances (20)

メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
 
Fortniteを支える技術
Fortniteを支える技術Fortniteを支える技術
Fortniteを支える技術
 
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
 
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
 
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらいCEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
 
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
 
[CEDEC2018] UE4アニメーションシステム総おさらい
[CEDEC2018] UE4アニメーションシステム総おさらい[CEDEC2018] UE4アニメーションシステム総おさらい
[CEDEC2018] UE4アニメーションシステム総おさらい
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 

Similaire à 実行速度の最適化のあれこれ プラス おまけ

How to make a Flash based Wii Ware
How to make a Flash based Wii WareHow to make a Flash based Wii Ware
How to make a Flash based Wii Ware
Tamotsu Machida
 

Similaire à 実行速度の最適化のあれこれ プラス おまけ (20)

UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例
 
UE4におけるアニメーション制作事例
UE4におけるアニメーション制作事例  UE4におけるアニメーション制作事例
UE4におけるアニメーション制作事例
 
UE4におけるエフェクトの基本戦略事例 前半
UE4におけるエフェクトの基本戦略事例  前半UE4におけるエフェクトの基本戦略事例  前半
UE4におけるエフェクトの基本戦略事例 前半
 
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
 
UE4における自動プレイのポストモーテム
UE4における自動プレイのポストモーテム  UE4における自動プレイのポストモーテム
UE4における自動プレイのポストモーテム
 
Game Creators Conference 2019 Takashi Itai
Game Creators Conference 2019 Takashi ItaiGame Creators Conference 2019 Takashi Itai
Game Creators Conference 2019 Takashi Itai
 
Amplify Studioを使ってみた
Amplify Studioを使ってみたAmplify Studioを使ってみた
Amplify Studioを使ってみた
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
 
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
 
UE4におけるエフェクトの基本戦略事例 後半
UE4におけるエフェクトの基本戦略事例  後半UE4におけるエフェクトの基本戦略事例  後半
UE4におけるエフェクトの基本戦略事例 後半
 
How to make a Flash based Wii Ware
How to make a Flash based Wii WareHow to make a Flash based Wii Ware
How to make a Flash based Wii Ware
 
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" caseCEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料
 
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
 
Current status and future trends in Node-RED
Current status and future trends in Node-REDCurrent status and future trends in Node-RED
Current status and future trends in Node-RED
 

Plus de エピック・ゲームズ・ジャパン Epic Games Japan

猫でもわかる Epic MegaGrants 応募への道
猫でもわかる Epic MegaGrants 応募への道猫でもわかる Epic MegaGrants 応募への道
猫でもわかる Epic MegaGrants 応募への道
エピック・ゲームズ・ジャパン Epic Games Japan
 

Plus de エピック・ゲームズ・ジャパン Epic Games Japan (20)

猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
 
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめUnreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
 
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
 
UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)
 
Hair Groom入門 (UE4 Character Art Dive Online)
Hair Groom入門 (UE4 Character Art Dive Online)Hair Groom入門 (UE4 Character Art Dive Online)
Hair Groom入門 (UE4 Character Art Dive Online)
 
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive OnlineUE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
 
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
 
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMERVisual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
 
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
Unreal Engineでのコンフィギュレーター制作と映像制作  UNREAL FEST EXTREME 2021 SUMMERUnreal Engineでのコンフィギュレーター制作と映像制作  UNREAL FEST EXTREME 2021 SUMMER
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
 
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏  UNREAL FEST EXTREME 2021 SUMMERバレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏  UNREAL FEST EXTREME 2021 SUMMER
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
 
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
 
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMERSAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
 
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
 
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
UE4を使用したバーチャルヒューマンの映像制作  UNREAL FEST EXTREME 2021 SUMMERUE4を使用したバーチャルヒューマンの映像制作  UNREAL FEST EXTREME 2021 SUMMER
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
 
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
オンラインで同期した100体の巨大生物から地球を衛る方法  UNREAL FEST EXTREME 2021 SUMMERオンラインで同期した100体の巨大生物から地球を衛る方法  UNREAL FEST EXTREME 2021 SUMMER
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
 
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMERMetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
 
Twinmotion 2021とAEC分野向けソリューションのご紹介
Twinmotion 2021とAEC分野向けソリューションのご紹介Twinmotion 2021とAEC分野向けソリューションのご紹介
Twinmotion 2021とAEC分野向けソリューションのご紹介
 
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
 
猫でもわかる Epic MegaGrants 応募への道
猫でもわかる Epic MegaGrants 応募への道猫でもわかる Epic MegaGrants 応募への道
猫でもわかる Epic MegaGrants 応募への道
 

実行速度の最適化のあれこれ プラス おまけ

  • 1. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 株式会社スクウェア・エニックス ヒュイ フレッド ( Fr ed T.Y. H ui) 実 行 速 度 の 最 適 化 の あ れ こ れ プ ラ ス お ま け
  • 2. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 略称について ・『Unreal Engine 4』をスライド内では『UE4』と記載しています ・『PlayStation®4』も同様に『PS4』と記載しています
  • 3. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. アジェンダ
  • 4. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 自己紹介 • 揺れものアニメーションの改良と並列化 • PGO による実行速度の最適化 • おまけ:静的コード解析 アジェンダ
  • 5. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 自己紹介 • 揺れものアニメーションの改良と並列化 • PGO による実行速度の最適化 • おまけ:静的コード解析 アジェンダ
  • 6. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 自己紹介
  • 7. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • HUI T.Y. Fred(ヒュイ フレッド) • ホンコン • VisualWorks, ドラクエ10オンライン • エンジニア • 揺れものアニメーションのライブラリの窓口、カスタマイズ、速度最適化 • 最適化チームのメンバー 自己紹介
  • 8. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーションの最適化
  • 9. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • Bonamik - B Plugin • 鎖、紐、髪、クロスなどの物理シミュレーション • KineDriver(Deformation/変形)- K Plugin • 補助骨、ドライバー • どちらも社内にすでに実績があるライブラリ • 今回は初UE4対応で、Pluginとして実装された 揺れものアニメーション
  • 10. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 今日の話 • 私一人だけではなく、 テクノロジー推進部のメンバー達と共同開発 Aitzol Muelas Thierry Babin-Ruel 揺れものアニメーション
  • 11. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション KineDriver Component Bonamik Component ・UE4を改造する設計(Componentなど) SkeletalMeshComponent
  • 12. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション K Component B Component ・UE4を改造する設計(Componentなど) SkeletalMeshComponent
  • 13. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション K Component:: TickComponent() B Component:: TickComponent() ・UE4を改造する設計(処理順) SkeletalMeshComponent:: PostPhysicsTickComponet()
  • 14. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション K B ・UE4を改造する設計(キャラ一体の処理)
  • 15. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション K1 B1 K2 B2 K3 B3 ・よくある処理順
  • 16. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション K1 B1 K2 B2 K3 B3 KBD 2 KBD 3KBD 1 A.問題点#1(Componentを統合) A.問題点#1
  • 17. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. A.並列化のイメージ(3コアの場合) 揺れものアニメーション KBD 1 KBD 4 KBD 2 KBD 5 KBD 3 KBD 6
  • 18. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 統合版:KBD Component • もう一つのメリット:表現幅のアップ • 対応前は固定:K -> B のみ • 対応後は可変:K -> B -> K でも、B -> K -> B でもOK 揺れものアニメーション
  • 19. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • PluginをModuleにRefactoringした • UKBDComponentの生成 • USkeletalMeshComponent::OnRegister() • UKBDComponent::OnRegister() • UKBDComponent::TickComponent() • 必ずメインスレッドで呼ばれる • TaskGraphのタスク生成、依存関係と待ち処理を設定 揺れものアニメーション ス テ ッ プ A . の 実 装 イ メ ー ジ
  • 20. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. A.並列化のイメージ(3コアの場合) 揺れものアニメーション KBD 1 KBD 4 KBD 2 KBD 5 KBD 3 KBD 6 もうできた!?
  • 21. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. A.並列化はできたが、現実は 揺れものアニメーション Other task Other task Other task KBD 1 KBD 4 KBD 2 KBD 5 KBD 3 KBD 6
  • 22. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. A.現実は 揺れものアニメーション Other task Other task Other task KBD 1 KBD 4 KBD 2 KBD 5 KBD 3 KBD 6 TickGroup_PostPhysics
  • 23. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. B.問題点#2 揺れものアニメーション Other task Other task Other task KBD 1 KBD 4 KBD 2 KBD 5 KBD 3 KBD 6
  • 24. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. B.タスク・スケジューラの IDEA! 揺れものアニメーション Other task Other task Other task KBD 1 KBD 4 KBD 2 KBD 5 KBD 3 KBD 6
  • 25. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. B.タスク・スケジューラ 揺れものアニメーション Other task Other task Other task KBD 1 KBD 4 KBD 2 KBD 5 KBD 3 KBD 6 どうすればいい?
  • 26. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション ス テ ッ プ B . の 実 装 の イ メ ー ジ ・タスク • KBDComponent::TickComponent() • TaskGraphのタスク生成、依存関係と待ち処理を設定
  • 27. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション ス テ ッ プ B . の 実 装 の イ メ ー ジ ・タスク • KBDComponent::TickComponent() • TaskGraphのタスク生成、依存関係と待ち処理を設定 • TickGroup の最後で、KBDManagerが • 配列のソート、タスク生成、待ち処理など
  • 28. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション ス テ ッ プ B . の 実 装 の イ メ ー ジ ・タスク • KBDComponent::TickComponent() • TaskGraphのタスク生成、依存関係と待ち処理を設定 • KBDManager::PendingComponents 配列に自分を追加 • TickGroup の最後で、KBDManagerが • 配列のソート、タスク生成、待ち処理など • 配列をクリア
  • 29. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーション ス テ ッ プ B . の 実 装 の イ メ ー ジ ・タスク • KBDComponent::TickComponent() • TaskGraphのタスク生成、依存関係と待ち処理を設定 • KBDManager::PendingComponents 配列に自分を追加 • TickGroup の最後で、KBDManagerが • 配列のソート、タスク生成、待ち処理開始、分散、待ち処理終了 • 配列をクリア
  • 30. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • PluginをModuleにRefactoringした • キャラ内のコリジョン・グループごとに計算すれば・・・ • ただ、専用AssetUserDataのデータ構造を変更しないと厳しい • 良かった このKBD対応が別のプロジェクトでも使われることになった 揺れものアニメーション 反 省 点
  • 31. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PGO による実行速度最適化
  • 32. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • PGO - Profile Guided Optimization の略 • コンパイラとリンカー要対応! • プロファイル(の結果)に基づく最適化 • 一般的な PGO • 実績:Windowsは10年以上, コンソール機は数年前から!? • 理論 PGO による最適化 P G O と は
  • 33. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PGO による実行速度最適化 (質問x2)
  • 34. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PGO を使わない場合は・・・ (イメージ) - Cpp の行単位で #pragma optimize speed #pragma optimize size - コンパイラのオプションで -OSpeed, -Osize - 等々 PGO による最適化 P G O と は
  • 35. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 理論: Training (Profiling, game play) 時によく通ったコード ー> ビルド時に速度最適化 それ以外のコード -> ビルド時にサイズ最適化 例: if ( ConditionX ) { // run A } else { // run B } PGO による最適化 P G O と は
  • 36. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PGO による最適化 P G O と は ( 出 典 : M a r c h 2 0 , 2 0 1 3 - - P r o f i l e G u i d e d O p t i m i z a t i o n - - A n k i t A s t h a n a )
  • 37. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana (.exe)
  • 38. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 例: if ( ConditionX ) { PGO( counterA ); // run A } else { PGO( counterB ); // run B } PGO による最適化 P G O と は
  • 39. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. (ジョブ) (.exe) (複数) 出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana
  • 40. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. (.exe) 出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana (複数)
  • 41. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • Sampling PGO (S-PGO) • Training用のビルドが要らない • UE4.19では未対応 • 自分で対応(ビルドオプションのみ) PGO による最適化 P G O と は
  • 42. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • UE4.19の機能だけを、うちのUE4(4.17)にマージした • Platformに依存しないビルドオプション -PGOProfile, -PGOOptimize (”-bAllowLTCG true” も) • コンソールコマンド “pgo start” -> プレイ -> ”pgo end” PGO による最適化 U E 4 . 1 9 に 導 入 さ れ た 機 能
  • 43. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 1. Training すべきところ 2. ジョブごとの自動プレイスクリプト(内製ツール) 3. ジョブごとに、平均フレーム速度をログ出力 4. その他:全体自動化、Platformごとの対応、SPGO、エ ラー対策、ライブラリのビルドなど PGO による最適化 プ ロ ジ ェ ク ト 側 で 対 応 し た こ と
  • 44. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 1. Training すべきところ PLAN 2. 自動プレイのスクリプト DO 3. ジョブごとに、平均フレーム速度をログ出力 CHECK KPI 4. その他:全体自動化、Platformごとの対応、SPGO、エ ラー対策、ライブラリのビルドなど PGO による最適化 プ ロ ジ ェ ク ト 側 で 対 応 し た こ と
  • 45. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PDC (Plan ->Do -> Check)のサイクルを回す • 全体最適化する • ジョブの効果高いものを残し、 ジョブの効果低いものを消す • 最適化できなかった例 PGO による最適化 プ ロ ジ ェ ク ト 側 で 対 応 し た こ と
  • 46. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • PS4でのフレーム速度の改善(Shipping) • 37ms -> 33ms(最大効果のところ) • UE4.19で導入された機能をマージ • 複数のPlatformのビルドオプション • コンソールコマンド PGO による最適化 ま と め 1 / 3 費 用 対 効 果
  • 47. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • デメリット • ビルドが長くなる • 自動プレイがない場合は面倒? PGO による最適化 ま と め 2 / 3
  • 48. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. (.exe) (.exe) 出典:March 20, 2013 -- Profile Guided Optimization -- Ankit Asthana
  • 49. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PGO による最適化 ま と め 3 / 3 Training用 ビルド Training用ビルド のRuntime速度 (1) ジョブの調整 (PDCサイクル) QA用ビルドの Runtime速度 対応 Platformの 数 PGO yes 重い より少し速い  SPGO no  大きく変わらない よりしやすい ?
  • 50. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PGO による最適化 ま と め 3 / 3 <戦略> 開発サイクルの最中では、S-PGOを 最終リリースの時期は、PGOを Training用 ビルド Training用ビルド のRuntime時の速度 (1) ジョブの調整 (PDCサイクル) QA用ビルド Runtime時の速 度 対応 Platformの 数 PGO yes 重い より少し速い  SPGO no  大きく変わらない よりしやすい ?
  • 51. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. おまけ:静的コード解析
  • 52. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ご清聴ありがとうございました! UNREALはエピック・ゲームズ・インコーポレーテッドの商標または登録商標です。 PlayStationおよびPS4は株式会社ソニー・インタラクティブエンタテインメントの商標または登録商標です。 その他掲載されている会社名、商品名は、各社の商標または登録商標です。