A differential game image update is an update that contains only the differences between the previous version and the new (updated) version. Differential updates are advantageous when you want to update the game image version on your fleet machines as quickly as possible. Because differential updates contain less data, the Multiplay update orchestration platform can distribute it to your machines faster than a full image update.
However, differential updates do come with some drawbacks. To understand the drawbacks, you must first understand how our update orchestration platform manages updates images.
Each game image starts with a single master image, which is a full image, not a differential update. Each time you push out a differential update, we store the differential update as a separate archive on the machine. For example, if you’ve sent out four differential updates, then you’ll have a master image plus four differential images. When it comes time to install the game image on the machine, we combine the master image with each differential image up to the most recent version.
In the illustration below, we have a build machine that has a master image (version 1.0.0) and three differential images (versions 1.0.1, 1.0.2, and 1.0.3). When we install image version 1.0.3 on a machine, we’ll combine the master image 1.0.0 with differential image 1.0.1, 1.0.2, and 1.0.3. If the master image is 5 GB and each differential update is 1 GB, then the total size of the game image will be 9 GB.
Over time, the differential image updates add up, and you can find yourself with a game image with a total size upwards of 60 GB. You can prevent your images from becoming too large by periodically releasing a full image update. We call this “rolling up your game image.”
What happens when you push out another full image version?
When you push out a full image version, it consolidates all the differential updates into the master image and updates the master image version to the next version. In the illustration below, we made image version 1.0.4 a full image version. When we rolled out version 1.0.4 to the fleet machines, it consolidated all the differential updates into one master version. As a result, the total disk space that version 1.0.4 consumes (6 GB) is less than the total disk space that the previous version 1.0.3 consumed (9 GB).
As you can see, rolling up the image versions by releasing a full image, results in your game image consuming less space on your machines.
While this is beneficial in itself, there’s another hidden benefit.
Your fleet likely consists of a baseline set of bare metal machines and any number of as-needed ephemeral cloud instances. We create cloud instances in response to player demands. When we spin up one of these instances, we need to send the entire image archive to it before it’s ready to accept players. If the last handful of updates you’ve released were differential updates, we’d need to send the master image plus the number of differential images you’ve created since the last full image update, which, over time, can add up to upwards of 60 GB. When your cloud instances have to download such a large archive, it can result in pending allocations as your players wait for your fleet to scale into the cloud.
By rolling up your images regularly, you’ll keep your game image sizes small, and your players happy.