Overview
Unreal Engine provides developers access to high-end rendering, advanced tools, and a scalable workflow when developing games for mobile devices. Delivering a high level of fidelity on mobile hardware requires deliberate planning and consistent performance optimization throughout development.
This page builds on concepts introduced in the Building Multi-Platform Projects in Unreal Engine page and focuses on developing, optimizing, and deploying projects on mobile platforms.
Installing Apple and Android Build Support with Unreal Engine
When you install Unreal Engine on your computer, you can choose from a variety of installation options by clicking the Options button. In the Options menu, you can install the required binaries for each mobile platform along with Unreal Engine by using the Target Platforms list.
The binaries provide the requirements needed to develop projects for target platforms. The software development kits (SDKs) and native development kits (NDKs), covered under the Packaging section of this page, provide you with the requirements to package your project to target platforms.
After you enable the target platforms you would like to develop for, you can use the Packaging section of this page to access the SDKs and NDKs required to package your game.
For more information about installing these optional target platforms with your installation of Unreal Engine, see the Installing Unreal Engine page.
Packaging
As a part of the Build Operations in Unreal Engine, Packaging for mobile devices comes with certain requirements. Each mobile platform has specific prerequisites and components needed to package games and deploy them on a target device. Once the prerequisites are installed, the build operations work in a similar manner.
Apple
Packaging to Apple devices (iOS, tvOS, iPadOS) requires a Mac with Xcode to package signed builds, and developers must go through the certificate signing and provisioning process on the Apple developer page. You can learn more about this in the Packaging iOS Projects page.
Windows users can use special workflows to remotely connect to a Mac to deploy builds and cook content. The Remote Mac Builds page outlines the steps required to set up a remote build pipeline for Apple devices on Windows. You can learn how to compile shaders for Apple’s Metal API in the Windows Metal Shader Compiler page.
Android
Packaging to Android devices requires Android Studio with specific Android NDK and SDK requirements.
Unreal Engine users can use Turnkey to automate the setup process. See the Turnkey setup page for further information on setting up Android SDK and NDK.
If there are existing or conflicting installations of Android Studio or the Android SDK on your system, you may need to follow the manual setup process.
Android devices vary by GPU family. Some support the Android Vulkan rendering level, others fall back to OpenGL ES 3.2.
Android storefronts also vary. Make sure to check your target storefront's guidelines and requirements to ensure you are targeting an application size that is acceptable. If you are using Google Play Store, you can use Android App Bundles.
Rendering Features
Since most mobile devices have more hardware limitations compared with desktop and game console hardware, Unreal Engine includes multiple rendering paths for mobile devices depending on the devices hardware specifications and feature support. These rendering paths use performance-oriented models for many of Unreal Engine’s rendering features, such as lighting and textures, and it removes unsupported post-processes.
Unreal Engine provides both forward and deferred shading modes tailored for use on mobile devices, as well as support for the desktop renderer. You can learn more about shading modes and how to leverage them in the Rendering and Shading Modes page.
Most mobile devices support deferred shading, which provides enhanced lighting effects and is often more efficient due to reduced material instructions, especially for projects that use dynamic lighting, real-time global illumination, and distance field-based effects such as dynamic shadows.
You can learn more about deferred shading for mobile devices under the Mobile Deferred Shading section of the Rendering and Shading Modes page. Forward shading can be beneficial for projects that use precomputed lighting.
You can learn more about overall rendering features for mobile devices in the Mobile Rendering Features page.
Optimization
Optimization is important for any project, and is especially critical when developing for mobile platforms as they typically have lower capabilities due to hardware limitations compared to PC and console devices. Because of this, it’s important to make optimization a part of your development process, starting early and doing it frequently.
Device Profiles and Scalability settings can be used to customize rendering settings on a per-hardware basis.
Scalability settings are used to define quality levels for individual features like shadows, foliage, and mesh detail. Device profiles then map those settings to devices that are compatible with them. You can learn more about Device Profiles and how to set them up in the Setting Device Profiles page. The page for Scalability settings can be used to learn more about the different options.
For more information, see the Customizing Device Profiles and Scalability for Android page.
A lot of Unreal Engine’s feature development is handled through plugins. By default, a lot of these plugins are enabled and can be found in the Plugins window (Edit > Plugins). For mobile projects, you can disable a lot of plugins that don’t impact mobile development. To find out more about general mobile optimization steps, see the Mobile Optimization Guides page.
Application Size
Application size is an important factor in deploying games. Storefronts often have limitations on what you can deliver over the air. You can limit application size with several key optimizations.
You can split your project into multiple .pak files using Chunking, which helps organize and deliver content more efficiently.
For iOS projects, see the iOS Packaged Game Size page to learn how to optimize your iOS builds. For Android projects, read the Reducing Android Binary Size page to learn how to to optimize Android builds.
On-demand content delivery is a system that lets you separate non-essential assets and only deliver them when needed.
The ChunkDownloader is a patching solution in Unreal Engine that lets you download and mount content at runtime from a remote server. ChunkDownloader can be used to deliver content on-demand, eliminating the need to package every asset with the project and reducing the application’s file size. Read the Using ChunkDownloader for Patchingpage to learn more.
The Google Play Asset Delivery(GooglePAD) is a solution for delivering large asset files like models, textures, and sounds to Android apps after they are installed, rather than bundling all content with the initial app package. This reduces the application’s file size.
Debugging
Debugging on mobile devices requires using a set of tools and workflows, some of which are unique to each platform. These tools can be used to identify issues in your game and ensure it runs smoothly on mobile devices.
Apple
To debug your project on Apple devices, you need to use Xcode, Apple’s integrated development environment. Xcode provides the tools necessary to identify and fix issues on iOS, iPadOS, and tvOS devices. You can find out general details about supported workflows in the Modernized Xcode Workflow page.
The Debugging iOS Projects with Xcode page contains step-by-step instructions for debugging your projects on Apple devices. Additionally, you can see the
Android
To debug your project on Android devices, you can use either Android Studio or Visual Studio. Both tools provide the necessary features to identify and resolve issues in your game running on Android devices.
The Debugging Android Projects page contains step-by-step instructions on how to get started. Android Studio provides an Android Emulator for testing your project on a variety of Android devices without the need for a physical device.
By using Visual Studio, you can debug using the Android Game Development Extension (AGDE).
For the latest information about Google’s licensing terms regarding ADGE, you can refer to the AGDE overview page.
You can use Android Debug Bridge (ADB) to interact with your application on your Android device, or you can use Unreal Android File Tool (UAFT), which is more specialized for specifically working with Unreal Engine applications.
Mobile Previewer
Mobile Previewer is useful for previewing what your level will look like on different mobile devices and different mobile rendering paths directly in the Level Viewport. It is good for providing a baseline of what the project will look like, but may not be fully representative as testing on the device itself.
For Unity developers, you might be familiar with the Device Simulator in Unity. Unreal’s Mobile Previewer is the equivalent of the Device Simulator, with additional features such as previewing your game in an emulated rendering environment close to the device you select.
When enabling the different preview rendering levels, the materials in your scene are recompiled to emulate the look and feature set of the renderer preview that you selected. You can use the Mobile Previewer to switch back and forth between rendering levels seamlessly, without having to restart the Editor.
For more information on using and testing rendering on specific devices, see Mobile Previewer.