I don't understand what the constraint is here and i'm hoping someone can explain it to me. Why in general are more devs not using diff updates? Yesterday I had a 3GB update patch on a 5GB game and it got me wondering why this is a thing. Anyone have theories/answers?
All Steam games use differential updating. What game are you talking about?
The PS4 uses differential updating, though, so not sure what you mean here.I thought it had something to do with the package manager/whatever the PS4 uses (if we're discussing new consoles).
I develop business software myself and although the file sizes are generally small 50MB - 100MB, we do differential updates, it's so weird in a space where people deal with assets the size of Kim Kardassian's butt they arent. I just cant. It's not entirely that hard either, you keep list of the of the versions on the client machine and spawn a get/whatever request based on that and have the updater do a scan before hand to make sure the list of stock is still good/spawn a new one anyway.It probably has to do with the situation when you've got multiple patches... Say there are three versions of the game, base, patch 1, and patch 2. Patch 1 is easy -- you just have the difference between base and patch 1. Patch 2 also seems easy... Until you remember that not everyone has patch 1. So now you need two patches, one for patch 1-2, and one for base-patch2. So on so forth.
Alternatively, you could just do sequential patching, where if you have base, it gives you patch 1, then 2, but I'm sure MS has some stupid ass rule where it makes it easier to just have a single patch instead.
Feep I think he means on Consoles, which regularly get huge updates... For what should be very small changes. And instead of having a patched just make the small changes in the files themselves, (which can be huge), it just redownloads the whole file all over again.
What is the OP talking about?
Is differential updating just small patches?
The PS4 uses differential updating, though, so not sure what you mean here.
I don't understand what the constraint is here and i'm hoping someone can explain it to me. Why in general are more devs not using diff updates? Yesterday I had a 3GB update patch on a 5GB game and it got me wondering why this is a thing. Anyone have theories/answers?
Long story short, usually games use archive files, ie lots of files are combined and possibly compressed into a few big ones. Depending on the change and file format sometimes even what should effectively be a small change will produce a huge differential patch just because the whole structure of the archive was rewritten.
Johnathan Blow wrote about that once: http://the-witness.net/news/2012/08/fun-with-package-sorting/
Unfortunately, any source code modification will usually
cause changes throughout an executable file. Adding or
removing a small number of bytes of code or data will
change the relative position of blocks of code, adjusting
the displacement of relative branches which jump
over the modified region; similarly, any data located after
the modified region will have a different address,
causing data pointers to be modified throughout the file.
This causes patches generated with the traditional copyand-insert
method to be much larger than necessary; a
one-line source code patch in a 500kB executable could
translate into a 50kB patch file.
Correct, but it's not like atomic binary patches aren't possible, though.Another description of how even a small source code change can result in a large delta between two binaries, taken from a white paper