File Size Doesn’t Matter (Unless it Does)

When discussing optimization goals for games, the two key goals are usually higher fps and staying within the memory budget. These goals then inform subsequent decisions about what rendering features to use, how many assets to place in levels, etc.
One metric that isn’t usually considered a priority is the size of the game on the player’s hard drive. And that makes sense: hard drives are getting bigger, most people have reasonably fast Internet connections these days, and once the game is running, the size of the game files usually doesn’t have a noticeable impact on the gameplay experience. Especially for smaller indie developers, reducing the size of their game isn’t worth the effort. But as always, there are exceptions to the rule, and depending on the game you’re developing and the audience you’re targeting, keeping the size in check can be a good idea. This article is meant as a reminder to check if your game could benefit from shrinking.
Disclaimer: I’m mixing several things here. While related, the size of a game installed on a hard drive can differ from the download size, because the game is often compressed for the download, or the game creates additional files during the installation. And the size of the game files during development is an entirely different topic, depending on how many of the files you’re using during development actually end up in your packaged game. Still, for the purpose of the article, I’m not differentiating between these sizes.

During Development

Especially for teams working remotely, keeping the size of not only the game under control, but also the files used during development, can really help. Even if your QA team only has to wait a few minutes every time they want to download a new build, it can add up quickly. And the rest of the team is probably also not too keen on having to take a coffee break every time they update their workspace in the morning. Smaller files reduce iteration time, make it easier to maintain multiple builds, and help people stay productive even when they have slow or unreliable Internet connections.

Bigger Target Group

The cheapest Steam Deck has only 128 GB of internal storage. A significant portion of that is reserved for the operating system. Therefore, big games like the latest Call of Duty games can’t be played on the deck, even if no other game is installed, unless the user buys an SD card to expand the storage.
The Nintendo Switch has even less internal storage, only 32GB (64 for the OLED version)! While Nintendo Switch games tend to be smaller due to reduced texture resolutions and lower poly count meshes, it’s easy for big games to exceed this size. NBA 2K23, for example, is 56GB, making it impossible to play on the original Switch without an additional SD card.
So if your game is that big, you might want to ask yourself if it’s attractive enough for people to buy the extra storage just to be able to play it. It’s also safe to assume that you’re not the only game competing for users’ storage space, and most players want to play more than one game on their device. So ideally, your game should be small enough that it doesn’t take up most of the available storage space, so people don’t have to choose between your game and other games they already have installed.

First time user experience

Especially when developing free-to-play games, the initial user experience is critical to success. When a potential player decides to try your game, you want the experience to be as smooth as possible. Downloading and installing the game should be as quick as possible so that people don’t have time to get bored and abandon the game. This is especially important for free-to-play games because there is no buy-in from the player. People who have already spent money on your game will probably be patient enough to endure a lengthy download to see if the game is worth the cost, but with free-to-play games, people tend to quit at the first inconvenience. This is especially true for mobile games, where people are more likely to try new games on the spur of the moment.

Player retention

Because multiplayer and live service games are updated frequently, players are not done with downloading the game once. Call of Duty: Warzone Live Operations Lead Josh Bridge even admitted that the game loses players every time a new, big update comes out because people don’t want to wait for hours while the game updates.  The problem is so bad that Sledgehammer Games even started implementing a system to stream in textures at runtime for Modern Warfare 2.

Distribution Cost

At least on consoles, physical media is still widely used. So it’s a good idea to make sure that your game fits on a single disc, since every disc that needs to be pressed adds to the cost of distribution. On top of that, you need to figure out how to split the game into two parts, which may require some effort depending on the structure of the game.
The XBox Series X can handle double-layer Blu-rays (50GB), so if the packaged game exceeds that, you need a second disc and a case that can hold 2 discs. The PS5 can handle triple-layer and quad-layer discs, but these are more expensive than the double-layer version.
It’s not very common these days for games to be delivered on multiple discs, and only the biggest and most ambitious games are delivered this way (The Last of Us 2 and Final Fantasy Rebirth, for example, were delivered on 2 Blu-rays).
The more popular option these days is to put only part of the game on the disc and require the user to download additional files before starting the game, at the cost of alienating at least part of your audience. 

Impact on other Metrics

While having a large game does not necessarily mean that your game will have long load times (loading strategies, game structure, etc. have a much bigger influence on this), it’s safe to say that having fewer/smaller files overall can give you a better starting point for optimizing your load times. The same goes for optimizing your game’s memory usage. And even your performance can improve if the game is not constantly streaming in new assets. However, your mileage may vary.

How to reduce you Game’s Size

Although not the focus of this article, it would feel strange to end it without mentioning at least a few ways to actually reduce the size of your game.
In general, this is a very broad topic, and since every game is different, there is no one-size-fits-all approach. A dialog-heavy RPG will probably benefit most from choosing a more aggressive sound compression, while a photo-realistic racing game’s size will probably be most affected by its texture sizes. However, I would like to list a few methods/strategies.

Mip Flooding

Mip flooding is a technique for adjusting textures so that they can be compressed more effectively by removing details from unused areas. I have already written an article explaining how to implement this technique in Substance Designer.

Localization

Your localization strategy can greatly affect the size of your game. If your game has voiced dialog and supports multiple languages, each additional language can add several gigabytes. It may make sense to create multiple versions of your game, with each version containing only one audio language. In general, you want to keep the number of localized assets as small as possible. What you definitely don’t want is to have several completely separate versions of the game installed side-by-side, one per language, with all non-localized files duplicated as well, which was done for the game pass version of Fallout 3.
If you want to have only one version of your game with all supported languages, make sure you use the same videos for all languages and only change the audio track used. Depending on the length and resolution, this can make a big difference.

Compression

A big topic in itself, but finding efficient compression algorithms for your game assets is one of the most effective ways to keep your install size in check. When Epic introduced Nanite, they also integrated Oodle into Unreal to help keep ballooning file sizes in check. Along with Bink for video, it’s relatively easy to keep your file sizes small, especially if you’re willing to spend some time looking at the compression settings and tweaking them as needed.

Modular Assets

While keeping the size of your game small shouldn’t be your primary motivation, being smart about building asset kits for your game can drastically reduce the size of your game. For example, Skyrim, one of the largest open-world RPGs of its time, is approximately 6GB in size and was released on a single DVD. Wolfenstein: The New Order, a linear shooter released on the same console generation, is ~47GB and was released on 4 DVDs.
The difference in size is largely due to the way Wolfenstein’s levels were constructed. Instead of relying on modular, reusable assets like Skyrim, the levels in Wolfenstein use many unique assets, and even when assets are reused, the textures are often unique per instance. Using idTech’s virtual texture technology called MegaTextures, most surfaces in the game contain unique hand-painted details or baked-in decals. This gives the game a very detailed and unique look, but results in an unusually large size.

Procedural Creation

Most people probably don’t know this, but when Allegorithmic introduced Substance Designer, one of the initial USPs was not only efficient texture creation, but also the ability to ship just the substances and a barebones version of Substance Designer to the end user and let them create the textures on their own machine, thus reducing the download size of the game. This approach has not proven to be very popular, as it requires some effort and is only really effective if you use Substance Designer for the majority of your textures, but it may be useful for your game.
Similarly, there are often situations where generating content on the fly can save space compared to creating it in advance.
In Unreal, for example, you can use Nanite tesselation to add geometric detail to low-poly meshes at runtime. This can save a lot of disk space because you can build your level with relatively simple geometry and then use tile displacement textures to add geometric detail.

Split up your Game

If all else fails and your game is still bigger than you want it to be, it can help to allow your players to install only parts of the game. Recent Call of Duty games allow you to install single-player, multiplayer, and Warzone separately, and Gears 5 put its high-resolution textures in a free DLC, so players who don’t need them don’t have to spend hours downloading them anyway. MMOs and multiplayer games often download assets on an as-needed basis. For games like Fortnite, this is crucial, as the sheer number of skins and customization options would otherwise cause the install size to balloon.

If you enjoyed this article or found it useful, please share it with others! To get informed about new articles, follow me on Mastodon or Bluesky.


Posted

in