Endling Mobile




During my final year of study in the Game Development program at Digital Arts and Entertainment, I was fortunate to secure an internship at HandyGames in Bavaria, Germany. In this role, I worked on porting Endling, a previously published project from Unreal Engine 4 to mobile platforms. My primary focus was on optimizing performance for smooth operation on Android and iOS devices.

There were a lot of tools we used that were new to me prior to the internship. Such as Unreal Game Sync, which we used alongside of Perforce for our source control.

Android Studio was a necessary tool to port to mobile Android devices. We used this tool to install and set up the SDKs correctly, as well as it's debugger to get performance measurements and call stacks on our builds on the devices.

Unreal Insights profiler was another tool that I used a lot of the time. This tool was used for both profiling CPU performance and RAM usage. For RAM there were also some other custom tools from either inside the company or online that we used.

When the Insights profiler didn't show enough, or we needed to know the values of Shipping builds, we used Snapdragon Profiler as well. This gave us a detailed overview of everything going on inside of the phone.

When we had graphical or GPU issues we used the graphics debugger RenderDoc to look into them. Besides for Android, we also ported the game to iOS devices. For this, I also had to work with MacOS and XCode. However, the greatest challenge for iOS was making sure the RAM didn't cross a certain threshold.

Besides these tools, Unreal Engine's build in commands also helped a ton for profiling, things like Stat GPU or Stat Memory showed us values that other tools often didn't.

A significant issue was the compiling of shaders at runtime giving frame drops, therefore I had to implement PSO Caching. This way the shaders can compile during loading screens instead, keeping the framerate while playing more stable.