Skip to content

Add UE5_8 engine version - #75

Open
stevenlafl wants to merge 1 commit into
trumank:masterfrom
stevenlafl:ue5_8
Open

Add UE5_8 engine version#75
stevenlafl wants to merge 1 commit into
trumank:masterfrom
stevenlafl:ue5_8

Conversation

@stevenlafl

Copy link
Copy Markdown

Add UE5_8 engine version

Toward #74: adds UE5_8 to EngineVersion so 5.8 titles can be targeted explicitly with --version UE5_8.

Note this does not make 5.8 support complete on its own: #72 documents a further 5.8 change (FFilePackageStoreEntry::ShaderMapHashes elements shrank from FSHAHash to 8 bytes, without an EIoContainerHeaderVersion bump) that affects titles whose store entries carry shader map hashes. The title used for verification below has none, so this PR is correct but orthogonal to that fix; with UE5_8 in the enum, a #72 fix gains a natural key for the write side.

Mapping

UE 5.8 introduced no new EIoStoreTocVersion, EIoContainerHeaderVersion, or EUnrealEngineObjectUE5Version entries (verified against the 5.7 and 5.8 release branches of the engine source), so UE5_8 maps to the same values as UE5_7:

  • toc_version: ReplaceIoChunkHashWithIoHash
  • container_header_version: SoftPackageReferencesOffset
  • object_ue5_version: ImportTypeHierarchies

Verification

Tested against a commercial UE 5.8.1 title (updated from 5.7.4, so both cooks were available for comparison):

  • retoc info on its shipped containers reports exactly the mapped versions above
  • to-legacy --version UE5_8 extraction of its assets is byte-identical on the export payload to UE5_7-mode extraction
  • to-zen --version UE5_8 round-trips extracted assets into correctly versioned containers, and containers built this way mount and load in the title's 5.8.1 runtime

Also adds UE5_8 cases to test_zen_asset_identity_conversion, mirroring the existing UE5_7 pattern (reusing the 5.6 fixtures, identical IoStore serialization).

Note: test_zen_asset_identity_conversion currently fails on master before reaching the 5.7/5.8 cases (failed to fill whole buffer on the UE5.4 fixtures; that directory has no AssetRegistry.bin and BP_Table_Lamp has no .metadata.json). The failure is identical with and without this change.

Disclosure

Developed in a Claude Code session: the AI assistant performed the engine-source version analysis and authored the change; I (the human) provided licensed UE source access, ran the real-game verification, and reviewed the result.

UE 5.8 introduced no new EIoStoreTocVersion, EIoContainerHeaderVersion,
or EUnrealEngineObjectUE5Version entries, so UE5_8 maps to the same
values as UE5_7 (ReplaceIoChunkHashWithIoHash /
SoftPackageReferencesOffset / ImportTypeHierarchies). Verified against
a commercial UE 5.8.1 title: its shipped containers report exactly
these versions, to-legacy extraction of its assets matches UE5_7-mode
output byte-for-byte on the export payload, and to-zen round-trips
produce correctly versioned containers.

Adds UE5_8 test cases mirroring the existing UE5_7 pattern (reusing
the 5.6 fixtures, identical IoStore serialization).

Note: test_zen_asset_identity_conversion currently fails on master
before reaching the 5.7/5.8 cases ('failed to fill whole buffer' on
the UE5.4 fixtures); the failure is identical with and without this
change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant