FAQ: Mobile General Tips

Mar 24, 2021.Knowledge

How did you deal with mobile platforms challenges related to minimizing content and memory footprint?

Are there any best practices for mobile development beyond what is in the published documentation?

  • Start testing on devices early
  • Thermal and CPU are big issues on low-end devices. We are close to being CPU bound
  • CPU performance contributes more to thermal than GPU
  • We have various threads, and “stat unit” shows you the breakdown of the threads. Useful for determining bottlenecks
  • In general, core gameplay loop logic should not be in blueprint code, should be in C++ or only using blueprint sparsely (mainly on events). Fine to prototype with blueprint, but best to convert to C++ in the end

What are some battery management and best practices in Unreal on Android and iOS?

  • Battery life has not currently been a major focus on Mobile compared to other areas such as memory and performance, though we do have options available.
  • We generally alter Engine or hardware settings based on different events to better optimize and preserve battery life. Those events are customizable, like “In Lobby”, “In Game” or after no user interaction for a period of time. Other events could be triggered when the device runs below a certain percentage of missed frames or even via a user facing toggle. We use a user facing toggle to drop the settings to a lower quality and resolution at the player’s choice. It is recommended to only hook into events that occur infrequently or at a transition point.
  • We generally perform minimal battery lifetime tests for initial release, but this is not yet a regular part of our automated testing. Once the current memory and performance initiatives are complete, battery life will become a heavy focus, as well as heat generated. We have active conversations with Samsung and Google to integrate APIs from them for this effort and have working relationships with other vendors to discuss how to improve here.

Are there minimum specs for mobile devices?

Will the UE4 networking and online subsystem connect mobile phones to servers that have VR and PC players, without further work in the backend of the device (Android Studio/Xcode)?

  • Our networking is largely device agnostic, but there will be some device-specific steps as required by the platform in questions (i.e. requesting permission for various things in the Android or iOS SDK). If the mobile devices get disconnected, reconnecting mid-match would require a project specific solution.

Does Mobile have the same implementation as a tablet?

  • For the most part, yes.

For converting to an iPad version, is the process relatively simple or is it something we should prep during production? If so, what optimizations make the biggest influence?

  • The project should be executed on the target platform as often as possible. Performance is a constant battle and it’s much easier to adjust as you go since you can apply your learnings to the new content (vs optimizing at the end.)
  • This link provides some reference as to what features work on IOS: iOS Device Compatibility | Unreal Engine Documentation

Debugging General Tips

What are the pros and cons of debugging Android applications through Visual Studio vs through Android Studio?

  • Android Studio is the only practical way to debug right now
  • Google has a VS plugin in development, but current workflows that work today are around Android Studio. We work closely with Google - if VS plugin is a good workflow we would consider it.

When playtesting on-device, how do we capture and harvest crash dumps?

  • We previously used Crashlytics (migrated to Firebase) for a few years for both Android and iOS and it was successful.
  • We have recently migrated to a proprietary Epic crash reporter to flesh out our own service.
  • Our internal tools are not production ready for licensees, it will be a long time until this happens, we recommend looking into third party solutions like Firebase or something equivalent.

What do you recommend for collecting crash data on customer devices and debugging those crashes?

  • In the past we have used Google Crashlytics via Fabric (migrating to GoogleFirebase in March2020) as a third party crash reporting solution on iOS and Android. We have recently transitioned to an internal crash reporting solution which has yet to make its way to main Engine source for licensee use. Going forward most of our platforms will be transitioned to our own crash reporting system where possible and available for licensees. No ETA on availability of the Epic solution yet, but integrating third party or proprietary solutions are absolutely feasible.

On which mobile devices is output logging supported?

  • Well supported on Android.
  • Not that well supported for iOS on Windows, but it does work with some effort.