ローダー新機能「IOStore」と「ASyncLoader2(=ZenLoader)」について
https://www.youtube.com/watch?v=i31wSiqt-7w
UE4.25から新しいロード機能として「IOStore」機能を有効にすることで
ベータリリースとなっている「ASyncLoader2」が適用される。
開発名称はZenLoaderで、UE5では正式に置き換わりがされている。
https://docs.unrealengine.com/5.0/ja/MigrationGuide/NoteworthyChanges/
パッケージングの際にチェックを入れると機能が利用できる(6:30)。
従来.pakにすべてのアセットがまとまっていたものが、.pak, .ucas, .utocの3種類に分けられる。
.pakはあまり呼ばれないアセットが格納され、実質的な本体は.ucasに替わっている。
.ucasではデータの効率的配置が行われ、ファイルアクセスの高速化に寄与。
.utocでは各パッケージのデータ開始位置とサイズをパッケージング時点でカタログ化しており、
ランタイムで行う以前のものと比べて直接的なデータ読み込みが行うことができる。ASyncLoaderとの処理の仕組みで比べると仕組みはほとんど変わらないが(22:30)、
.ucasで最適配置、.utocでカタログ化している分の時間削減を図ることができる。
この結果、従来のものと比べ理論上30%程度の高速化がなされている。
ただし高品質アセットの呼び出しが多い場合においては上記はあまり効果的に働かず、
5%程度の軽減にとどまる可能性がある。呼び出しに時間のかかるのは大まかに分けて「IO (データソースからの読み込み)」「AsyncLoader (シリアライズ処理)」
「GameThread (シリアライズ後のゲームへの反映)」となる。
具体的に時間を図るには「Unreal Insights」を利用して実際の時間を確認可能。
→各箇所の具体的なロードにかかる部分を実際の図で説明、原因となる行動と
その対策方法の一例(読み込みタイミングをずらす、リファレンスの読み込み範囲が大きい、レベルストリーミングなど)の例示あり