Game Performance on Android sucks

0 favourites
From the Asset Store
Firebase: Analytics, Dynamic Links, Remote Config, Performance, Crashlytics on Android, iOS & Web Browser
  • I needed to release a game for Android TV. It works fine on old low spec mobiles, but it lags terribly on TV. Long reaction time to controls, low fps, sounds are played with a significant delay. The same TV can play 4K videos and run many games from Google Play.. It's so frustrating.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • I feel your frustration.

    I'm having a nightmare optimizing for Android on a low end device. For me running a single tween drops the fps by over 30-40%.

    I only get a solid frame rate (50+) on device when nothing is moving.

    I'm not sure I have anywhere to turn. There don't seem to be any answers here. :(

  • Hi

    I actually took the time to recreate my simple game in Godot. It runs much better than my Construct experience, but it was a major pain the arse to reengineer. I even have bloom lighting effects and a bit more going on.

    But I would always use Construct to prototype and to see if the core mechanic is fun.

    Regards

    I

  • If you want to create a game for phone, it is best not to include effects, and if it does include the option to disable them.

    I create very large games with construct 3, and I'm not having performance issues.

    It is true that some non-snapdragon processors have problems.

    This is a video of the game that I am working on now, in snapdragon it is perfect, in Helio it has FPS drops, but it can be played.

    https://youtu.be/ouZEG4JRyec

  • looks great Taximan - are you doing those cutscenes on the phone as well? are you just using the video player or something else?

  • jobelThe longest and most complex animations are videos, it would waste a lot of memory using the C3 engine, the simplest if you are made with sprites in the game.

  • The issue I have is that Android games made with other engines (even games made by myself) run MUCH faster on the low end device that I'm testing than my C3 app.

    I've optimized my app in every way possible, but if I even want to hit the dizzy heights of 30 fps I basically have to remove pretty much everything. What's more, is that my app is essentially a VERY simple one screen animation.

    The only part of my game that runs at 55fps is the menu screen because I have stripped out all animation and there is very little code.

    Oddly, it runs at at smooth 60fps on some slightly newer devices, but its unclear which devices exactly the engine has problems with.

    I CAN get it run fast if I set the frame rate mode to Unlimited, but I'm told that I shouldn't do that in a release build because of battery drain (and some other reasons?). I would probably prefer to set this mode for the older devices that run the engine very slow but I don't think there is a way to switch this mode at realtime :(

  • I wouldn’t expect another reply, Scirra are aware of the issue and have raised this themselves on the Chromium bug site. Unless Google allow developers to override the block list for GPUs, this issue will remain. The only other solution won’t happen, which is a native APK version of Construct...

  • The issue I have is that Android games made with other engines (even games made by myself) run MUCH faster on the low end device that I'm testing than my C3 app.

    I've optimized my app in every way possible, but if I even want to hit the dizzy heights of 30 fps I basically have to remove pretty much everything. What's more, is that my app is essentially a VERY simple one screen animation.

    The only part of my game that runs at 55fps is the menu screen because I have stripped out all animation and there is very little code.

    Oddly, it runs at at smooth 60fps on some slightly newer devices, but its unclear which devices exactly the engine has problems with.

    I CAN get it run fast if I set the frame rate mode to Unlimited, but I'm told that I shouldn't do that in a release build because of battery drain (and some other reasons?). I would probably prefer to set this mode for the older devices that run the engine very slow but I don't think there is a way to switch this mode at realtime :(

    It is very strange that a simple game does not work well. If you put a screenshot or video of your game, maybe we could help.

  • I CAN get it run fast if I set the frame rate mode to Unlimited, but I'm told that I shouldn't do that in a release build because of battery drain (and some other reasons?). I would probably prefer to set this mode for the older devices that run the engine very slow but I don't think there is a way to switch this mode at realtime :(

    Actually this can be a solution even if is not elegant. I have thought about the same when I was testing my game in lower end device. I did several test, and if the frame is set to unlimited in some old GPU I can get the framerate up to 60fps.

    Ashley it would be possible to add a feature that would allow us to change the framerate mode in real time? or even if we need to start the whole game? we could easily made an event that if the fps drops below 30fps for more than 5 seconds then the framerate mode can change allowing us to run the game smoother. This could be a quick fix for the GPU that strangely run badly.

    The only problem I encounter with my game is that run better on Adreno 405 than Adreno 618, and this of course doesn't make any sense. Also, because the cpu was running low and the fps wouldn't go up to 25fps. While in older device, the CPU gets even at 70% running at 60fps with no problem.

    If your game run really bad in high end devices, or even on medium device released in 2017/2018, then means that you are doing something wrong. After several test, I can say that a low resolution will drastically increase the performance. I use the 1024 x 576 with full screen quality set to low. The sprites should be also small, not more than 1024. For the design or particles I use all tiled background, and I keep al my sprite with a small size. With this method my game run smooth in most the devices I tried (9/10) with levels with over 1000 objets.

    The only things we can do is help each other testing our game in our devices so that we can blacklist the devices that run our game badly before release on the play store. The problem will be solved over time. Mobile are getting faster and faster every year.

    Taximan I really like your art style! I would be happy to try out when you have a beta version ready!

  • RibisI had a test version on google play, but google censored me for the murderer boy scene ... (now he's a 21-year-old fat guy ...)

  • RibisI had a test version on google play, but google censored me for the murderer boy scene ... (now he's a 21-year-old fat guy ...)

    Lol. You can published ad internal tester so that I don't think they can't censored it until you published it. Message me at Ribis#7413 on discord, I would like to test it on my device. Also I think you need to specify the audience target at the beggining?

  • For the record, since the introduction of WebGL in 2011, Construct games have rendered almost identically to native games. WebGL is basically OpenGL exposed to the web. So it's basically using the same rendering API as any other native game using OpenGL. (With WebGPU, this analogy will continue, but being more or less equivalent to the next generation Vulkan/Metal/DX12 APIs.)

    The main difference introduced by browsers is the driver blacklist. There are many poor quality drivers out there. These can crash and glitch and ruin games. This is a serious problem faced by many native engines. There is little anyone can do about it. Sadly the state of graphics drivers continues to be poor. (Hopefully the next generation APIs help with this, since they allow the drivers to be much simpler.) Browsers blacklist known bad drivers so you get software rendering instead. This means the game runs correctly, but slowly.

    So barring some kind of obscure browser bug we don't know about yet, the only explanation seems to be the graphics drivers. These are still a problem no matter which technology you use. You may find that when using some other game engine, it seems to be faster, but then you later run in to the crashes and glitches that the browser makers were trying to avoid. This can cause even worse problems, such as the game crashing or just showing a black screen on various types of Android devices.

    So while you may claim that Android performance sucks, I think really this is just driver blacklisting on a small number of devices for a good reason. It's a matter of picking your poison - do you want software rendering or the risk of crashes and glitches? I think the former is the right choice.

    Changing the framerate mode will only make this worse. It doesn't make anything faster, it only changes when frames are scheduled. Unlimited framerate mode will allow powerful devices to run up in to the hundreds, or even thousands, of frames per second, promptly drain the battery, and earn you poor reviews.

  • i think if we can have this integration in construct 3

    https://developer.android.com/games/sdk

    https://developer.android.com/games/sdk/performance-tuner

    to Get performance insights so we can identify the devices that causing problems will be something good

  • For the record, since the introduction of WebGL in 2011, Construct games have rendered almost identically to native games. WebGL is basically OpenGL exposed to the web. So it's basically using the same rendering API as any other native game using OpenGL. (With WebGPU, this analogy will continue, but being more or less equivalent to the next generation Vulkan/Metal/DX12 APIs.)

    The main difference introduced by browsers is the driver blacklist. There are many poor quality drivers out there. These can crash and glitch and ruin games. This is a serious problem faced by many native engines. There is little anyone can do about it. Sadly the state of graphics drivers continues to be poor. (Hopefully the next generation APIs help with this, since they allow the drivers to be much simpler.) Browsers blacklist known bad drivers so you get software rendering instead. This means the game runs correctly, but slowly.

    So barring some kind of obscure browser bug we don't know about yet, the only explanation seems to be the graphics drivers. These are still a problem no matter which technology you use. You may find that when using some other game engine, it seems to be faster, but then you later run in to the crashes and glitches that the browser makers were trying to avoid. This can cause even worse problems, such as the game crashing or just showing a black screen on various types of Android devices.

    So while you may claim that Android performance sucks, I think really this is just driver blacklisting on a small number of devices for a good reason. It's a matter of picking your poison - do you want software rendering or the risk of crashes and glitches? I think the former is the right choice.

    Changing the framerate mode will only make this worse. It doesn't make anything faster, it only changes when frames are scheduled. Unlimited framerate mode will allow powerful devices to run up in to the hundreds, or even thousands, of frames per second, promptly drain the battery, and earn you poor reviews.

    I completely understand the frustration with the drivers. I'm so far happy with the performance of Construct3, and most of the performance issue depends on how the events and how much we push the cpu itself. Today my friend tried again the game with Adreno 618 and strangely after one month it runs 60fps with no problem. Maybe the phone did some updates and now it works as excepted.

    Ashley, would you consider to allow us to switch the framerate mode in realtime? I have actually did some test with it and I confirm that in some old devices if we enable the unlimited fps the game does run smoother (from 45 to 65 for example). So, it could be a possible solution for slower device. If we detect really low fps for too long we could switch framerate and push a little bit harder the CPU right?

    I wouldn't concern about the battery issue. There are plenty of game that drain out the battery even while you charge the phone. These would be limited only in old phone I guess

Jump to:
Active Users
There are 2 visitors browsing this topic (0 users and 2 guests)