Hi there.
I had the same issue and just found a solution. There is no documentation to find anywhere about how the ordering works, but looking into the source code I was able find it out.
So, if you don’t have a GameOpenOrder.log
it will automatically fall back to CookerOpenOrder.log
and EditorOpenOrder.log
. These 2 files are changed permanently and therefore cause assets being differently ordered in paks.
Even if you had a GameOpenOrder.log
in place, it would fall back to the other ones for assets not included in the GameOpenOrder.log
. This means if you add new stuff to your game, you will have paks again that are not deterministically.
There is a way tough to specify a specific OpenOrder.log to be used and if you do this, it will ONLY use that file. In your DefaultGame.ini
add PakOrderFileSpecs in the ProjectPackagingSettings section:
[/Script/UnrealEd.ProjectPackagingSettings]
PakOrderFileSpecs=(Pattern="CustomOpenOrder.log")
Now place a file called CustomOpenOrder.log
in the FileOpenOrder folder next to EditorOpenOrder.log
.
The file has to exist, otherwhise the build will fail.
I actually used an empty file, which basically deactivates load time optimization done by intelligent ordering inside the pak file. Honestly, I couldn’t notice a difference, but I didn’t measure the time.
Now my paks are deterministic.