Optimizing 3D mobile games for battery life

Does anybody have any advice of things to keep in mind when designing a 3D game for mobile? Especially around maximizing battery life? I want it to be playable on the go, but I also want to be able to rotate and pivot.

I would like to know this as well, but what you can do anyway is to disable all shadows, use only low resolution textures and not too many polys and remove unnecessary light sources. Don’t use post processing and set the cloud speed to zero to prevent unnecessary calculations.

I mean it’s a pretty simple task to accomplish, you just need to minimize all cpu/gpu load on the device. That means trimming the fat wherever you can.

Lowering the FPS will likely give you the biggest results in the easiest fashion. For example, going from 60fps to 30fps will likely drop the load by 50%.

Avoid unnecessary computations. Put most of your tick functions onto timers so that instead of ticking 30 or 60 times per second, it might only tick 5 times per second.

With materials, keep them as simple as possible. Use a shading model like unlit or a make a custom shader with a low instruction count.

With lighting, disable shadows.

I think you probably get the gist of what I’m talking about. Most of your power consumption is going to be GPU related though.

i’ve definitely measured increased battery drain due to CPU tho. so you need to look at both CPU and GPU.

what’s difficult is measuring your CPU pressure, because Apple provides no way to lock the CPU clock frequency. For GPU, they have Xcode’s performance state conditioner, so that’s very useful to measure perf gains…but yeah, hard to do on CPU…i’m currently using an artificial workload to try and pin the CPU, and then measuring with a known workload to make sure the frequency is as expected, and this seems to work OK.