仮想化の機能が有効な状態でsublevelとBuiltData(Engine.MapBuildDataRegistryクラスのデータ)
をsubmitした場合、BuiltDataが仮想化されません
これは意図した挙動でしょうか?それとも不具合でしょうか?
ゲームの都合上lumenは採用できず、したがってライトデータが非常に巨大になっております
MapBuildDataこそサイズが大きく仮想化したいです
調査したところBuiltDataもローカルのペイロードは存在しておりました
(DumpPackagePayloadInfoでlocalペイロードが列挙される&ValidatePackageTrailer でペイロードが正常にそろっていることを確認できている)
仮想化されない原因は
FWorkspaceDomainPayloadProvider::VirtualizePackages のなかで
PkgInfo.Trailer.GetPayloads(EPayloadFilter::CanVirtualize)をしている際
BuildDataのEntry.FilterFlags が UE::Virtualization::EPayloadFilterReason::MapContentのため
スキップされているからでした
enum class EPayloadFilterReason : uint16
{
/** Not filtered, the payload can be virtualized */
None = 0,
/** Filtered due to the asset type of the owning UObject */
Asset = 1 << 0,
/** Filtered due to the path of the owning UPackage */
Path = 1 << 1,
/** Filtered because the payload size is below the minimum size for virtualization */
MinSize = 1 << 2,
/** Filtered because the owning editor bulkdata had virtualization disabled programmatically */
EditorBulkDataCode = 1 << 3,
/** Filtered because the package is either a UMap or the owning editor bulkdata is under a UMapBuildDataRegistry */
MapContent = 1 << 4,
};
CanVirtualizeの条件を
(Entry.FilterFlags == UE::Virtualization::EPayloadFilterReason::None
|| Entry.FilterFlags == UE::Virtualization::EPayloadFilterReason::MapContent
に変更するとバルクデータがsubmitされメタデータと分離することができました。
BuiltDataをあえて仮想化から除外しているのはなぜでしょうか?
先ほども申した通り
MapBuildDataこそサイズが大きく仮想化したいです
[Attachment Removed]