Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

10,708 views

Published on

※本セッションには多くの動画が含まれていたり、ノートに備考が記載されている可能性があります。実際の講演で行われたスライドが下記からダウンロード可能ですので、是非そちらをご覧頂けますと幸いです。
講演パワーポイントリンク: https://epicgames.box.com/s/e2qgrrtoel12aq6ug79kpmscu6ls4tmt

登壇者
HUI T.Y. Fredさま

内容 
揺れものアニメーションの並列化、PGO による最適化の応用編を紹介します。おまけとして、静的コード解析を簡単かつ低コストで導入するやり方も話させていただきます。

本スライドは2019年3月15日に行われた「UE4を用いた大規模開発事例紹介 ~スクウェア・エニックス様をお招きして~」にてスクウェア・エニックス様に講演していただいたものです。

Published in: Engineering
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 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. 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. 3. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. アジェンダ
  4. 4. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 自己紹介 • 揺れものアニメーションの改良と並列化 • PGO による実行速度の最適化 • おまけ:静的コード解析 アジェンダ
  5. 5. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 自己紹介 • 揺れものアニメーションの改良と並列化 • PGO による実行速度の最適化 • おまけ:静的コード解析 アジェンダ
  6. 6. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 自己紹介
  7. 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. 8. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 揺れものアニメーションの最適化
  9. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 31. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PGO による実行速度最適化
  32. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 51. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. おまけ:静的コード解析
  52. 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は株式会社ソニー・インタラクティブエンタテインメントの商標または登録商標です。 その他掲載されている会社名、商品名は、各社の商標または登録商標です。

×