[MUSIC PLAYING]
YAFIT BECHER: Hi, my name is Yafit Becher,
and I'm a product manager with Google Play.
ALESSANDRO DOVIS: And I'm Alessandro.
I'm a software engineer at Google Play.
YAFIT BECHER: Today, we're going to be talking about Play Asset
Delivery.
Two years ago, we introduced the Android App Bundle,
a new publishing format that allows us to help
you optimize your app delivery.
Apps have seen great success with the App Bundle.
But games, and especially high-quality ones,
have different delivery challenges,
which so far haven't been met by the App Bundle.
One of the ways games are different from apps
is that games require a large amount of graphic assets.
Now, oftentimes, the current size limitation of 150 megabyte
is simply not enough.
Some of you are using APK expansion files, also known
as OBB files, despite their many downsides.
And we know that many of you are using CDNs to host and deliver
your game resources from.
This results in a suboptimal user experience.
Users install and open the game just
to be faced with the long progress bar,
"Waiting for additional resources to be downloaded."
Another major downside of using a CDN
is that your users can't rely on auto-updates.
So again, your users need to wait, this time
for updating resources.
Lastly, CDNs aren't free.
So this way of delivering game assets also
involves extra cost that needs to be accounted for.
To address the unique needs and challenges that
are typical for high-quality games,
we're announcing today a new set of delivery features suited
for games.
This new product is called Play Asset Delivery, or, in short,
PAD.
It offers free, dynamic delivery of all your game assets.
In today's talk, we'll cover the four aspects
of Play Asset Delivery--
the publishing format, which extends the App Bundle
and lets you publish a single artifact
to Play, including all the resources your game needs;
delivery mode that lets you control when and how Play
delivers your game assets; auto updates that
take care of keeping your game assets up-to-date;
and data compression format targeting, which helps you
serve optimal performance assets to the requesting device.
We will then talk about integration and testing
of Play Asset Delivery, touching on the game engine integration
and our testing solutions.
ALESSANDRO DOVIS: Let's start by talking about the publishing
format and how you can package your game assets in order
to use Play Asset Delivery.
Play Asset Delivery is built on top of the Android App
Bundle, which many of you are probably already familiar with.
With the App Bundle, you can publish a single artifact
to play containing all the code and resources
that your game needs.
The App Bundle is now Play's recommended publishing format.
It's been around for about two years,
and 40% of all top apps and games are now using it.
It is a modern format that replaces
the traditional monolithic APK at publishing time.
The App Bundle allows developers to package all the languages,
screen densities, and device architectures
into one single artifact.
App bundle is not installable directly.
Instead, Play takes care of generating
multiple APKs optimized for each regressing device, all
from the single bundle that you published.
We have extended your Bundle format
to include a new delivery construct
for games called asset packs.
An asset pack is a container of assets--
no code-- and it can be very large.
You can add all types of assets into your asset packs,
from graphical textures to meshes, shaders,
multimedia files, et cetera.
Asset packs are packaged in the App Bundle
together with your binary so you can publish
one single artifact to Play containing everything
that your game needs.
YAFIT BECHER: Now that we saw how game assets are packaged
with Play Asset Delivery, let's see how your assets are
actually being delivered.
Play Asset Delivery includes flexible delivery modes,
which puts you in control of how your game is being delivered,
as it's you who knows your game and users best.
With Play Asset Delivery, you can
choose when to have your asset packs delivered.
It can be either as part of the initial install,
on-demand throughout the game lifecycle,
or shortly after game installation.
Let's dive into the different delivery options
and see how our early adopters have been using them so far.
The first delivery mode is Install Time.
With Install Time delivery, you can deliver up
to one gigabyte of game assets as part of the initial game
installation.
This would behave just like a large APK--
no need for expansion files or special API calls.
Just package your assets in the new App Bundle for games
and publish to Play.
Illusion Labs is a Swedish Indie mobile game
studio with high focus on graphics and physics.
They have their own C++-based in-house game engine,
and their "Touchgrind" series is one of their most successful
titles with over 10 million users.
"Touchgrind BMX 2" is a bit over 400 megabytes.
To go beyond the 150-megabyte app size limitation,
they had been using APK expansion files.
Back in November, they integrated PAD's Install Time
delivery.
The integration took only one day and another two to three
days for code cleanup.
When pushing the new release to production,
they saw great stability improvement.
The crash rate reduced from 2.5% to 0.75%.
Overall, Illusion Labs reported better download performance,
fewer errors, and a more streamlined publishing process.
Next, with On-Demand delivery mode,
PAD also allows you to have your asset
packs delivered upon request only when you need them.
With the On-Demand mode, asset packs of this weight
are delivered as raw files and placed in your game's
internal storage, so you can access them directly using
file system calls.
The US-based developer RV AppStudios
has over 200 million downloads across their portfolio
of casual games, educational kids' apps, and utility apps.
Some of those apps are instant games.
For those of you who aren't familiar with instant games,
these are games that are served by Play
but don't actually get installed right from the start.
Instead, the user can click the Try Now
button on the Play Store and can start playing immediately.
To enable this experience, instant games
are limited to 10 megabytes.
RV AppStudios are using On-Demand to deliver
assets for their "Pastry Pop Blast" instant game.
They deliver just over 5 megabytes of assets
right after the instant game launches, which
lets them stay under the 10-megabyte limit
but still deliver a high-quality experience.
Lastly, Fast Follow delivery mode
is probably the most interesting one.
With Fast Follow, you can have Play deliver your asset packs
immediately after the initial installation completes
and when the Open button on the Play Store is already enabled.
This lets you minimize the time for first interaction,
letting your users into the game sooner while initiating
the additional download independently for when
the user opens the app.
This way, you get the best of both worlds,
because so many times, by the time the user opens the app,
a lot, if not all, of the assets have already
finished downloading.
Like with the On-Demand mode, Fast Follow asset packs
are delivered as raw files and placed in your game's
internal storage, so you can access them directly using
file system calls.
Gameloft, one of our early adopters,
was established in 2000 and now has
over 4,600 employees in 19 studios throughout the world.
They have a portfolio of over 190 games
with some franchises that span several years.
One of them is "Asphalt 8."
Gameloft has tested "Asphalt 8" with Play Asset Delivery,
migrating from using CDN for secondary downloads
to using Fast Follow delivery.
"Asphalt 8" has a minigame that keeps
the user engaged while game resources are being downloaded
in the background.
With Fast Follow delivery, they are
seeing a significant increase in the number
of users that completes the secondary download
and gets to start playing the real game.
This results in better user retention,
improving installs-versus-users KPI.
Before we switch gears to talk about updates,
I want to emphasize one thing that we
tend to take for granted when it comes to Play delivery,
and that's the global scale and coverage Google Play has.
For a game like "Call of Duty--
Mobile," being able to provide top performance
across the world is critical.
This is especially challenging on emerging markets
and requires complexity and setup
for different areas of the world.
"Call of Duty-- Mobile" is one of our early testers.
They're very excited about Play Asset Delivery
and are now in the process of applying it with their game.
ALESSANDRO DOVIS: So far, we have
talked about how you can control the initial delivery
of your assets to your user's device.
Now, let's see how Play Asset Delivery helps you
keep your assets up-to-date.
Play Asset Delivery lets you rely on Play
to take care of updating your assets,
just like it does with your game binary.
With Play auto updates, the entire game
gets updated, including all assets.
When your users open the game, they
will already have the freshest binary and assets.
And they won't need to wait for the resources
to get downloaded.
Play also takes care of delta patching for you.
It will only deliver the bytes that actually
changed from the version that the user currently
has on their device.
This minimizes the download size and the update time.
If you really need to keep older users on the latest
version of the game, you will probably
want to handle cases when the user opens the game before he
has had a chance to update.
In order to do that, you can use our in-app updates API.
The in-app updates API lets you trigger the update directly
from the game without risking any user
dropoff by having users go to the Store to get their update.
You can decide when to trigger the update flow
from within the game itself.
And the users are kept in a managed flow
until the update finishes.
We launched the in-app updates for apps last year
at Google I/O. And we are now adding supports for games.
The in-app updates API in the Play Unity plugin
allows you to call for an update directly from your Unity game.
And we will soon add support for this API
in the PlayCore Native SDK, as well,
for native game developers.
If you would like to join our beta program
for in-app updates, please apply at the link
that you can see on the screen.
YAFIT BECHER: Now that we've covered Play Asset Delivery
core features, let's talk about asset targeting
and see how you can rely on Play not only for getting
your assets to users but also for serving the optimal assets
to each device.
With Play Asset Delivery, we started building
towards our vision of tailored delivery
that optimizes all aspects of your game serving,
from which parts of the game to serve to whom and when.
With this, beyond just letting you
have control over when to deliver assets,
we want to help you serve the optimal set of assets
to each device.
The first step in this direction is texture compression format
targeting.
As you know, there are different algorithms
for texture compression.
And the more advanced ones are only
supported on newer devices.
Ideally, you would want to serve the most advanced format
supported by the device.
But doing so introduces additional complexity
that most games prefer to avoid.
Instead, you'll have to make a hard compromise.
Either choose a less efficient format that
is supported by most devices or choose the most efficient
format but exclude many devices that don't support it.
Play Asset Delivery lets you achieve the best of both worlds
and serve optimal-efficiency texture formats while still
having maximum reach.
With Play Asset Delivery, you can package multiple texture
compression formats and rely on Play
to serve only the assets that are
optimal to the requesting device.
This way, you don't need to compromise on using
suboptimal compression formats.
And you can have your users always
get the best asset suitable for their device--
no wasted bandwidth or suboptimal loading performance.
To join our beta program for texture compression
format targeting, apply at the link you see at the top.
ALESSANDRO DOVIS: Let's now talk about the integration of Play
Asset Delivery into your game.
The first step is to organize your game assets
into asset packs.
Asset packs are simply containers
that include only assets and the manifest
file but no executable code.
In the manifest, you will set a delivery mode
to be either Install Time, Fast Follow, or On-Demand
so that Play will know when to deliver the asset pack.
In order to call for assets to be downloaded on demand
and to check the delivery status of your pack,
you will need to use the PlayCore SDK.
The PlayCore SDK is a Play library
that serves as an interface between your game
and Play's distribution stack.
The final step is to build your game binary and assets
and choose the Android App Bundle as your upload format.
Now, many of you are probably thinking,
well, this sounds great, but I'm using a game engine that
doesn't support this feature.
So how can I possibly use any of this?
Well, the good news is that we have taken this into account.
Play Asset Delivery comes with support
for many different integration services,
so you will not need to add any code to your publishing
pipeline scripts to build your app bundle using Bundletool.
And you don't need to find ways to integrate with a Java
API in your game code.
We wanted to make it very simple for you to use Play Asset
Delivery straight away, regardless of the game engine
that you're using.
So let's look at Play Asset Delivery
integration for a few different environments.
If you're using the Unity engine,
we have built a Unity plugin that
takes care of packaging your Unity asset bundles into asset
packs and lets you build an app bundle that includes them.
At runtime, the plugin wraps the PlayCore SDK so that you can
use C# functions in your Unity game with no need for complex
JNI glue code.
The plugin is now available in our Package Registry
and is compatible with Unity 2017.4 and higher.
For Unreal Engine, we are happy to announce that the upcoming
Unreal version will support building app bundles with asset
packs.
Version 4.25 will no longer use APK expansion files,
and it will instead package your assets
using Install Time delivery.
If the total size of your assets is greater than 1 gigabyte,
you can choose to serve the rest using Fast Follow
or On-Demand delivery modes.
To get your additional resources delivered
on demand and for checking the status of Fast Follow delivery,
you will be able to use a provided blueprint that
performs interaction with the PlayCore SDK.
If you're using any other engines,
you're still probably using Gradle internally
to build your Android game.
The upcoming Gradle 4.0, which will go stable in April,
will let you build in a bundle combining your asset packs
and your binary into one single artifact.
You will not need to call Bundletool directly.
You just need to update your Gradle version
and configure the delivery mode in the build.gradle file
for each individual asset pack.
You can then use the native version of the PlayCore SDK
to handle Fast Follow and On-Demand delivery modes
in your code.
YAFIT BECHER: Now did you see that you can, indeed,
use Play Asset Delivery no matter which game engine you
are using, you're probably wondering about testing.
Clearly, before adopting PAD and releasing a new version that
uses it, you will want to validate
that everything works as expected and your game
functions correctly.
Early in the integration process,
you probably want to test locally and validate the game
interaction with PlayCore API.
To do that, you can build the app
in local testing mode using Bundletool.
In apps built with local testing mode,
we look for asset packs in a predefined local directory
and simulate the download off the files
as if they're originating from Play Service.
As you get closer to having a release candidate,
you'll probably want to test your game as realistically
as possible to make sure your game will
perform great for your users in the wild.
To validate this, you can upload your test
build to Play using internal app sharing
and get a shareable link your testers can
use to download the game from.
So let's recap what Play Asset Delivery can help you with.
You can publish a single artifact to Play,
including all the resources your game needs.
You'll have control over when and how Play delivers your game
assets.
You can rely on Play to take care of keeping your game
assets up-to-date.
And you can deliver assets of optimal texture compression
format to the requesting device.
All of this is now generally available to you for free.
The total download size allowed per vision is two gigabytes.
You can use it to deliver your assets using Install Time, Fast
Follow, or On-Demand.
To make sure you and your users are getting the best
performance, Install Time delivery
is limited to one gigabyte.
And each individual asset pack can be up to 500 megabytes.
Other than that, you can use the two gigabytes
however you choose.
We hope that this presentation demonstrated our commitment
to helping you serve your entire game through Play
and that we are doubling down on our vision
of customized dynamic delivery.
Play Asset Delivery, with the new App Bundle
format for games, its free delivery modes, updates,
and patching are generally available.
And you can find documentation at developer.android.com
that will walk you through the integration process
depending on the game engine you choose.
If you are interested in trying out
our new in-app updates for games or texture compression
format targeting, join our early access program at this link.
[MUSIC PLAYING]