I just don’t understand why CoD downloads are so big... its kinda stupid. Do they not know how to use compression?
That's the thing... a lot of the data is compressed and/or in some form of optimal format that can be easily digested by the game / engine. The truth is that next-gen games (i.e. current games and those coming later) have massive resource requirements. 4k texture assets, multi-channel audio, video footage - it all adds up!
I remember when normal maps and similar tech became the new norm in gaming. Game dev studios had to upsize as there was suddenly a significant increase in terms of the assets that were required for a game. Studios were doubling their art department staff counts and, naturally, game sizes increased as the new breed of games required these additional assets.
The same is happening again now - we are moving into a world of ray tracing and PBR (although PBR has been around for a few years now in some for or other). Given the requirements for PBR / photogrammetry it's quite easy to burn through storage space. As an example... take a 'simple' texture that is used for a gun in a first person shooter and let's assume we are running 4K high-fidelity (as per the new consoles)...
4096x4096x32bpp =
64 megabytes (uncompressed)
(This is a very rough outline)
1 - Albedo texture - determines the diffuse colouring of the material
2 - Specular texture - determines the specular regions and specular reflectivity of the material
3 - Metal texture - determines the metallic-ness (for want of a better word) of the gun material
4 - Normal map texture - determines the high-fidelity surface detail (encoded in texture form rather than polygonal model detail)
5 - Bump map - determines non-directional surface 'bump' detail (encoded in texture form rather than polygonal model detail)
6 - Ambient Occlusion map - can be used during the lighting pass to provide ambient occlusion detail (rather than performing expensive lighting calculations on geometry)
7 - Displacement map - encoding of 'offset' to provide high-fidelity 3D surface detail (akin to parallax mapping type detail)
8 - Gloss / Roughness - determines how glossy / matte the surface appears (high-gloss means more mirror-like, high roughness means the material will spread the reflected light and give the surface a matte / diffuse appearance)
Let's assume the gun model is only using 6 of the above texture maps - 6 x 64MB =
384 megabytes
That's 384 megabytes for a simple, single PBR texture set. A typical game will have hundreds / thousands of texture assets...
That's also assuming the textures are using 8-bit per RGBA channel. A lot of textures now use floating point R32F so each RGBA channel now consumes 32-bits and your 384 megabytes of textures now increases four-fold to
1.5 gigabytes.
As useful / useless an example this may be... it might kinda explain why games are so freaking large these days.