Epic Games is talking about the success of its limited launch of the Fortnite Android Beta. The initial Android rollout was a Samsung exclusive for a few days and then Epic began to issue invites to a subset of Android users on other devices. Epic Games says that interest for Fortnite on Android has been "extremely high" with over 23 million players entering the Android beta and over 15 million players installing the APK. Epic bypassed the Google Play store and ended up with a serious flaw in its installer that could give hackers full access to user's devices. Epic later slammed Google for announcing that flaw publicly.
Epic notes that it worked with Samsung to profile and optimize Fortnite for its devices and that Samsung engineers were sent to multiple Epic offices around the world to help optimize the game's performance. Epic says that this testing allowed Samsung engineers to tell it what performance and memory bottlenecks were found and how to address these concerns.
As for the most common SoCs inside devices being used to play Fortnite on Android, 71% of devices playing the game are on Snapdragon SoCs. Over 92% of Fortnite players are running Android 8 Oreo or newer with about 8% of players using Android 7. Epic notes that under 0.5% of Fortnite players are using a version of Android launched in 2015 or before.
The biggest bottleneck that Epic says it had to address was CPU cost of rendering to maintain framerate. Epic says that the Adreno GPU in the Galaxy S9 can handle 1500 draw cells per frame, but older devices can handle significantly less. Supported mid-range Android devices were able to handle around 600 draw cells per frame with lower end devices averaging closer to 400. Epic notes that its biggest win in improving frame rates came as a surprise via emulated uniform buffers.
Epic writes, "Here’s how it works. At shader compilation time we identify all constants needed for a shader and pack them into an array from which the shader reads. We also store a mapping table that tells the engine where to gather constants from uniform buffers and where to place them in the constant array. At runtime, we keep uniform buffers in CPU accessible memory, use the mapping table to copy them to a temporary buffer, and upload all constants with a single glUniform4fv function call."
Vulkan is a new graphics API for Android, and since it's not a requirement yet on Android, support was limited to a few handsets such as the Galaxy S9+ and Note 9 Adreno versions. Epic says with Samsung's help it was able to optimize Vulkan support to be 20% faster than OpenGL. Memory was a big challenge for Fortnite since Epic is constantly launching new content. Epic says that it is constantly trying to introduce new memory optimizations.
Epic notes that right now it is focused on making the game run well on all currently supported devices and optimizing memory to improve visual quality and stability. After hitting that focus, it will look at compatibility woes including known sound issues. Epic is also exploring older and slower phone support for Fortnite, but it is impractical to go back too far with device support.