Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Uploaded by
com044
PDF, PPTX
29,027 views
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー向け勉強会 in 大阪 https://connpass.com/event/76815/
Engineering
◦
Read more
More Related Content
PDF
猫でも分かる UE4の新しいサンプル「Action RPG」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
136 slides
37K views
PDF
UE4におけるレベル制作事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
178 slides
40.3K views
PDF
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
by
エピック・ゲームズ・ジャパン Epic Games Japan
141 slides
29.4K views
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
by
エピック・ゲームズ・ジャパン Epic Games Japan
123 slides
6.1K views
PDF
猫でも分かるUE4.22から入ったSubsystem
by
エピック・ゲームズ・ジャパン Epic Games Japan
85 slides
23.9K views
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
153 slides
38.8K views
PPTX
猫でも分かる UE4のAnimation Blueprintの運用について
by
エピック・ゲームズ・ジャパン Epic Games Japan
108 slides
79.1K views
PDF
UE4.25 Update - Unreal Insights -
by
エピック・ゲームズ・ジャパン Epic Games Japan
80 slides
4.6K views
猫でも分かる UE4の新しいサンプル「Action RPG」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
136 slides
37K views
UE4におけるレベル制作事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
178 slides
40.3K views
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
by
エピック・ゲームズ・ジャパン Epic Games Japan
141 slides
29.4K views
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
by
エピック・ゲームズ・ジャパン Epic Games Japan
123 slides
6.1K views
猫でも分かるUE4.22から入ったSubsystem
by
エピック・ゲームズ・ジャパン Epic Games Japan
85 slides
23.9K views
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
153 slides
38.8K views
猫でも分かる UE4のAnimation Blueprintの運用について
by
エピック・ゲームズ・ジャパン Epic Games Japan
108 slides
79.1K views
UE4.25 Update - Unreal Insights -
by
エピック・ゲームズ・ジャパン Epic Games Japan
80 slides
4.6K views
What's hot
PPTX
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
by
エピック・ゲームズ・ジャパン Epic Games Japan
207 slides
27.9K views
PPTX
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
by
エピック・ゲームズ・ジャパン Epic Games Japan
212 slides
61.8K views
PDF
UE4 LODs for Optimization -Beginner-
by
com044
173 slides
12.5K views
PDF
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
by
エピック・ゲームズ・ジャパン Epic Games Japan
266 slides
55.8K views
PDF
60fpsアクションを実現する秘訣を伝授 基礎編
by
エピック・ゲームズ・ジャパン Epic Games Japan
63 slides
31.1K views
PDF
【UE4.25 新機能】ロードの高速化機能「IOStore」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
53 slides
6.3K views
PPTX
[CEDEC2018] UE4アニメーションシステム総おさらい
by
エピック・ゲームズ・ジャパン Epic Games Japan
158 slides
20.9K views
PDF
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
by
エピック・ゲームズ・ジャパン Epic Games Japan
153 slides
21.5K views
PDF
60fpsアクションを実現する秘訣を伝授 解析編
by
エピック・ゲームズ・ジャパン Epic Games Japan
288 slides
31.3K views
PDF
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
by
エピック・ゲームズ・ジャパン Epic Games Japan
299 slides
44.2K views
PDF
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
by
エピック・ゲームズ・ジャパン Epic Games Japan
199 slides
15.3K views
PDF
UE4とUnrealC++について
by
Masahiko Nakamura
45 slides
40.6K views
PPTX
猫でも分かるUMG
by
エピック・ゲームズ・ジャパン Epic Games Japan
120 slides
65.6K views
PDF
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
by
Tatsuya Iwama
68 slides
24.8K views
PDF
UE4における大規模背景制作事例 描画特殊表現編
by
エピック・ゲームズ・ジャパン Epic Games Japan
187 slides
45K views
PPTX
UE4アセットリダクション手法紹介
by
エピック・ゲームズ・ジャパン Epic Games Japan
55 slides
22.5K views
PPTX
UE4を用いたTPS制作事例 EDF:IR レベル構成について
by
エピック・ゲームズ・ジャパン Epic Games Japan
76 slides
13.6K views
PDF
[UE4]自動テストでもっと楽したい!
by
com044
139 slides
21.1K views
PDF
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
by
エピック・ゲームズ・ジャパン Epic Games Japan
145 slides
8.5K views
PPTX
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
by
エピック・ゲームズ・ジャパン Epic Games Japan
69 slides
8K views
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
by
エピック・ゲームズ・ジャパン Epic Games Japan
207 slides
27.9K views
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
by
エピック・ゲームズ・ジャパン Epic Games Japan
212 slides
61.8K views
UE4 LODs for Optimization -Beginner-
by
com044
173 slides
12.5K views
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
by
エピック・ゲームズ・ジャパン Epic Games Japan
266 slides
55.8K views
60fpsアクションを実現する秘訣を伝授 基礎編
by
エピック・ゲームズ・ジャパン Epic Games Japan
63 slides
31.1K views
【UE4.25 新機能】ロードの高速化機能「IOStore」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
53 slides
6.3K views
[CEDEC2018] UE4アニメーションシステム総おさらい
by
エピック・ゲームズ・ジャパン Epic Games Japan
158 slides
20.9K views
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
by
エピック・ゲームズ・ジャパン Epic Games Japan
153 slides
21.5K views
60fpsアクションを実現する秘訣を伝授 解析編
by
エピック・ゲームズ・ジャパン Epic Games Japan
288 slides
31.3K views
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
by
エピック・ゲームズ・ジャパン Epic Games Japan
299 slides
44.2K views
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
by
エピック・ゲームズ・ジャパン Epic Games Japan
199 slides
15.3K views
UE4とUnrealC++について
by
Masahiko Nakamura
45 slides
40.6K views
猫でも分かるUMG
by
エピック・ゲームズ・ジャパン Epic Games Japan
120 slides
65.6K views
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
by
Tatsuya Iwama
68 slides
24.8K views
UE4における大規模背景制作事例 描画特殊表現編
by
エピック・ゲームズ・ジャパン Epic Games Japan
187 slides
45K views
UE4アセットリダクション手法紹介
by
エピック・ゲームズ・ジャパン Epic Games Japan
55 slides
22.5K views
UE4を用いたTPS制作事例 EDF:IR レベル構成について
by
エピック・ゲームズ・ジャパン Epic Games Japan
76 slides
13.6K views
[UE4]自動テストでもっと楽したい!
by
com044
139 slides
21.1K views
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
by
エピック・ゲームズ・ジャパン Epic Games Japan
145 slides
8.5K views
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
by
エピック・ゲームズ・ジャパン Epic Games Japan
69 slides
8K views
Similar to UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
PPTX
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
by
ai BlogOnly
110 slides
912 views
PPTX
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
by
ai BlogOnly
109 slides
961 views
PPTX
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
by
ai BlogOnly
109 slides
1.3K views
PPTX
猫でもわかるUnreal Engine4
by
pafuhana 1213
82 slides
60K views
PDF
UE4におけるエフェクトの基本戦略事例 前半
by
エピック・ゲームズ・ジャパン Epic Games Japan
180 slides
34.5K views
PDF
UE4における大規模レベル実装ワークフローとブループリント活用事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
196 slides
21.8K views
PDF
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
by
エピック・ゲームズ・ジャパン Epic Games Japan
103 slides
28.4K views
PDF
Unreal Engine 4の2019年上半期アップデート情報まとめ / GTMF 2019
by
Game Tools & Middleware Forum
103 slides
1.1K views
PPTX
[GTMF2019]Unreal Engine 4の2019年上半期 アップデート情報まとめ
by
エピック・ゲームズ・ジャパン Epic Games Japan
98 slides
2.7K views
PDF
UE4勉強会 in 大阪 - アニメーション基礎
by
com044
106 slides
10.7K views
PDF
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
by
com044
18 slides
1.8K views
PDF
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
150 slides
16.5K views
PDF
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
by
UnityTechnologiesJapan002
83 slides
5.2K views
PDF
中高校生対象プログラミング講座Part1
by
優希 山本
111 slides
1.1K views
PPTX
Nreal Lightハンズオン
by
Takashi Yoshinaga
193 slides
9K views
PDF
UE4におけるアニメーション制作事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
73 slides
31.2K views
PDF
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
by
com044
26 slides
1.9K views
PPTX
Unreal Studioのご紹介
by
エピック・ゲームズ・ジャパン Epic Games Japan
51 slides
7.2K views
PDF
FINAL FANTASY Record Keeper 演出データについて
by
dena_study
52 slides
21.7K views
PDF
Kuug 第1回
by
Shinobu Izumi
91 slides
2.8K views
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
by
ai BlogOnly
110 slides
912 views
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
by
ai BlogOnly
109 slides
961 views
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
by
ai BlogOnly
109 slides
1.3K views
猫でもわかるUnreal Engine4
by
pafuhana 1213
82 slides
60K views
UE4におけるエフェクトの基本戦略事例 前半
by
エピック・ゲームズ・ジャパン Epic Games Japan
180 slides
34.5K views
UE4における大規模レベル実装ワークフローとブループリント活用事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
196 slides
21.8K views
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
by
エピック・ゲームズ・ジャパン Epic Games Japan
103 slides
28.4K views
Unreal Engine 4の2019年上半期アップデート情報まとめ / GTMF 2019
by
Game Tools & Middleware Forum
103 slides
1.1K views
[GTMF2019]Unreal Engine 4の2019年上半期 アップデート情報まとめ
by
エピック・ゲームズ・ジャパン Epic Games Japan
98 slides
2.7K views
UE4勉強会 in 大阪 - アニメーション基礎
by
com044
106 slides
10.7K views
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
by
com044
18 slides
1.8K views
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
150 slides
16.5K views
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
by
UnityTechnologiesJapan002
83 slides
5.2K views
中高校生対象プログラミング講座Part1
by
優希 山本
111 slides
1.1K views
Nreal Lightハンズオン
by
Takashi Yoshinaga
193 slides
9K views
UE4におけるアニメーション制作事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
73 slides
31.2K views
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
by
com044
26 slides
1.9K views
Unreal Studioのご紹介
by
エピック・ゲームズ・ジャパン Epic Games Japan
51 slides
7.2K views
FINAL FANTASY Record Keeper 演出データについて
by
dena_study
52 slides
21.7K views
Kuug 第1回
by
Shinobu Izumi
91 slides
2.8K views
More from com044
PDF
UE4ぷちコンの勧め
by
com044
38 slides
5.8K views
PDF
2019年03月 UE4界隈ニュース
by
com044
16 slides
3.5K views
PDF
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
by
com044
136 slides
19.2K views
PDF
UE4でAIとビヘイビアツリーと-基礎-
by
com044
143 slides
18K views
PDF
AI基礎
by
com044
59 slides
6.1K views
PDF
2019年01月 UE4界隈ニュース
by
com044
25 slides
5.4K views
PDF
UE4でTranslucencyやUnlitに影を落としたい!
by
com044
208 slides
28.6K views
PDF
UE4 Volumetric Fogで 空間を演出する!
by
com044
70 slides
24.4K views
PDF
2018年11月 UE4界隈ニュース
by
com044
31 slides
2.5K views
PDF
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
by
com044
20 slides
1.6K views
PDF
UE4 アセットロード周り-アセット参照調査-
by
com044
44 slides
6K views
PDF
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
by
com044
34 slides
1.8K views
PDF
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
by
com044
17 slides
1.5K views
PDF
UE4勉強会 in 大阪 - もっとアニメーションBP
by
com044
154 slides
13.1K views
PDF
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
by
com044
17 slides
1.6K views
PDF
第4回UE4勉強会 in 大阪 UE4でのチーム製作
by
com044
72 slides
3.8K views
PDF
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
by
com044
15 slides
1.7K views
PDF
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
by
com044
81 slides
14.9K views
PDF
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
by
com044
84 slides
8.9K views
PDF
第1回UE4勉強会 in 大阪 - UE4界隈ニュース
by
com044
18 slides
1.9K views
UE4ぷちコンの勧め
by
com044
38 slides
5.8K views
2019年03月 UE4界隈ニュース
by
com044
16 slides
3.5K views
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
by
com044
136 slides
19.2K views
UE4でAIとビヘイビアツリーと-基礎-
by
com044
143 slides
18K views
AI基礎
by
com044
59 slides
6.1K views
2019年01月 UE4界隈ニュース
by
com044
25 slides
5.4K views
UE4でTranslucencyやUnlitに影を落としたい!
by
com044
208 slides
28.6K views
UE4 Volumetric Fogで 空間を演出する!
by
com044
70 slides
24.4K views
2018年11月 UE4界隈ニュース
by
com044
31 slides
2.5K views
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
by
com044
20 slides
1.6K views
UE4 アセットロード周り-アセット参照調査-
by
com044
44 slides
6K views
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
by
com044
34 slides
1.8K views
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
by
com044
17 slides
1.5K views
UE4勉強会 in 大阪 - もっとアニメーションBP
by
com044
154 slides
13.1K views
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
by
com044
17 slides
1.6K views
第4回UE4勉強会 in 大阪 UE4でのチーム製作
by
com044
72 slides
3.8K views
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
by
com044
15 slides
1.7K views
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
by
com044
81 slides
14.9K views
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
by
com044
84 slides
8.9K views
第1回UE4勉強会 in 大阪 - UE4界隈ニュース
by
com044
18 slides
1.9K views
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
1.
UE4 プログラマー向け勉強会 in
大阪 1 エンジンの内部挙動について
2.
自己紹介 ● Twitter: com04 ●
ゲームプログラマー ● マテリアル / レンダリング / エンジン拡張 ● 横浜 × 酒 ×UE4 2
3.
自己紹介 ●マーケットプレイスに出品しました − ComMaterialTools ● https://www.unrealengine.com/marketplace/commaterialtools ●
プロジェクト内のマテリアルノード検索 ● ディレクトリ単位でのマテリアル情報リスト化 ● 指定マテリアル内で使用されているテクスチャの場所検索 ●「 UE4 勉強会 in 大阪」の管理者やってます − https://ue4study-osaka.connpass.com/ ● 奇数月に開催。次回 5 回目。 ● 初心者、ベテラン問わず登壇して頂ける人募集しています ● (同じ人ばかりになってしまいそうなので是非お願いします) ●マーケットプレイスに出品しました − ComMaterialTools ● https://www.unrealengine.com/marketplace/commaterialtools ● プロジェクト内のマテリアルノード検索 ● ディレクトリ単位でのマテリアル情報リスト化 ● 指定マテリアル内で使用されているテクスチャの場所検索 ●「 UE4 勉強会 in 大阪」の管理者やってます − https://ue4study-osaka.connpass.com/ ● 奇数月に開催。次回 5 回目。 ● 初心者、ベテラン問わず登壇して頂ける人募集しています ● (同じ人ばかりになってしまいそうなので是非お願いします) 3
4.
はじめに 4
5.
はじめに 今回のお話し ● PC ベース ●
ネットワークは無し ● 調べた際の関数名等も記述しています。追いかけた い方は参考にしてください。 ● UE4 のソースコードは分かりやすいですが難解で す。間違ってたらごめんなさい。教えてください。 5
6.
はじめに 今回はこの辺り話しません ● ガベージコレクト ● レンダリング ●
処理負荷 6
7.
はじめに エンジンの内部まで知ってる必要あるの? 7
8.
はじめに 基本的には知らなくて良い(ハズ) ただ、クリティカルな問題に当たった時は知りたくなる 時があります ● 何か 1
フレームずれる ● 思った順番で処理されない ● こっちのシーンだと行けたのに、あっちだとおかしい ● エンジン内部のクラッシュ /Assert で詰まる 8
9.
はじめに AnswerHub 、 Forum
等で質問する手もあります。 ただ、返答が得られるかは親切な皆様 UE4 ユーザー 次第です。 また業務ベースだと表で質問出来無い事もあります。 有償サポートの UDN も有りますが、契約してない / アカウントが無い場合は使用できません。 9
10.
はじめに → エンジンのソースコード配布されてるやん! (プログラマー脳筋) 10
11.
もくじ ● World と
Scene と Level ● 処理順 ● Level のロード ● Level の Stream ● Actor の生成 /BeginPlay 順番 ● Actor の Tick 順番 ● スレッド ● 小ネタ version: UE4.18.2 11
12.
World と Scene
と Level 12
13.
World と Scene
と Level World (UWorld) ● Game 、 Editor 、 PIE とかの単位で World が存在 する ○ EWorldType ● そのまま世界全体を管理している。 ● 内部にロードした Level を保持している ○ UWorld::LevelCollections ■ DumpLevelCollections で確認出来る ■ 大体 DynamicSourceLevels に入る 13
14.
World と Scene
と Level Scene (FScene) ● UWorld の Renderer 機能 ○ 機能的に UWorld と分離しているので、 UWorld を持たな いエディタでプレビューすることが出来る。らしい ○ ビューやフレームに依存しない描画情報を管理している ■ 描画プリミティブやライトのリスト ● FScene 自体は FRendererModule::AllocateScene で生成、 管理される 14
15.
World と Scene
と Level Level (ULevel) ● Editor で使う Level と同じイメージ ● ULevel::Actors で Level に入っている Actor のリ ストを取得出来る (C++) 15
16.
処理順 16
17.
処理順 起点 ● FEngineLoop::Tick ○ UGameEngine::Tick ■
WorldList の数だけ UWorld::Tick を回す 17
18.
処理順 ● UWorld::Tick ○ NavigationSystem->Tick ○
LevelCollections の数だけ次のページの処理回す 18
19.
処理順 ● 各 Level
に対して処理する(1/2) ○ Tick ■ TG_PrePhysics ■ TG_StartPhysics ■ TG_DuringPhysics ■ TG_EndPhysics ■ TG_PostPhysics ○ CurrentLatentActionManager::ProcessLatentActions ○ GetTimerManager::Tick ○ FTickableGameObject::TickObjects( 同じ World のみ ) 19
20.
処理順 ● 各 Level
に対して処理する(2/2) ○ PlayerController::UpdateCameraManager ○ ProcessLevelStreamingVolumes ○ UpdateStreamingState ○ Tick ■ TG_PostUpdateWork ■ TG_LastDemotable ○ FTickTaskManagerInterface::EndFrame 20
21.
処理順 ● UWorld::Tick ○ Level
の処理 ○ Flush ■ GPhysCommandHandler::Flush ■ FinishAsyncTrace ■ BroadcastTickFlush ■ BroadcastPostTickFlush ○ FXSystem::Tick ○ GEngine->ConditionalCollectGarbage ○ EndTickDrawEvent 21
22.
処理順 ● 各 World
に対して処理する ○ USkyLightComponent::UpdateSkyCaptureContents ○ UReflectionCaptureComponent::UpdateReflectionCa ptureContents 22
23.
処理順 ● UGameEngine::Tick ○ FTickableGameObject::TickObjects
(全体) ○ GameViewport->Tick ○ RedrawViewports ○ GetRendererModule().PostRenderAllViewports ○ IStreamingManager::Tick ○ GameAudioDeviceManager- >UpdateActiveAudioDevices 23
24.
処理順 ● FEngineLoop::Tick ○ GShaderCompilingManager::ProcessAsyncResults ○
GDistanceFieldAsyncQueue::ProcessAsyncTasks ○ FSlateApplication::Tick ○ RHITick ○ FTicker::GetCoreTicker().Tick ○ FThreadManager::Get().Tick ○ GEngine->TickDeferredCommands 24
25.
処理順 長い 25
26.
処理順 大まかな要約 1. TickGroup 処理
( フィジックス後まで) 2. Actor 外の Latent 系処理 3. TimerEvent 系 4. FTickableGameObject 継承クラス更新 5. Streaming 更新 6. TickGroup 処理 ( アップデート後から) 7. FXSystem 更新 8. ガベージコレクション更新 (ConditionalCollectGarbage) 9. SkyLight/Reflection の Capture 更新 10.描画情報の設定 26
27.
Level のロード 27
28.
Level のロード 起点( OpenLevel
で遷移した際) ● UEngine::LoadMap ○ LoadPackage ○ UWorld::InitWorld ○ UWorld::SetGameMode ○ WorldContext.World()->FlushLevelStreaming ○ UWorld::InitializeActorsForPlay ○ UNavigationSystem::InitializeForWorld ○ ULocalPlayer::SpawnPlayActor ○ WorldContext.World()->BeginPlay(); ○ GameInstance::LoadComplete 28
29.
Level のロード 要約( 1
/ 3 ) 1. PersistentLevel のロード ● LoadPackage ○ ULevel::Serialize / PostLoad 2. GameMode を生成する ○ UWorld::SetGameMode ■ UGameInstance::CreateGameModeForURL 3. SubLevel のロード ● WorldContext.World()->FlushLevelStreaming ○ ULevel::Serialize / PostLoad 29
30.
Level のロード 要約( 2
/ 3 ) 4. ロードした Level にある Actor を生成する a. UWorld::InitializeActorsForPlay i. ULevel::IncrementalUpdateComponents 5. ナビゲーションの初期化 b. UNavigationSystem::InitializeForWorld 6. プレイヤー生成 ULocalPlayer::SpawnPlayActor UWorld::SpawnPlayActor a.GameMode::Login 呼ばれる b.GameMode::PostLogin 呼ばれる 30
31.
Level のロード 要約( 3
/ 3 ) 7. BeginPlay が呼ばれる GameMode::StartPlay a.GameMode b.GameState c.Actor 達 8. GameInstance::LoadComplete が呼ばれる 31
32.
Level の Stream 32
33.
Level の Stream ●
[LoadStreamLevel] で SubLevel を動的ロード ● [UnloadStreamLevel] で開放 ● [GetStreamingLevel] - [Should be Visible] で動 的ロードした SubLevel の表示 ON / OFF 33
34.
Level の Stream [Should
be Visible] で ON にした時の挙動 ● UWorld::AddToWorld ○ ULevel::IncrementalUpdateComponents ■ AActor::IncrementalRegisterComponents ■ AActor::BeginPlay ● Level に所属している Actor が順次登録されていく 34
35.
Level の Stream ●
Actor が登録されていくのはフレーム分割される ○ GLevelStreamingActorsUpdateTimeLimit 単位 ■ この時間を超えると、残りの Actor は次のフレームに持ち越し ■ デフォルト 5.0ms ● “s.LevelStreamingActorsUpdateTimeLimit” で変更可能 ■ LoadStream した Level を暗転中に表示。とかする場合は時間制 限を長めにしないと暗転時間が長くなる可能性 ● ブロッキングする事に注意 35
36.
Level の Stream [Should
be Visible] で OFF にした時の挙動 ● UWorld::RemoveFromWorld ○ ULevel::IncrementalUnregisterComponents ■ AActor::UnregisterAllComponents ■ AActor::EndPlay(EEndPlayReason::RemovedFromWorld) ● Level に所属している Actor が順次外されていく 36
37.
Level の Stream ●Actor
を外していくのはフレーム分割される ○ GLevelStreamingUnregisterComponentsTimeLimit 単位 ■ この時間を超えると、残りの Actor は次のフレームに持ち越し ■ デフォルト 1.0ms ● “s.UnregisterComponentsTimeLimit” で変更可能 ■ こちらも LoadStream した Level を暗転中に非表示。とかする 場合は時間制限を長めにしないと暗転時間が長くなる可能性 ● ブロッキングする事に注意 37
38.
Level の Stream ●
Actor 自体の生成は LoadStreamLevel で読み込ま れた段階 ● [Should be Visible] の ON/OFF では Level に関 連付いている Actor 自体は Destroy されない 38
39.
Level の Stream ここで注意! ●
Actor の BeginPlay 、 EndPlay は Shold be Visible を ON/OFF するだけで再度呼び出される ○ 可能性が有る場合は BeginPlay は2回目突入されても大 丈夫な作りを ■ [DoOnce] で処理すれば初回だけ通る様に出来る 39
40.
Actor の生成 /BeginPlay
順番 40
41.
Actor の生成 /BeginPlay
順番 ULevel 内に保存されている Actor の順番で初期化さ れる →ULevel 内の Actor の順番は明確な基準無し ただし、 ULevel::IsNetActor な Actor は末尾に来る ようにソートされる →ULevel::SortActorList で行われる →IsNetActor は主に UCharacter クラス等が ON 41
42.
Actor の生成 /BeginPlay
順番 つまり明示的に Actor の BeginPlay 順番を設定出来な い →BeginPlay では Actor 同士の生成順番に依存しないよう に! 42
43.
Actor の生成 /BeginPlay
順番 とはいえ欲しい場合は…… 1. 全 Actor の BeginPlay が終わった後で処理する a. UGameInstance::LoadComplete を override b. AGameModeBase::StartPlay を override 2. GameMode/GameState 等で順番に Spawn する 3. ULevel::SortActorList でソートする(要エンジン改造) 43
44.
Actor の Tick
順番 44
45.
Actor の Tick
順番 そもそも Tick 順って考える必要ある? 45
46.
Actor の Tick
順番 テストケース プレイヤーが参加者全員の時間を止めることが出来る 46
47.
Actor の Tick
順番 一列に並んだ Actor 達 左右方向の座標値は同じ値 47 Actor Actor Actor ( Player ) Character
48.
Actor の Tick
順番 BP は Tick で移動するようなロジック 48
49.
Actor の Tick
順番 Player だけは、参加者全員の CustomTimeDilation を 0 にすることが出来る (= Tick 等の Time スケールをゼロに) 49
50.
Actor の Tick
順番 とりあえず実行して停止機能を発動させると…… 50 Character だけが後ろに居る!
51.
Actor の Tick
順番 状況次第では…… 51 Player 以外が後ろに居る!
52.
Actor の Tick
順番 Tick で処理を行っている為、 Tick の順番次第で処理 の流れが代わってしまう事が原因 52
53.
Actor の Tick
順番 停止させたフレーム内での処理 1. 赤の Actor::Tick 。移動する 2. 緑の Actor::Tick 。移動する 3. Player の Tick 。移動+他の Actor の CustomTimeDilation をゼロに 4. Character の Tick 。 CustomTimeDilation がゼロなので 移動量がゼロに! 53 1 24 3
54.
Actor の Tick
順番 停止させたフレーム内での処理 1. Player の Tick 。移動+他の Actor の CustomTimeDilation をゼロに 2. 赤の Actor::Tick 。 CustomTimeDilation が ゼロなので移動量がゼロに! 3. 緑の Actor::Tick 。 CustomTimeDilation が ゼロなので移動量がゼロに! 4. Character の Tick 。 CustomTimeDilation が ゼロなので移動量がゼロに! 54 2 3 4 1
55.
Actor の Tick
順番 今回のは極端な例ですが、もしこの状態を SceneCapture 等で撮影して止め絵使う場合。 カットシーンで一部の Actor の処理が1フレームだけ ズレてしまう場合。 下手すると、こちらのシーンだと正常だけど、そちら のシーンだとおかしくなる、といった事も発生しえま す。 55
56.
Actor の Tick
順番 → 順番ってどうなってるの? 56
57.
Actor の Tick
順番 FTickTaskSequencer が Tick を管理している ● AllEnabledTickFunctions に Tick が有効なリスト を保持している ○ FTickFunction::SetTickFunctionEnable で登録 ● Actor は生成時に登録する 57
58.
Actor の Tick
順番 毎フレーム Tick の処理 1. Tick が有効なリストから、今回実行する TickGroup をキューに積む ○ TickFunction->QueueTickFunction で行う ○ “tick.AllowAsyncTickDispatch 1” で ASync で積める 2. 積んだキューを実行する ○ GameThread で実行 3. 終了を待つ ○ FTaskGraphInterface::Get().WaitUntilTasksComplete 58
59.
Actor の Tick
順番 TickGroup ● このグループ単位で処理されていく ● 大まかな順序付け出来る ● AActor からは PrimaryActorTick::TickGroup ● BP の Actor 設定に有る 59
60.
Actor の Tick
順番 Tick の開始と終了 ● Tick を始める Group 設定 ○ FTickFunction::TickGroup ● Tick の終了を同期する Group 設定 ○ FTickFunction::EndTickGroup ○ GameThread が SingleThread で動いていると意味ない ハズ……? 60
61.
Actor の Tick
順番 TickGroup ● TG_PrePhysics ● TG_StartPhysics ● TG_DuringPhysics ● TG_EndPhysics ● TG_PostPhysics ● TG_PostUpdateWork ● TG_LastDemotable 61
62.
Actor の Tick
順番 Editor で設定出来るグループ ● TG_PrePhysics (フィジックス前) ● TG_StartPhysics ● TG_DuringPhysics (フィジックス中) ● TG_EndPhysics ● TG_PostPhysics (フィジックス後) ● TG_PostUpdateWork (アップデート後) ● TG_LastDemotable 62
63.
Actor の Tick
順番 TG_PrePhysics ● 物理処理前に行う Tick ● ゲームループで真っ先に処理される ● AActor 等、物理行うものとか大体ここ ● USkeletalMeshComponent は物理ありの場合は終了同期は PostPhysics になる。無しの場合は PrePhysics 。 63
64.
Actor の Tick
順番 TG_DuringPhysics ● 物理処理と並行して行う Tick ● 物理処理が重い環境だと、この TickGroup 設定に重い Tick 処理を持って来るとパフォーマンスが改善するかも ● ActorComponent 等、物理を絡まない Component 類 64
65.
TG_PostPhysics ● 物理処理が終わった後に処理される Tick ●
物理の結果を拾って何かする時 ○ FSkeletalMeshComponentEndPhysicsTickFunction ○ FCharacterMovementComponentPostPhysicsTickFunct ion ○ FPrimitiveComponentPostPhysicsTickFunction Actor の Tick 順番 65
66.
Actor の Tick
順番 TG_PostUpdateWork ● おおよそ全ての更新処理が終わった後に呼ばれる Tick 66
67.
Actor の Tick
順番 同一 TickGroup 内での順番は? 67
68.
Actor の Tick
順番 TickGroup 内で処理される順番 1. HighPriority 設定優先 2. EndTickGroup 順(終了同期設定) 3. 管理クラスの Tick リストに積まれた順 a. = Level に保存された Actor 順 b. Spawn された Actor 順 ※ 例外設定で順番が変わることもある 68
69.
Actor の Tick
順番 HighPriority ● bHighPriority フラグが ON になっていると、同一 TickGroup 内でも優先的に処理される ● ただし、 C ++からのみ設定可能 ○ FTickFunction::SetPriorityIncludingPrerequisites 69
70.
Actor の Tick
順番 EndTickGroup 順(終了同期設定) ● 配列で EndTickGroup 要素順に並んでいるので、 その順番にキューに突っ込まれる ● ここを期待してソートするのはキツい 70
71.
Actor の Tick
順番 管理クラスの Tick リストに積まれた順 ● Level に保存された Actor 順 ○ 改造で順番をソートして保存しない限り意図した実行順に するのはほぼ無理 ● Spawn した順 ○ こちらはある程度意図した通りに制御出来そう ■ ただ、内部的に TickGroup が違う等、設定が違うとかがあると狂 う 71
72.
Actor の Tick
順番 順番の例外設定 ● Attach 等親子関係を持つ Actor 同士は順番を考慮 される。子供が後に処理される ● UE4 で Actor 間の Tick 実行順序に依存関係を持た せる方法 - ほげたつブログ ○ http://hogetatu.hatenablog.com/entry/2016/06/28/233002 ■ AActor::AddTickPrerequisiteActor を使う 72
73.
Actor の Tick
順番 ややこしい 73
74.
Actor の Tick
順番 分かりやすく Tick の優先付けするとしたら…… 1. TickGroup 2. HighPriority 3. 個別の関連付け くらい 74
75.
Actor の Tick
順番 細かい順番には依存させず、依存が必要なら TickGroup を分ける位の括りが良い もしくは Tick で処理せずに、管理クラスで一括で処 理する等 75
76.
スレッド 76
77.
スレッド ● FRunnable を継承しているのがスレッド ●
TGraphTask<TaskClass>::CreateTask(NULL).C onstructAndDispatchWhenReady(Task, *this); ○ のような形で動作しているのはタスクスレッドに積まれ て実行される。(これも別スレッド動作) 77
78.
スレッド 主なスレッド処理 ● GameThread ● FRenderingThread ●
FAudioThread ● FPhysXTask ● FParallelAnimationEvaluationTask 78
79.
スレッド GameThread ● Tick とか動かしているスレッド ●
基本的にメインスレッド扱いになる筈 79
80.
スレッド FRenderingThread ● 描画コマンド発行スレッド ● GameThread
で変更した RenderState や RenderTransform を受け取って GPU に流し込むコ マンドを生成する ○ ENQUEUE_RENDER_COMMAND 系を使用することで RenderThread に Task を投げる ○ UWorld::SendAllEndOfFrameUpdates で GameThread から RenderThread へ更新した描画情報を投げている ■ UActorComponent::DoDeferredRenderUpdates_Concurrent で更新 80
81.
スレッド FAudioThread ● オーディオ周りの処理を行うスレッド ○ このクラス自体での処理はない ○
外部の USoundWave や FAudioDevice 、 UAudioComponent からコマンドを投 げられて処理する為のスレッド ■ FAudioThread::RunCommandOnAudioThread(<lamda 式 >) でコマンドを投げる 81
82.
スレッド FPhysXTask ● 物理計算のタスク。スレッドで並列処理される ○ FPhysScene
でアクセスされる ○ FStartPhysicsTickFunction で開始 ■ TickGroup: StartPhysics ○ FEndPhysicsTickFunction で終了 ■ TickGroup: EndPhysics 82
83.
スレッド FParallelAnimationEvaluationTask ● スレッドで並列処理される ● USkeletalMeshComponent::RefreshBoneTransfor ms ○
“a.ParallelAnimEvaluation 0” で使わない様にも出来 る ■ USkeletalMeshComponent::PerformAnimationEvaluation が並 列化される ■ UAnimInstance::ParallelUpdateAnimation が並列化。ポーズの 計算が並列化されている 83
84.
スレッド ほか今回解析出来なかったスレッド類(の一部) ● TAsyncRunnable ● FAssetDataDiscovery ●
FAssetDataGatherer ● FAsyncWriter ● FUnrealAudioModule ● FUnrealAudioWasapi ● FUnrealAudioXAudio2 ● FSoundFileDecoder ● IAudioMixerPlatformInterface ● FMultichannelTcpReceiver ● FShaderCompileThreadRunnableBase 84
85.
小ネタ 85
86.
小ネタ InputEvent のタイミング 86
87.
InputEvent のタイミング Actor で使用できる入力イベントノード 87
88.
InputEvent のタイミング APlayerController の
Tick で呼び出される ● APlayerController::TickActor ○ APlayerController::PlayerTick ■ APlayerController::TickPlayerInput ● APlayerController::ProcessPlayerInput ○ UPlayerInput::ProcessInputStack 88
89.
CollisionEvent のタイミング 89
90.
CollisionEvent のタイミング Actor で使用できるコリジョンイベント 90
91.
CollisionEvent のタイミング ● UPrimitiveComponent::UpdateOverlaps
等で呼 びされる ○ 場所的には、 [SetActorLocation] 等の移動処理のタイ ミングで Overlap を計算してイベントを呼び出す 91
92.
小ネタ 遅延実行のタイミング 92
93.
遅延実行のタイミング Delay 系のノード ● Actor
の Tick 内で処理される ○ AActor::Tick ■ GetLatentActionManager().ProcessLatentActions ● ただし、 TickInterval 等で Actor の Tick がスキッ プされた場合は UWorld::Tick で処理される ○ CurrentLatentActionManager::ProcessLatentActions ■ ※ 実行順番が変わるので注意! 93
94.
遅延実行のタイミング SetTimer 系のノード ● Actor
の Tick ではなく、 UWorld::Tick で呼ばれ る FTimerManager::Tick から処理される ● TickGroup 的には TG_PostPhysics の 後、 TG_PostUpdateWork の前 94
95.
小ネタ ノード右上のアイコンなに? 95
96.
ノード右上のアイコンなに? 時計マーク ● [Delay] /
[LoadAsset] 等に使用 ● Latent ノード ○ UFUNCTION に meta で Latent 指定 ■ FBlueprintMetadata::MD_Latent ● ノード内部の処理が終わるまで待機する。次に行か ない 96
97.
ノード右上のアイコンなに? PC+ 雷マーク ● [AnyDamage]
等に使用 ● AuthorityOnly ○ UFUNCTION に BlueprintAuthorityOnly 指定 ● “ ネットワーク権限を持つマシン上で ( サーバー、 Dedicated サーバー、シングル プレイヤー ゲーム ) 実行されている場 合、この関数はブループリントのコードからのみ実行されま す” ○ 関数 - Document ■ https://docs.unrealengine.com/latest/JPN/Programming/UnrealArchit ecture/Reference/Functions/index.html 97
98.
ノード右上のアイコンなに? モニター+雷マーク ● [Create Widget]
等に使用 ● Cosmetic (ClientEvent) ○ UFUNCTION に BlueprintCosmetic 指定 ● “ この関数は表面上のもので、 Dedicated サーバー上では 実行されません。” ○ 関数 - Document ■ https://docs.unrealengine.com/latest/JPN/Programming/UnrealArch itecture/Reference/Functions/index.html 98
99.
ノード右上のアイコンなに? 丸二つマーク ● Replicated ○ UPROPERTY
に Replicated 指定 ○ BP 上では変数のレプリケーション設定 ● ネットワーク上で同期を取ってくれる 99
100.
ノード右上のアイコンなに? 雷マーク ● AnimationBP 内の
AnimGraph で使用 ● FastPath ● 繋がれる変数ノードが特定条件の時、 構造化して最適化してくれる ○ アニメーションのファストパスによる最適化 - Document ■ https://docs.unrealengine.com/latest/JPN/Engine/Animation/Optim ization/FastPath/index.html ○ スミオ先生の検証ツイートツリー - Twitter ■ https://twitter.com/tempkinder/status/940246489120391169 100