How do I lower my framerate dynamically?

I’m shipping an app on mobile devices and am unhappy about the power consumption in its idle state (sitting in a menu for instance).

If I have nothing animating I would like to lower the CPU overhead DRASTICALLY. On many of my menu screens I could wait until the user presses something.

I’ve seen the setting in the project settings but this doesn’t work for me (on a side note my iOS UI animations look pretty rough at 30fps, like they are running at a lower frame rate than that), though it does demonstrate a drop in CPU usage.

Any thoughts? Perhaps just put some dynamic Sleep’s in the main and draw threads that disapear during actual gameplay / activate animation and for short durations after the user presses soemthing?

Another question : what sort of CPU usage do people see on iphone5? I’m looking at 50-100% CPU utilization for an extremely simple game, just starting to optimize now but not sure what I should be aiming at.

Try play with this:

You can access UEngine object via GEngine, there also r.MaxFPS console command if i’m not mistaken which you can access via blueprints

That works.

However now I have a lack of responsiveness - expected with this approach and shippable (once I up the frame rate it remains up for some time after input / animation is detected, then drops again) but in theory it should be possible to work around this if I had a bit of control of the threading.

Basically as soon as I get input I want to wake up my game thread / up the fps.

Any ideas?