SlideShare a Scribd company logo
1 of 145
Download to read offline
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
LOGO ILLUSTRATION:©1997 YOSHITAKA AMANO
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
※「Unreal Engine 4」は Epic games, Inc. の商標または登録商標です。
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
いずれかの条件でQAからバグとして報告されてしまう!!
条件1
条件2
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
QA
プロファイリング担当
修正担当者
(アーティスト・プログラマ)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
-
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Thread 優先度 アフィニティマスク
GameThread TPri_Normal MAKEAFFINITYMASK1(0)
RenderingThread TPri_Normal MAKEAFFINITYMASK1(1)
RHIThread TPri_Normal MAKEAFFINITYMASK1(2)
TaskGraphThread TPri_SlightlyBelowNormal MAKEAFFINITYMASK7(0, 1, 2, 3, 4, 5, 6)
PoolThread TPri_Lowest MAKEAFFINITYMASK4(3, 4, 5, 6)
AsyncLoadingThread TPri_BelowNormal MAKEAFFINITYMASK5(2, 3, 4, 5, 6)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
void UParticleSystemComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
{
// 省略...
AsyncWork = TGraphTask<FParticleAsyncTask>::CreateTask(nullptr, ENamedThreads::GameThread).ConstructAndDispatchWhenReady(this);
ThisTickFunction->GetCompletionHandle()->DontCompleteUntil(AsyncWork);
// 省略...
}
class FParticleAsyncTask
{
// 省略...
void DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent)
{
FGraphEventRef Finalize = TGraphTask<FParticleFinalizeTask>::CreateTask(nullptr, CurrentThread).ConstructAndDispatchWhenReady(Target);
MyCompletionGraphEvent->DontCompleteUntil(Finalize);
}
// 省略...
};
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
TickGroup
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
GameThread
TaskGraphThread
Tick
Async
Finalize
NullTask
このタスクがあると
他のタスク実行を
邪魔する
TickGroup
の終わり
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
UParticleSystemComponent::UParticleSystemComponent(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
// 省略...
AsyncTickFunction.Target = [this](float DeltaTime) {
ComputeTickComponent_Concurrent();
};
FinalizeTickFunction.Target = [this](float DeltaTime) {
FinalizeTickComponent();
};
// 省略...
}
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
void UParticleSystemComponent::RegisterComponentTickFunctions(bool bRegister)
{
// 省略...
if (bRegister)
{
if (SetupActorComponentTickFunction(&AsyncTickFunction))
{
AsyncTickFunction.AddPrerequisite(this, PrimaryComponentTick);
}
if (SetupActorComponentTickFunction(&FinalizeTickFunction))
{
FinalizeTickFunction.AddPrerequisite(this, AsyncTickFunction);
}
}
else
{
if (AsyncTickFunction.IsTickFunctionRegistered())
{
AsyncTickFunction.UnRegisterTickFunction();
}
if (FinalizeTickFunction.IsTickFunctionRegistered())
{
FinalizeTickFunction.UnRegisterTickFunction();
}
}
// 省略...
}
StartFrame TickGroup
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
GameThread
TaskGraphThread
Tick
Async
Finalize
TickGroup
の終わり
Tick
Async
Finalize
すべての
TickGroup前に
タスクの依存関係の
構築をするようになる
NullTaskがなくなり直接
TickGroupの終わりへ
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
UObjectの数 GCの負荷
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
int32 FEngineLoop::PreInit( const TCHAR* CmdLine )
{
// 省略...
UObject* StartupPackages = LoadPackage(NULL, TEXT("/Game/ResidentAsset"), LOAD_None);
if (GUObjectArray.IsOpenForDisregardForGC())
{
GUObjectArray.CloseDisregardForGC();
}
// 省略...
}
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Total:243350
対応前
Total: 140681
対応後
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
108.76
69.33
83.87
93.83
55.28
67.48
0
20
40
60
80
100
120
A地点 B地点 C地点
ミ
リ
秒
未対応 Disregard for GC
-14.93 ms
-14.05 ms
-16.39 ms
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
[/Script/Engine.GarbageCollectionSettings]
gc.ActorClusteringEnabled=True
// クラスタを作る
virtual bool UHoge::CanBeClusterRoot() const override { return true; }
// クラスタへ入れないようにする
virtual bool UHoge::CanBeInCluster() const override { return false; }
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Total:140681 Total:72345
対応後
対応前
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
93.83
55.28
67.48
84.07
43.71
58.03
0
10
20
30
40
50
60
70
80
90
100
A地点 B地点 C地点
ミ
リ
秒
Disregard for GC のみ GC Cluster + Disregard for GC
-9.76 ms
-11.57 ms
-9.45 ms
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
37.62
24.05
12.9
60.48
59.15 59.35
10.66 10.63 10.8
0
10
20
30
40
50
60
70
未対応 Disregard for GC のみ GC Cluster + Disregard for GC
ミ
リ
秒
PerformReachabilityAnalysis UnhashUnreachable その他
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
class UHoge : public UObject
{
// 省略...
virtual bool IsDestructionThreadSafe() const override { return true; }
// 省略...
};
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
84.07
43.71
58.03
20.52
16.83 18.04
0
10
20
30
40
50
60
70
80
90
A地点 B地点 C地点
ミ
リ
秒
GC Cluster + Disregard for GC すべての改善
-26.88 ms
-63.55 ms
-39.99 ms
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
12.9
10.82
59.35
0.45
10.8 10.25
0
10
20
30
40
50
60
70
GC Cluster + Disregard for GC すべての改善
ミ
リ
秒
PerformReachabilityAnalysis UnhashUnreachable その他
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
1 2 3 4
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
適用前 適用後
Frame Rate -2.42 FPS
Game -2.09 ms
Draw -1.53 ms
適用後は大幅な改善!!
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
22.1468 20.668
6.586
70.564
19.012 18.167
5.458
62.443
0
10
20
30
40
50
60
70
80
Game Thread Render Thread RHI Thread All TaskGraphThreads
ミ
リ
秒
適用なし PGO+LTO
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
-3.1348 ms -2.501 ms
-1.128 ms
-8.121 ms
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
Frame 2
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Frame 1
GameThread
FEngineLoop
Tick
AsyncLoadingThread
FrameSync
Loading
処理
FEngineLoop
Tick
FrameSync
Loading
処理
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Frame 3 Frame 4 Frame 5
Frame 2
Frame 1
GameThread
FEngineLoop
Tick
AsyncLoadingThread
Loading
処理
FEngineLoop
Tick
Loading
処理
FEngineLoop
Tick
Loading
処理
FEngineLoop
Tick
Loading
処理
FEngineLoop
Tick
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
class UHoge : public UObject
{
// 省略...
virtual bool IsPostLoadThreadSafe() const override { return true; }
// 省略...
};
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
OFF ON
12.453秒 6.447秒
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
OFF ON
6.447秒 1.926秒
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Character Movement Component
Skeletal Mesh Component
※ Root Motion と Parallel Evaluate Animation 使用時。Physics / Cloth は除く
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Game Thread で実行される Character Movement Component Tick
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Character Movement Component Tick で実行される Update Animation
(アニメーション時間更新と Root Motion 移動量計算)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Game Thread で実行される Skeletal Mesh Component Tick
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Skeletal Mesh Component Tick からタスクを積まれ、
Task Thread で実行される Evaluate Animation
(アニメーションポーズ評価)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Skeletal Mesh Component Tick からタスクを積まれ、
Evaluate Animation 完了後に実行される
Game Thread で実行される Complate Animation
(Component Transform 更新、Physics Scene 更新、Notify 呼び出し)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Character Movement Component
Skeletal Mesh Component
※ Root Motion と Parallel Evaluate Animation 使用時。Physics / Cloth は除く
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Task Thread で実行される Character Movement Component Tick
Update Animation も同タイミングで並列実行
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Game Thread で実行される Post Character Movement Update
シーンをクラスタ分割して必要なもの同士のみ押し当たりを実行
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Task Thread で実行される Skeletal Mesh Component Tick
※ Tick Manager によるスケジューリング時に投入されるのでオーバーヘッドが少ない
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Game Thread で実行される Skeletal Mesh Component Post Tick
※ Tick Manager によるスケジューリング時に投入されるのでオーバーヘッドが少ない
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
IK はどうする?
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
次のフレームまでに
まとめて実行
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
モーションA
モーションB
クロスフェード
モーションA モーションB
慣性補間
加算
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
直リファレンスは基本的に NG
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
FName name = TEXT("HogeHoge");
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
static const FName StaticName = TEXT("HogeHoge");
FName name = StaticName;
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
UCLASS()
class UMyClass : public UObject
{
GENERATED_BODY()
UPROPERTY()
TArray< FMyStruct > MyDataList;
TMap< int32, FMyStruct > MyDataMap;
virtual void Serialize(FArchive& Ar) override;
};
UCLASS()
class UMyClass : public UObject
{
GENERATED_BODY()
UPROPERTY()
TMap< int32, FMyStruct > MyDataMap;
};
実装イメージ
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
void UMyClass::Serialize(FArchive& Ar)
{
Super::Serialize(Ar);
// MyDataListはデシリアライズされたTArray
if (MyDataList.Num() > 0)
{
if (MyDataMap.Num() == 0)
{
MyDataMap.Reserve(MyDataList.Num());
for (auto& Elem : MyDataList)
{
// TMapへコピー
MyDataMap.Add(Elem.Id, Elem);
}
}
}
}
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
実行時間[ms]
対応前(TMap) 468.87
対応後(TArray) 193.84
約60%の改善
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
実行データ
(UDataTable)
コンバート
・C++クラスの自動生成
・uassetの更新
企画データ(Excel)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
コンバート
・C++クラスの自動生成
・uassetの更新
企画データ(Excel) 実行データ
(独自形式)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
struct MyDataTableRow
{
int32 HitPoint;
int32 MagicPoint;
bool GameFlag;
TArray<int32> SomeDataList;
void SaveOrLoad(FArchive &Ar);
};
void MyDataTableRow::SaveOrLoad(FArchive &Ar)
{
// 保存と読み出し
Ar << HitPoint;
Ar << MagicPoint;
Ar << GameFlag;
Ar << SomeDataList;
}
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
UCLASS()
class UMyDataTable : public UObject
{
GENERATED_BODY()
// 行データ
TMap<FName, FMyDataTableRow> RowDataMap;
virtual void Serialize(FArchive& Ar) override;
};
void UMyDataTable::Serialize(FArchive& Ar)
{
Super::Serialize(Ar);
if (Ar.IsSaving())
{
// 保存
int32 RowNums = RowDataMap.Num();
Ar << RowNums;
for (auto& Elem : RowDataMap)
{
FName RowName;
Ar << Elem.Key;
Elem.Value.SaveOrLoad(Ar);
}
}
else
//… 省略
}
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
データ型 ディスクサイズ[MB]
DataTable 171
独自形式 49.3
約70%の削減
データ型 平均実行時間[ms] 最大実行時間[ms]
DataTable 0.0364 13.305
独自形式 0.0082 4.528
約65%の改善
ファイルサイズの比較
デシリアライズ時間の比較
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
※「MotionBuilder」は Autodesk, Inc. の商標または登録商標です。
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
Shot 1 Shot 2 ….. Shot XX
Shot 1 Shot 2 ….. Shot XX
オーサリング用
シーケンサー
前半
シーケンサー
後半
シーケンサー
(※補足:ショットとは、カットシーンでカメラが切り替わる間の範囲)
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
• カットシーンパート
(再生中に後半シーケンサーをロード)
• チャプター開始
• フリー操作パート
• カットシーン前半部のロード
• 終了のトリガーを受け取り、
次のカットシーン前半部の
ロードを開始
• 以降、同様のゲームサイクル
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
表示切替トリガー
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
時間[s]
Frame 1 Frame 3
Frame 2 Frame 4
Frame 1 Frame 3
Frame 2 Frame 4
アクター表示
表示 表示 表示 表示
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
1フレ表示 分散表示
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2021 SQUARE ENIX CO., LTD. All Rights Reserved.

More Related Content

What's hot

そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~エピック・ゲームズ・ジャパン Epic Games Japan
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDエピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!Masahiko Nakamura
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてcom044
 
UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!com044
 

What's hot (20)

そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
UE4におけるエフェクトの基本戦略事例 後半
UE4におけるエフェクトの基本戦略事例  後半UE4におけるエフェクトの基本戦略事例  後半
UE4におけるエフェクトの基本戦略事例 後半
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)
もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)
もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
 
UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
 
UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
 
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
 
UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!
 
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
 

Similar to 『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER

Deno で始めるフロントエンド
Deno で始めるフロントエンドDeno で始めるフロントエンド
Deno で始めるフロントエンド虎の穴 開発室
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingKeiji Kikuchi
 
インターネットプログラミング 解説資料
インターネットプログラミング 解説資料インターネットプログラミング 解説資料
インターネットプログラミング 解説資料Yuto Watanabe
 
Quiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasiaQuiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasiaYosuke Furukawa
 
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)blockchainexe
 
『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援
『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援
『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援TakumaYoshimura
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育NVIDIA Japan
 
かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介Tomoaki Shimizu
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてFixstars Corporation
 
7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」
7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」
7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」Tellusxdata1
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~Web Technology Corp.
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門Toru Miyahara
 

Similar to 『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER (20)

ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)
ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)
ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)
 
Deno で始めるフロントエンド
Deno で始めるフロントエンドDeno で始めるフロントエンド
Deno で始めるフロントエンド
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
 
インターネットプログラミング 解説資料
インターネットプログラミング 解説資料インターネットプログラミング 解説資料
インターネットプログラミング 解説資料
 
デジタル水遊び (UE4 VFX Art Dive)
デジタル水遊び (UE4 VFX Art Dive)デジタル水遊び (UE4 VFX Art Dive)
デジタル水遊び (UE4 VFX Art Dive)
 
Quiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasiaQuiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasia
 
オタク×Node.js勉強会
オタク×Node.js勉強会オタク×Node.js勉強会
オタク×Node.js勉強会
 
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)
 
『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援
『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援
『逆転オセロニア』における バンディットアルゴリズムおよび強化学習を用いた 対戦環境のバランス設計支援
 
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
実行速度の最適化のあれこれ プラス おまけ
実行速度の最適化のあれこれ プラス おまけ  実行速度の最適化のあれこれ プラス おまけ
実行速度の最適化のあれこれ プラス おまけ
 
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育
 
かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介
 
vmware-meetup7
vmware-meetup7vmware-meetup7
vmware-meetup7
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
 
7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」
7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」
7日でマスター!基礎から学ぶ衛星データ講座~6日目~ 「TellusのHow to Useを参考に実際に開発環境を見てみよう」
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 

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

『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 
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エピック・ゲームズ・ジャパン Epic Games Japan
 
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 

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

初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
 
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
 
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
 
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)
 

『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER

  • 1. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI LOGO ILLUSTRATION:©1997 YOSHITAKA AMANO
  • 2. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 3. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. ※「Unreal Engine 4」は Epic games, Inc. の商標または登録商標です。
  • 4. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 5. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 6. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 7. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 8. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 9. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 10. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 11. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 12. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 13. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 14. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 15. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 16. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. いずれかの条件でQAからバグとして報告されてしまう!! 条件1 条件2
  • 17. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. QA プロファイリング担当 修正担当者 (アーティスト・プログラマ)
  • 18. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. -
  • 19. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 20. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 21. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 22. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 23. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 24. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Thread 優先度 アフィニティマスク GameThread TPri_Normal MAKEAFFINITYMASK1(0) RenderingThread TPri_Normal MAKEAFFINITYMASK1(1) RHIThread TPri_Normal MAKEAFFINITYMASK1(2) TaskGraphThread TPri_SlightlyBelowNormal MAKEAFFINITYMASK7(0, 1, 2, 3, 4, 5, 6) PoolThread TPri_Lowest MAKEAFFINITYMASK4(3, 4, 5, 6) AsyncLoadingThread TPri_BelowNormal MAKEAFFINITYMASK5(2, 3, 4, 5, 6)
  • 25. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 26. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 27. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. void UParticleSystemComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) { // 省略... AsyncWork = TGraphTask<FParticleAsyncTask>::CreateTask(nullptr, ENamedThreads::GameThread).ConstructAndDispatchWhenReady(this); ThisTickFunction->GetCompletionHandle()->DontCompleteUntil(AsyncWork); // 省略... } class FParticleAsyncTask { // 省略... void DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent) { FGraphEventRef Finalize = TGraphTask<FParticleFinalizeTask>::CreateTask(nullptr, CurrentThread).ConstructAndDispatchWhenReady(Target); MyCompletionGraphEvent->DontCompleteUntil(Finalize); } // 省略... };
  • 28. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 29. TickGroup © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. GameThread TaskGraphThread Tick Async Finalize NullTask このタスクがあると 他のタスク実行を 邪魔する TickGroup の終わり
  • 30. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 31. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. UParticleSystemComponent::UParticleSystemComponent(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { // 省略... AsyncTickFunction.Target = [this](float DeltaTime) { ComputeTickComponent_Concurrent(); }; FinalizeTickFunction.Target = [this](float DeltaTime) { FinalizeTickComponent(); }; // 省略... }
  • 32. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. void UParticleSystemComponent::RegisterComponentTickFunctions(bool bRegister) { // 省略... if (bRegister) { if (SetupActorComponentTickFunction(&AsyncTickFunction)) { AsyncTickFunction.AddPrerequisite(this, PrimaryComponentTick); } if (SetupActorComponentTickFunction(&FinalizeTickFunction)) { FinalizeTickFunction.AddPrerequisite(this, AsyncTickFunction); } } else { if (AsyncTickFunction.IsTickFunctionRegistered()) { AsyncTickFunction.UnRegisterTickFunction(); } if (FinalizeTickFunction.IsTickFunctionRegistered()) { FinalizeTickFunction.UnRegisterTickFunction(); } } // 省略... }
  • 33. StartFrame TickGroup © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. GameThread TaskGraphThread Tick Async Finalize TickGroup の終わり Tick Async Finalize すべての TickGroup前に タスクの依存関係の 構築をするようになる NullTaskがなくなり直接 TickGroupの終わりへ
  • 34. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 35. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 36. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 37. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 38. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 39. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. UObjectの数 GCの負荷 © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 40. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 41. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. int32 FEngineLoop::PreInit( const TCHAR* CmdLine ) { // 省略... UObject* StartupPackages = LoadPackage(NULL, TEXT("/Game/ResidentAsset"), LOAD_None); if (GUObjectArray.IsOpenForDisregardForGC()) { GUObjectArray.CloseDisregardForGC(); } // 省略... }
  • 42. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Total:243350 対応前 Total: 140681 対応後
  • 43. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 108.76 69.33 83.87 93.83 55.28 67.48 0 20 40 60 80 100 120 A地点 B地点 C地点 ミ リ 秒 未対応 Disregard for GC -14.93 ms -14.05 ms -16.39 ms
  • 44. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. [/Script/Engine.GarbageCollectionSettings] gc.ActorClusteringEnabled=True // クラスタを作る virtual bool UHoge::CanBeClusterRoot() const override { return true; } // クラスタへ入れないようにする virtual bool UHoge::CanBeInCluster() const override { return false; }
  • 45. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 46. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Total:140681 Total:72345 対応後 対応前
  • 47. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 93.83 55.28 67.48 84.07 43.71 58.03 0 10 20 30 40 50 60 70 80 90 100 A地点 B地点 C地点 ミ リ 秒 Disregard for GC のみ GC Cluster + Disregard for GC -9.76 ms -11.57 ms -9.45 ms
  • 48. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 49. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 37.62 24.05 12.9 60.48 59.15 59.35 10.66 10.63 10.8 0 10 20 30 40 50 60 70 未対応 Disregard for GC のみ GC Cluster + Disregard for GC ミ リ 秒 PerformReachabilityAnalysis UnhashUnreachable その他
  • 50. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 51. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. class UHoge : public UObject { // 省略... virtual bool IsDestructionThreadSafe() const override { return true; } // 省略... };
  • 52. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 53. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 54. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 84.07 43.71 58.03 20.52 16.83 18.04 0 10 20 30 40 50 60 70 80 90 A地点 B地点 C地点 ミ リ 秒 GC Cluster + Disregard for GC すべての改善 -26.88 ms -63.55 ms -39.99 ms
  • 55. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 12.9 10.82 59.35 0.45 10.8 10.25 0 10 20 30 40 50 60 70 GC Cluster + Disregard for GC すべての改善 ミ リ 秒 PerformReachabilityAnalysis UnhashUnreachable その他
  • 56. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 57. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 58. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 59. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 60. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 1 2 3 4 © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 61. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 適用前 適用後 Frame Rate -2.42 FPS Game -2.09 ms Draw -1.53 ms 適用後は大幅な改善!! © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 62. 22.1468 20.668 6.586 70.564 19.012 18.167 5.458 62.443 0 10 20 30 40 50 60 70 80 Game Thread Render Thread RHI Thread All TaskGraphThreads ミ リ 秒 適用なし PGO+LTO © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. -3.1348 ms -2.501 ms -1.128 ms -8.121 ms
  • 63. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 64. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 65. Frame 2 © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Frame 1 GameThread FEngineLoop Tick AsyncLoadingThread FrameSync Loading 処理 FEngineLoop Tick FrameSync Loading 処理
  • 66. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 67. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 68. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Frame 3 Frame 4 Frame 5 Frame 2 Frame 1 GameThread FEngineLoop Tick AsyncLoadingThread Loading 処理 FEngineLoop Tick Loading 処理 FEngineLoop Tick Loading 処理 FEngineLoop Tick Loading 処理 FEngineLoop Tick
  • 69. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. class UHoge : public UObject { // 省略... virtual bool IsPostLoadThreadSafe() const override { return true; } // 省略... };
  • 70. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 71. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. OFF ON 12.453秒 6.447秒 © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 72. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 73. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. OFF ON 6.447秒 1.926秒 © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 74. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 75. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 76. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 77. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Character Movement Component Skeletal Mesh Component ※ Root Motion と Parallel Evaluate Animation 使用時。Physics / Cloth は除く
  • 78. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Game Thread で実行される Character Movement Component Tick
  • 79. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Character Movement Component Tick で実行される Update Animation (アニメーション時間更新と Root Motion 移動量計算)
  • 80. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Game Thread で実行される Skeletal Mesh Component Tick
  • 81. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Skeletal Mesh Component Tick からタスクを積まれ、 Task Thread で実行される Evaluate Animation (アニメーションポーズ評価)
  • 82. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Skeletal Mesh Component Tick からタスクを積まれ、 Evaluate Animation 完了後に実行される Game Thread で実行される Complate Animation (Component Transform 更新、Physics Scene 更新、Notify 呼び出し)
  • 83. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 84. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Character Movement Component Skeletal Mesh Component ※ Root Motion と Parallel Evaluate Animation 使用時。Physics / Cloth は除く
  • 85. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Task Thread で実行される Character Movement Component Tick Update Animation も同タイミングで並列実行
  • 86. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Game Thread で実行される Post Character Movement Update シーンをクラスタ分割して必要なもの同士のみ押し当たりを実行
  • 87. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Task Thread で実行される Skeletal Mesh Component Tick ※ Tick Manager によるスケジューリング時に投入されるのでオーバーヘッドが少ない
  • 88. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Game Thread で実行される Skeletal Mesh Component Post Tick ※ Tick Manager によるスケジューリング時に投入されるのでオーバーヘッドが少ない
  • 89. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 90. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 91. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 92. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 93. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. IK はどうする?
  • 94. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 95. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 次のフレームまでに まとめて実行
  • 96. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 97. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 98. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 99. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 100. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 101. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 102. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 103. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. モーションA モーションB クロスフェード モーションA モーションB 慣性補間 加算
  • 104. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 105. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 106. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 107. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 108. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 109. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 110. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 直リファレンスは基本的に NG
  • 111. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 112. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 113. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 114. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 115. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 116. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 117. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. FName name = TEXT("HogeHoge");
  • 118. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. static const FName StaticName = TEXT("HogeHoge"); FName name = StaticName;
  • 119. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 120. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. UCLASS() class UMyClass : public UObject { GENERATED_BODY() UPROPERTY() TArray< FMyStruct > MyDataList; TMap< int32, FMyStruct > MyDataMap; virtual void Serialize(FArchive& Ar) override; }; UCLASS() class UMyClass : public UObject { GENERATED_BODY() UPROPERTY() TMap< int32, FMyStruct > MyDataMap; }; 実装イメージ
  • 121. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. void UMyClass::Serialize(FArchive& Ar) { Super::Serialize(Ar); // MyDataListはデシリアライズされたTArray if (MyDataList.Num() > 0) { if (MyDataMap.Num() == 0) { MyDataMap.Reserve(MyDataList.Num()); for (auto& Elem : MyDataList) { // TMapへコピー MyDataMap.Add(Elem.Id, Elem); } } } }
  • 122. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 実行時間[ms] 対応前(TMap) 468.87 対応後(TArray) 193.84 約60%の改善
  • 123. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 124. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 実行データ (UDataTable) コンバート ・C++クラスの自動生成 ・uassetの更新 企画データ(Excel)
  • 125. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. コンバート ・C++クラスの自動生成 ・uassetの更新 企画データ(Excel) 実行データ (独自形式)
  • 126. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. struct MyDataTableRow { int32 HitPoint; int32 MagicPoint; bool GameFlag; TArray<int32> SomeDataList; void SaveOrLoad(FArchive &Ar); }; void MyDataTableRow::SaveOrLoad(FArchive &Ar) { // 保存と読み出し Ar << HitPoint; Ar << MagicPoint; Ar << GameFlag; Ar << SomeDataList; }
  • 127. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. UCLASS() class UMyDataTable : public UObject { GENERATED_BODY() // 行データ TMap<FName, FMyDataTableRow> RowDataMap; virtual void Serialize(FArchive& Ar) override; }; void UMyDataTable::Serialize(FArchive& Ar) { Super::Serialize(Ar); if (Ar.IsSaving()) { // 保存 int32 RowNums = RowDataMap.Num(); Ar << RowNums; for (auto& Elem : RowDataMap) { FName RowName; Ar << Elem.Key; Elem.Value.SaveOrLoad(Ar); } } else //… 省略 }
  • 128. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. データ型 ディスクサイズ[MB] DataTable 171 独自形式 49.3 約70%の削減 データ型 平均実行時間[ms] 最大実行時間[ms] DataTable 0.0364 13.305 独自形式 0.0082 4.528 約65%の改善 ファイルサイズの比較 デシリアライズ時間の比較
  • 129. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 130. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 131. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. ※「MotionBuilder」は Autodesk, Inc. の商標または登録商標です。 © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 132. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 133. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. Shot 1 Shot 2 ….. Shot XX Shot 1 Shot 2 ….. Shot XX オーサリング用 シーケンサー 前半 シーケンサー 後半 シーケンサー (※補足:ショットとは、カットシーンでカメラが切り替わる間の範囲)
  • 134. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. • カットシーンパート (再生中に後半シーケンサーをロード) • チャプター開始 • フリー操作パート • カットシーン前半部のロード • 終了のトリガーを受け取り、 次のカットシーン前半部の ロードを開始 • 以降、同様のゲームサイクル
  • 135. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 136. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 137. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 表示切替トリガー
  • 138. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2020 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 139. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 140. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 141. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 時間[s] Frame 1 Frame 3 Frame 2 Frame 4 Frame 1 Frame 3 Frame 2 Frame 4 アクター表示 表示 表示 表示 表示
  • 142. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. 1フレ表示 分散表示
  • 143. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved. © 1997, 2021 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN:TETSUYA NOMURA/ROBERTO FERRARI
  • 144. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.
  • 145. © 2021 SQUARE ENIX CO., LTD. All Rights Reserved.