Patching a Project by comparing Hashes/Checksums

BadNet85
Thu, 27 May 2021 20:59:00 +0000
Platform & Builds

Hello,

I am currently working on a Updater for our project. As we are not using steam / the epic game store or any other platform that offers a patching API/System we need to implement our own solution.

Out approach was to keep a list of the complete Project hierarchy including the cheksums/hashes of the files on a publicly available server and retrieve the file to compare the users local file hashes agains the currently up-to-date list on the server.

Now for the problem. Building/Cooking/Packaging the same Project 2 times seems to generate different hashes only for the pak files. As they are the largest files in the project it would obviously defeat thepurpose of having individualy updateable files. It seems that the .pak files contain a timestamp wich in turn alters the generated hash of the file depending on when they where created.

My questions are: Is there a way to either force the pack to use a specific timestamp or omitt the usage of the timestamp altogether? And even if that works, are there any other data points in the .pak structure the prevent this kind of hashing?

I know there are also the .sig files which are created alongside the .paks but i could only find very (very) limited information on them. Would they maybe offer some kind of hash of the actual Data that is contained in the .pak?

If evrythin else fails i would be happy about some hints as to how such a “file-by-file” patching could be achieved using Unreals file formats.

Thanks in advance!

3 posts - 3 participants