(upbeat bright music)
Hello, my name is Katie Roberts-Hoffman,
and I’m a product manager on the Android Games team.
We've been re-imagining the gaming experience on Android
and what we can do to improve the OS and developer ecosystem.
Last year, we completed interviews with both core and casual mobile gamers
to identify valuable gaming experiences to bring to Android 12.
We found that users were looking for a variety of in-game utilities,
such as quick access to screenshots and screen recording
to be able to quickly capture and share their showcase moments.
Or features like Do Not Disturb mode for Games,
a way to remain uninterrupted during game play.
We built these utilities into a product we call Android Game Dashboard.
Here's a quick overview that shows
how easy it is to enable an in-game screenshot shortcut.
Take the screenshot and share it all without interrupting the gameplay.
And the shortcut bar that houses the screenshot button
can be minimized afterwards to remain hidden when it's not needed.
It can also be relocated.
Game Dashboard will be available on a limited set of Android 12 phones.
And we're eager to get your feedback
on ways to continue to improve in-game experiences.
What was most surprising to us in our user research
was the user sentiment around game modes,
a way to alter the performance trade-offs of a game.
Game Mode was identified as the most desired feature
amongst the users we interviewed, including both core and casual gamers.
In Android 12, we are introducing the Game Mode APIs,
where we connect the user's preference
for highest performance or longest battery life with the game itself.
Performance Mode is our lowest latency, highest sustained frame rate mode.
It's particularly helpful when competing
against your friends in Twitch-sensitive games.
Conversely, for Battery Saver Mode for Games,
we expect reduce CPU and GPU load while maintaining acceptable quality,
done with a goal of extending playtime.
We should note that the Battery Saver Mode for Games is a separate feature
from the system Battery Saver modes,
as the Game Mode API represent the user’s intent
for that specific game only and not the system overall.
For more balanced experience, we also have Standard mode.
Basically, the default experience a game would exhibit today,
without knowledge of the user’s preference.
The users we interviewed understood and appreciated the simplicity of the trade-offs,
willing to take battery reduction for high frame rates in Performance mode
or accept fidelity losses to save battery.
We've received positive feedback from our partners
and we're excited to share a quote from our partners at Samsung.
As Mr. Kim shares, Samsung continues to strive
towards providing the best gaming experience and performance across their devices.
And we’ve enjoyed working with them on Android 12 Games features.
Now, let’s deep dive into what Game Mode APIs mean for you as developers.
Game Mode APIs allow developers to understand the user's intent.
On the right-hand side, you can see that a user can access
the Game Mode UI via Settings, and after clicking on Game Optimization,
they’ll be able to select one of the supported modes for the game.
Developers can query this user intent via the new Game Mode system API.
The settings are sticky to the game,
so if a user opts for Performance mode for a racing game,
when that game is subsequently relaunched, it will remain in Performance mode.
The user would then change their preference in Settings to alter the state.
So, once the user's intent is ascertained,
you have the opportunity to optimize the experience accordingly.
We have a number of tools and libraries to help with game optimization
with more details in other sessions this week and available at the link shown.
Here, we look at a few ways to reduce CPU and GPU loads,
which can then be used to increase the target frame rate
or reduce battery consumption.
For Visual Studio users, the newly launched Android game development extension
provides quick access to system profilers
to help you optimize the performance of your CPU, memory, network, and energy.
We've also recently updated the UI to make it more intuitive.
You can also find these tools bundled with Android Studio.
The Android GPU Inspector was released in beta last year
to work across GPU IP vendors to track down inefficiency.
As we've engaged with devs using AGI,
we found a number of games that achieve 30% or greater improvements in frame rates,
following GPU analysis.
The Android GPU Inspector team just announced the Frame Profiler feature.
Once a bottleneck has been identified with the systems profilers,
the Frame Profiler provides timing information breakdowns
at the render pass level, allowing you to pinpoint the exact problem.
It also lets you explore textures, geometries, shaders,
render pipelines and more to let you deeply analyze
and better understand that frame.
Of course, the most common trade-offs in 3D-intensive games
are related to target frame rate and asset fidelity.
By using the Android Frame Pacing library,
it's easy to both maintain a stable frame rate
but also to change the target frame rate.
The Android Performance Tuner provides field metrics
where frame rates and fidelity settings can be further evaluated.
For games that already have in-game settings for various fidelity and target frame rates,
it’s relatively straightforward to integrate the Game Mode APIs
to then trigger different in-game settings at launch.
We’ve heard that not many gamers are selecting the customized in-game settings
and by offering an easy choice between performance and battery savings,
more users can get the experience they're seeking.
We understand that some games aren't able to be updated.
Perhaps it's an older title that is still very popular
but could still benefit from some performance or battery savings.
We are introducing a concept that we call Game Mode interventions in Android 12.
This allows the OS to make changes to the game behavior
without having any APK changes directly.
Game Mode interventions are an alternative path
when the game doesn't leverage the Game Mode APIs.
We expect the number and impact of Game Mode interventions
to continue to grow over time,
enabling even better performance and power behavior.
One critical stack to enable this is ANGLE,
an open-source standardized GLES translation library
that sits on top of native Vulkan drivers.
This allows us to intervene at much lower levels of the stack.
For those of you who followed ANGLE development over the past few years,
you may recall that it recently became GLES 3.1 conformant.
We've since been continuing to optimize performance
and now see GPU time improvements on some games.
These results aren’t universal.
But for games that perform better with ANGLE, we can run an alternate stack.
This intervention is still under development, so let’s take a look
at the already implemented WindowManager back buffer resizing intervention.
With higher resolution screens, many games don't benefit
from rendering at the panel's native resolution.
We've introduced a resizer within WindowManager
where a game can be resized at scaling factors ranging from 50 to 90%,
90% being an almost negligible resize.
In our discussion with devs,
we've seen a strong interest, particularly in casual games,
where improving battery life is a higher priority
than improving peak frame rates.
As you know, it is oftentimes hard to get precise and isolated metrics
on product improvements, and these metrics may vary depending on the device,
drivers or other processing occurring at the same time.
In a recent game we measured, we found a 13% reduction
in battery consumption with a 70% resize.
On the flip side, the same resizing intervention
can also be used to aid performance,
particularly in games where the ideal frame rate
is just slightly out of reach.
With a small resize, we can stabilize the frame rate;
that is, reduce the standard deviation of frame rates,
resulting in a smoother, more enjoyable, jank-free experience.
Here, we've benchmarked a popular action game
where the standard deviation was reduced from six milliseconds
to three milliseconds with a resize factor of 70%.
At the end of the day, we know the devs
are in the best position to decide what the ideal user experience should be.
We're providing three different avenues to interact with these APIs.
For the most controlled experience,
you can call the Game Mode APIs directly and alter the game’s behavior.
Alternatively, you can test the Game Mode intervention
and determine the appropriate setting that can then be advertised to the device
or an OEM can run their own QA program
to identify appropriate Game Mode intervention settings.
Of course, you, as the developer, have final control
of the Game Mode interventions
and can opt-out of interventions via manifest changes.
To summarize, the new Game Mode APIs in Android 12:
Game Mode APIs allow you to access the user's preference
for performance or battery savings.
And these APIs will be available on select Android 12 devices.
Using the tools and libraries we have as part of the Android Game Development Kit,
you’re in a great position to optimize your game directly
or you can benefit from the Game Mode interventions
without needing to modify your APK.
If you'd like to learn more,
please check out our Android Developer website,
available at the link showing.
You can try the Game Mode APIs and Game Mode interventions
on the recently available Android 12 Beta.
Thank you again for your time.
And we look forward to experiencing the amazing games you've created.
(upbeat music)