While the world is slowly progressing with faster Internet connectivity, and OEMs are iteratively offering more storage space in devices, it's still hard to keep up with the rate that games and some other apps have been growing. To combat this trend, Google is introducing a new Asset Delivery API so developers can further streamline the install process for games so users can get up and running even faster and with less space used.
The new Asset Delivery system takes a lot of cues from App Bundles, but adds more granular control over the delivery of each component. Google intends to replace the 8-year-old method of building 2GB expansion files that were installed alongside the base APK. This is achieved by breaking expansion data into three types of packages: Install time, on-demand, and fast follow.
- Install time packages work just like the old expansion files. When a user begins installing a game, both the base APK and install time package are downloaded. As soon as both pieces are installed, players can launch the game. Only one install time package is allowed and it's capped at 1GB in size.
- Fast Follow packages begin downloading after the install time package and base APK are finished installing. The game is playable while this package downloads, and the additional content can be made available once it's finished downloading. For example, the core sounds, graphics, and first levels might be stored in the install time package while the fast follow package contains all of the maps and resources that aren't used until later. There can also only be one fast follow package, and it too is capped at 1GB.
- Finally, on-demand packages are sent when an app requests them through the API. These work a lot like split feature APKs, but they can't include executable code. These are perfect for things like cut scenes, expansions, maps, and other content that's optional or only used later in the game. Developers can create many of these, but each on-demand package is capped at 512MB.
In total, there can be up to 50 asset packs, including the install time and fast follow packages. The Play Store can optimize changes to asset packs by delivering only delta updates. Users cannot remove the install time or fast follow packages, but they are free to delete individual asset packs to free up space.
Google is also bringing the in-app updates feature to games. This presents players with a dialog that can be used to easily start an update to a new version directly from within the game. This helps if a game absolutely requires a new version to be playable with the game's servers. It's now available for apps built on the SDK, but an implementation for the NDK is still in development. For developers: There is a closed beta program to begin testing in-app updates for games. you can join here.
The Play Core SDK extends an API to handle all of the in-code necessities like initiating on-demand downloads and checking if fast follow and on-demand packs are finished installing.
To expand on the capabilities first introduced with App Bundles, the Play Store can now also differentiate and serve textures that have been compressed in different formats. Some compression formats are only supported on newer devices, but Google Play can now identify the formats supported on each device and choose the best format to download. There is a closed beta program to begin testing texture compression format targeting. you can join here.
Google has already implemented a plugin for Unity to support asset delivery. Likewise, Unreal Engine v4.25 includes support for the new API, and actually deprecates the old expansion file method of delivery.