Posted by Scott Carbon-Ogden, Product Manager Android Games
Today we’re launching the Android Game Development Kit (AGDK), a full range of tools and libraries to help you develop, optimize, and deliver high quality Android games.
AGDK features follow three key tenets:
Code built for game development. All of our libraries have been built and tested with performance in mind using C or C++ APIs.
Reduce fragmentation. The AGDK tools and libraries work across many different Android versions. Most of these features will work on almost any device in use today.
Built by Android, for Android. Features will be enhanced by future Android platform updates, and the libraries will provide backwards compatibility when possible.
In this initial launch, we’re focusing on covering three major areas where we heard a lot of feedback from our developer community: Integrated workflows, C/C++ game libraries, and performance optimization.
Integrated workflows
Generally, the less you need to switch tools, the more efficient you can be, so with AGDK, we’re providing new tools to facilitate Android game development in your primary IDE. We will focus on the bits of workflow where Google can add unique value and solve Android specific problems, while being compatible with whichever parts of your existing workflow you are comfortable with.
The Android Game Development Extension adds Android as a platform target to Visual Studio. This enables existing multi-platform Visual Studio game projects to quickly integrate Android as a new platform. Learn more in the AGDE session.
We are working with some of the most popular game engine developers to integrate our tools and libraries directly, so you can benefit from enhanced performance and stability without needing to make any changes.
Where that’s not possible, we’ve focused on building plugins for game engines such as Unity. These plugins are available in one place to help you quickly get what you need.
C/C++ game libraries
Start your C development with less Java Native Interface (JNI) by using our game libraries for C/C++ development. Most games and game engines are written in C++, whereas Android development often requires using the Java programming language. Bridging these two languages using a Java Native Interface requires effort and can introduce bugs or performance regressions. AGDK will help you build and customize game engines by providing C game libraries that minimize the use of the Java Programming language and JNI. This makes your games easier to build, debug, and maintain.
We’re focusing on what you’ve told us are your top frustrations. Initially, this will involve building foundational classes for activity and input. Longer term, we plan to make more C libraries to provide functionality that is commonly used across game engines. We're incorporating our existing frame pacing and high-performance audio libraries into this effort, and adding three new ones:
Game Activity provides a foundation for C++ games to be built on. It provides C interfaces for all the Android events that you'd expect, from screen rotation to app lifecycle. This way you can minimize the amount of development time you spend in the Java language. Unlike Native Activity, Game Activity is compatible with fragments and extendable, making it easier to integrate some of your favourite SDKs.
Game Text input provides a stable way to use the software keyboard in C, that is officially supported and will work across Android versions.
Game Controller is a way to handle input from game controllers in C, to map their functions and to reconnect to the device when necessary.
To make integration as easy as possible, you can get all our libraries as a Maven dependency, as a pre-compiled Zip file, or as source code.
Performance optimization
Our goal is to help you find any stability or performance issues before launch and monitor your game post-launch to catch any issues. We’re starting with the most important metrics like frame rate, loading time, and memory, and will be including new metrics over time.
We’re launching a major update to the Android GPU Inspector (AGI), that includes frame profiling functionality. This works alongside the existing GPU profiling elements to help you fully understand any GPU related issues. AGI is currently in open beta, and you can learn more in our GPU inspector session.
We also have a suite of profilers in Android Studio and AGDE for the system, power, CPU, and our new native memory profiler that game devs can use to find inefficiencies.
Android Performance Tuner provides user telemetry. You can use it to see how different parts of your game perform and how your game performs across different devices. You may already be using this tool for frame rate, and now we’re launching a new loading time function. Learn more in our Android Performance Tuner session.
Visit g.co/android/AGDK for our latest resources for Android game development and to download the AGDK. Check out the mobile session track for the full lineup of sessions from the Google for Games Developer Summit.