Original Post — Direct link

Just got this on PS4 great game tbh, but on the store it says 35g required so thats what i told my gf who has very little space, and its 70g and she can't even play with me now, its the largest game i own appart from Bo3 which i have every dlc for installed, i just got the base game for this, ghost of tsushima is only 40g and thats a huge open world game, rainbow6 that sh*ts out updates is 69g how is this 70g jesus christ hopfuly it lasts me a while.

External link →
over 4 years ago - /u/fatshark_tazar - Direct link

Originally posted by SirAiedail

There are several optimizations at play here:

  • RAM usage: only load the assets you actually need and free them as soon as possible
  • HDD seeking: keep related assets next to each other on disk
  • bandwidth for patches: patches only include the stuff that actually changed

Before I go into detail, one could argue that these things aren't all that relevant today. And one would be correct. But Bitsquid was founded in 2009, meaning that this whole packaging stuff was design for hardware requirements from about 10 years ago.

Why didn't Fatshark change it? Because it's still "good enough", especially since current gen consoles are still running HDDs and the major downside of high storage usage is pitted against a mere €0.02 per GB on HDD, about 1/6th of 2009's prices. There is very little financial benefit in investing the huge amount of time it would require to change such an integral part of the engine. We might see it with Darktide and its focus on next gen consoles, but I doubt it.

On to details:

In order to keep RAM usage as low as possible, the developer wants the engine to only load the assets that the game actually needs at that moment, no extras, and unload an asset as soon as it becomes unused. To do that, the developer splits all assets into separate packages, which can be (un-)loaded individually. E.g. if I want to spawn a specific weapon, I don't want to load all weapons into memory, just the one I'm spawning.

However, loading just the weapon's mesh is not enough. Many assets have dependencies on other assets. E.g. for a weapon to spawn, I need a mesh, multiple textures, animations, hit sounds, etc. And there can be multiple things depending on the same asset, e.g. illusions for a specific weapon might have different meshes and textures, but they share the same animations and sound. The obvious answer: multiple packages for each illusion's specific assets and one shared package for animations and sound. Sounds like a good idea, but that's slow, thanks to HDD seek times:

On HDD a software has no guarantee (at least with popular file systems) where a blob of data is stored on the physical disk. But in order to read data as fast as possible, you want it to sit right next to each other, otherwise the read head is spending precious time jumping (seeking) between various locations on the disk to pick up all the bits and pieces. And the best way to ensure that your data is stored in a continuous block, is to put all related data into a single file. E.g. one package for each illusion that holds both the unique and shared data. (Yes, even then NTFS doesn't guarantee it until defragmentation)

And what about "small patches"? 10 years ago download bandwidth was very precious and usually limited. So in order to keep patch files as small as possible, they only include the stuff that's actually changed. The downside is that the smaller patch bundle cannot replace the original one, but has to be saved as an addition. Which means more duplicated data. E.g. if the texture of a weapon illusion changes, you will have both the original full package and the additional one that only includes the changed texture on disk.

Pretty much a perfect explaination. I can add that starting the game unbundled on a base ps4 takes about 12-15 minutes due to the architecture and the 5400rpm HDD. The startup time for the game bundled (including signin) takes roughly 1.5 min

about 4 years ago - /u/fatshark_tazar - Direct link

Originally posted by Edarneor

That's all cool and all, but why make PC players suffer?

I bought Vermintide 2 on release and it was maybe 50-ish gb (i don't remember for sure) and it was fine. I thought to myself, fine, it's a new modern game, I'll play it.

Then I played for a bit, and had to uninstall to make space for more games, and haven't touched it since, in no small part because it's simply so huge an install.

Now there's some kind of event going, and I wanted to check it out again, and it's 90 GB now. What the hell? I have no dlcs, nothing, what new content is there, that nearly doubles the game size??

Ok, I understand the thing about load times, although, I would myself prefer saving disk space, I don't mind load times, I can just alt-tab while the game loads and browse the web.

But the patches that keep the old versions on HDD... What is our hard drive to you - a version control system? :D

P.S. I liked the game itself. Wish I could play it without deleting half my steam library

Sorry for the late reply but the disk size is pretty much the base master version plus all patched content. The total disk space is the master version of the game plus all the patched content. This is just how Steam works. To reduce disk size we have to do what's called a remaster which means to create a new master version rendering all the previous patches unnecessary leading to a smaller disk footprint. The problem with doing this is that all players will have to download the full game all over again which is roughly a 60GB download at this point. It's a fine line to balance but once we reach a cecrtain limit we try to do a remaster. This works a little differently depending on platform but that's roughly how it works on Steam