Android game development basics

This guide introduces new game developers to the main tools and libraries used for Android game development. The Android game development guides target developers that already have most of their game development environment planned or set up. For example, experienced game developers typically already have a game in development that uses a specific game engine, IDE, and graphics API.

In most cases, we recommend more user-friendly options for beginners instead of advanced options that maximize performance. If you're familiar with these tools and libraries, you can use the overview to find the guides that support your specific types of optimization, such as high performance or battery life.

Game engines

A game engine is a software framework that includes a set of libraries and tools for game development. You can use the libraries to add a wide range of features to your game that would otherwise prevent you from focusing on game content and optimization. The features usually include graphics, animation, sound, game loops, input device support, and more.

In addition, game engines usually include an IDE and other tools for configuring features, designing, developing, and exporting your game to Android.

One of the most important choices to make when you develop a game is whether to develop a new game engine, customize an existing game engine, or use an unmodified game engine.

Prebuilt

This is the option we recommend if you're new to game development. With a prebuilt game engine, you don't have to spend time developing a game engine or adding AGDK libraries, making it the simplest way to develop Android games. However; to develop Android games without modifying a game engine, the game engine must already support Android development.

When using a prebuilt game engine, we provide additional Android optimizations, workflow tools, and best practices. In addition, we provide Google Play services, which includes a wide range of social and distribution tools.

Here are some existing game engines that support Android development:

  • Godot: an open source game engine that supports multiple programming languages including GDScript, C#, and C++.
  • Defold: an open source game engine that uses the Lua programming language.
  • Unity: a widely used commercial game engine that uses the C# programming language.
  • Unreal: a commercial game engine that specializes in high-end 3D graphics. It uses the Blueprint visual scripting system and C++.

For more information, see the guide to using a game engine on Android.

Custom

The most advanced option is to create a new game engine or add Android support to your existing game engine. This is complex and time consuming, but it allows you to develop an engine that is completely optimized and tailored towards your needs. For example, many existing game engines include extra features that increase the size and lower the performance of your game, which is an area you can improve if you exclude those features.

Due to the complexity and time required to develop a game engine, we don't recommend this option for new game developers. In fact, this option is best for larger organizations that plan to use the engine on multiple games.

IDEs

The IDEs you use to develop Android games depend on the game engine you use and your workflow. The most common game engines include a game editor for design and code editing, which game developers typically use along with Android Studio. On Windows, we also support debugging and profiling Android games with Visual Studio.

Game editor

A game editor often tightly integrates game design features with code editing, and in some cases these editors help designers complete development tasks without writing code. If you are developing your first Android game, we recommend using this option along with Android Studio. Here's some of the benefits:

  • The UI and toolset focuses more on game design.
  • Integrates asset design and code editing tasks.
  • Focuses on the programming or scripting language that is supported by the game engine.
  • Includes modeling and rendering tools.

Android Studio

This is the official IDE for developing Android apps. Because Android Studio focuses on Android development, we recommend that you install it along with any other IDEs that you're using. Here's some of the tasks you can complete with Android Studio:

  • Debug code written in C/C++, Java, or Kotlin.
  • Manage the Android SDK, which is needed to build Android games.
  • Build, profile, and optimize games.
  • Edit C/C++ code using the Android NDK.
  • Configure app packages and Google Play settings.

For more information, see the Android Studio overview.

Visual Studio

If you're developing your game on Windows using Visual Studio, you can add Android as a target using the Android Game Development Extension for Visual Studio (AGDE). This setup targets games that are already in development using a Visual C++ project, so it is an option that targets more advanced game developers. You can use AGDE to do the following:

  • Use an existing Visual C++ project to create an Android game.
  • Debug and profile your game using Visual Studio.
  • Use distributed build systems such as Incredibuild or SN-DBS.

For more information, see the AGDE overview.

Android NDK

The Android NDK is a set of tools that allow you to develop an Android app in native code using C or C++. It can increase the performance of your game by providing it with more direct access to device hardware. It also allows you to reuse C and C++ libraries, and share game code across multiple platforms.

The NDK is required by some AGDK libraries and tools, as well as many game engines when developing for Android. One of the reasons is that the NDK is a common and powerful way to access the most common low-level graphics APIs that are supported by Android devices.

For more information about the NDK, see the Android NDK documentation.

Graphics APIs

To achieve the best 2D and 3D graphics performance, your Android game needs to use a low-level graphics API to communicate with a GPU. The most widely supported options for Android game development are OpenGL ES and Vulkan.

If you use an unmodified game engine that supports Android development, they will most likely use OpenGL ES or Vulkan. If you use AGDK to develop a game in C or C++, you will also need to use OpenGL ES or Vulkan. Furthermore, these are the only graphics APIs supported by the AGI graphics profiling tool.

OpenGL ES

OpenGL ES has the following benefits:

  • High performance.
  • Less complex and easier to use.
  • Supports a wider range of older devices.

For more information, see the OpenGL ES overview for Android.

Vulkan

Vulkan has the following benefits:

  • Even higher performance.
  • More control over the GPU.
  • Lower CPU usage.

For more information, see the Vulkan overview for Android.