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 do want to note that I instead experience stutters (Unstable Dropping FPS) on an Adreno 610 (TM) GPU, Oppo A9 (2019). Cause, this is a mid-level phone.

    Unfortunately, it's the same as a few years ago, but with different phones.

    But, hopefully you guys solve this and make a difference. 🙂

  • It really upset me today. Initially I thought that it was due to mobile cornering,but now many are raising issues related to performance. I have invested a good amount of hard work on construct 3 and ....

  • I look at the phone in this case, Doogee N20, it was released in Oct 2019, I checked the ARM (Mali) database and it using a driver (r14) from Jul 2018 - so that driver was already a year and half old before the phone was released. There have since been 12 driver updates but they haven't been pushed out to the phone. And to me this is the big problem on Android. First you have buggy opengl drivers, and even if they fix the drivers, the phone vendors aren't pushing the updated drivers to their phones. Google knows this is a big problem, that's why there's this new initiative to push new graphics drivers out through the Play Store (so they will be independent from OTA system updates) see for example: xda-developers.com/arms-next-mali-gpu-updateable-drivers-google-play-store

    As for webview games, I think a small part of the problem is Chromium's approach of driver workarounds, and in worse cases, blocklist the GPU. I understand why they do it, but this is hiding the problem from the end user. Can you imagine if Microsoft did this on Windows? Oh, this game is crashing a lot using an AMD GPU, so we will just disable the GPU - there would be a riot. They don't do that, they leave it up to Nvidia and AMD to fix their driver issues, which they do - because if one vendor constantly put out slow or buggy drivers, PC gamers will rip out the GPU and put in the competitors instead. Unfortunately that can't be done a phone. And not many people when buying a phone think "ooh this has a Tegra GPU - their drivers are much better - so I'll buy this one". This all takes the pressure off the mobile manufacturers to deal with the problem that they should be responsible for fixing.

    As silly as this sounds, imagine if Fortnite or Candy Crush ran inside a webview. I imagine these issues would be dealt with really quickly - because a company with enough bite like Samsung - would go to ARM and tell them to fix it if thousands of players started complaining about their phones performance.

    And this issue is definitely not only webview games. Godot engine has been mentioned in this thread - for those who are not familiar - Godot compiles to native code - webview is not involved at all. When Godot 3 was released, they had developed a whole new renderer based on OpenGL ES 3 (which WebGL 2 is also based on), but when people started moving their projects to Godot 3, many experienced slow performance and hard crashes on Android. The source of most of these problems: buggy GPU drivers. And what happened? They basically threw the new renderer in the bin and went back to the old OpenGL ES 2 renderer. Source: godotengine.org/article/abandoning-gles3-vulkan-and-gles2

    That's not to bad mouth Godot, it is a good engine, but every engine I have used has issues, some of which are out of their control.

    The good news, if you read the Godot blog, at that time 36% of Android devices didn't support OpenGL ES 3 (Feb 2018). As of today, that number is down to 12%. So things are improving.

    But ultimately I think it is up to Google to pressure the phone and chip manufacturers to fix these issues, and get those fixes out to the users. GPU driver updates via the Play Store is a good sign they are doing this. That's why submitting issues like this to Chromium is good - the pressure will start to flow uphill.

  • I look at the phone in this case, Doogee N20, it was released in Oct 2019, I checked the ARM (Mali) database and it using a driver (r14) from Jul 2018 - so that driver was already a year and half old before the phone was released. There have since been 12 driver updates but they haven't been pushed out to the phone. And to me this is the big problem on Android. First you have buggy opengl drivers, and even if they fix the drivers, the phone vendors aren't pushing the updated drivers to their phones. Google knows this is a big problem, that's why there's this new initiative to push new graphics drivers out through the Play Store (so they will be independent from OTA system updates) see for example: xda-developers.com/arms-next-mali-gpu-updateable-drivers-google-play-store

    As for webview games, I think a small part of the problem is Chromium's approach of driver workarounds, and in worse cases, blocklist the GPU. I understand why they do it, but this is hiding the problem from the end user. Can you imagine if Microsoft did this on Windows? Oh, this game is crashing a lot using an AMD GPU, so we will just disable the GPU - there would be a riot. They don't do that, they leave it up to Nvidia and AMD to fix their driver issues, which they do - because if one vendor constantly put out slow or buggy drivers, PC gamers will rip out the GPU and put in the competitors instead. Unfortunately that can't be done a phone. And not many people when buying a phone think "ooh this has a Tegra GPU - their drivers are much better - so I'll buy this one". This all takes the pressure off the mobile manufacturers to deal with the problem that they should be responsible for fixing.

    As silly as this sounds, imagine if Fortnite or Candy Crush ran inside a webview. I imagine these issues would be dealt with really quickly - because a company with enough bite like Samsung - would go to ARM and tell them to fix it if thousands of players started complaining about their phones performance.

    And this issue is definitely not only webview games. Godot engine has been mentioned in this thread - for those who are not familiar - Godot compiles to native code - webview is not involved at all. When Godot 3 was released, they had developed a whole new renderer based on OpenGL ES 3 (which WebGL 2 is also based on), but when people started moving their projects to Godot 3, many experienced slow performance and hard crashes on Android. The source of most of these problems: buggy GPU drivers. And what happened? They basically threw the new renderer in the bin and went back to the old OpenGL ES 2 renderer. Source: godotengine.org/article/abandoning-gles3-vulkan-and-gles2

    That's not to bad mouth Godot, it is a good engine, but every engine I have used has issues, some of which are out of their control.

    The good news, if you read the Godot blog, at that time 36% of Android devices didn't support OpenGL ES 3 (Feb 2018). As of today, that number is down to 12%. So things are improving.

    But ultimately I think it is up to Google to pressure the phone and chip manufacturers to fix these issues, and get those fixes out to the users. GPU driver updates via the Play Store is a good sign they are doing this. That's why submitting issues like this to Chromium is good - the pressure will start to flow uphill.

    You are tagging a 2018 article. Currently it is in 3.2 stable and in future it will move to Vulcan based. Still today they are facing many issues related to 3d part but they "have" options of figuring out the issue . But does construct 3 have any options rather than requesting 3rd parties for solving issues?

    That is where native vs wrap comes into play

  • It really upset me today. Initially I thought that it was due to mobile cornering,but now many are raising issues related to performance. I have invested a good amount of hard work on construct 3 and ....

    don't get upset, keep working hard and make the game you want to make. Chances are your game will run just fine.

    I'm new around here, I have only been subscribed to Construct 3 for a month, I have used many engines over the years, starting around 20 years ago with GameMaker, my point being I'm not a Construct 'fanboy' and I'm honestly trying to tell you about my experiences.

    I touched on this in my last post when I talked about Godot. But let me stress it again to try and comfort you. Every single engine will encounter some hardware, or operating system, or driver bug - something - that will affect performance for a small percentage of your players. Go into any of their forums and search "android performance" and you will find issues.

    Sometimes it's an issue we the game developer can fix, sometimes it's an issue the engine developer can fix, and sometimes there's nothing we can do about it but report it to the third party (like a GPU manufacturer) and hope they fix it. This even happens to the large companies making AAA games, but they have more 'political' power to get these third party issues fixed more quickly.

    Let me give another example. GameMaker uses an old version of OpenGL so probably there are less driver bugs. However it uses a fixed time step, i.e. it doesn't use delta time. So many people will make their game to run at a fixed 60FPS. They publish the game, and it all seems ok, but then a user comes along with an Android phone that runs at 45Hz or 50Hz refresh rate. Suddenly the game runs in slow motion, frame timing is messed up, frames are skipped, to put it simply, performance turns ugly. The solution, rewrite EVERYTHING to use delta time, including much of GameMaker's inbuilt functionality. Again, this isn't to insult GameMaker, it's one of my favorite engines, it's just to illustrate they all have issues in certain circumstances.

    So take a breath, finish your game, and always include testing on real devices while developing (this also applies to any engine).

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • You are tagging a 2018 article. Currently it is in 3.2 stable and in future it will move to Vulcan based. Still today they are facing many issues related to 3d part but they "have" options of figuring out the issue . But does construct 3 have any options rather than requesting 3rd parties for solving issues? That is where native vs wrap comes into play

    It is a 2018 article but it is still relevant. 3.2 stable is the version of the engine, not the version of OpenGL ES, which is GLES2 after dropping GLES3 because of the driver situation. There's not more Godot can do about a buggy GPU driver than we can - report it to the appropriate third party.

  • > Ribis would you mind testing his APK on your Samsung Galaxy Note 10? That has a Mali G-series GPU too...

    I just tested it. CPU usage between 17/24.

    The game runs at 60fps, however every time you start a new game there is a significant drop for like a second.

    There is a while loop at the start to randomise positions until there is no overlap. But the curtains shouldn’t open until that has completed, and that group is the deactivated. Maybe the curtains are opening before that while loop has completed with placement of targets?

  • > You are tagging a 2018 article. Currently it is in 3.2 stable and in future it will move to Vulcan based. Still today they are facing many issues related to 3d part but they "have" options of figuring out the issue . But does construct 3 have any options rather than requesting 3rd parties for solving issues? That is where native vs wrap comes into play

    It is a 2018 article but it is still relevant. 3.2 stable is the version of the engine, not the version of OpenGL ES, which is GLES2 after dropping GLES3 because of the driver situation. There's not more Godot can do about a buggy GPU driver than we can - report it to the appropriate third party.

    Absolutely correct.

  • I guess you make your choice, great engine, rapid development but likely alienating users due to WebView...or go native. I will likely publish this via Construct based on feedback so far....but I do want to go through the experience of creating the same game in Godot. I like the scene model Godot uses...just a blow to finally build your first APK on your first project and find out you are unlucky. I would pay twice the monthly fee for Construct if it gave a native export option. In a way I am glad I didn't test on APK until the end, as I may have never finished it.

  • indy2005 if your published game doesn't work on certain devices, better to just list and report it (in the description under requirements) before people download/buy your game. Be up front and say what you do and don't support. You can't possibly support every single phone out there.

  • But it’s every device on the webview blacklist, which mine Google has confirmed is not.

  • indy2005

    There might be a way for you troubleshoot this while you are waiting for the Chromium team. They are talking about exposing a developer option in WebView which will tell you if it's actually using WebGL. But there might be another way to test this:

    - On the Google Play Store, download an app called WebView Test (developer is SNC Soft).

    - Open the app and press the globe icon in the top right corner. This lets you enter a web address.

    - Type in the address get.webgl.org (no www) and press GO. Once the page is loaded do you see a spinning cube?

    - Press globe icon again and type in the address webglreport.com (no www) and press GO. Once the page is loaded check both tabs for WebGL1 and WebGL2. Are they both green with the message "This browser supports WebGL(1 or 2)"?

    - Click the app icon in the top left corner, click WebView Info, screen grab and post here.

    - You should be able to test your own game inside the Webview Test app. From Construct on your computer, start a Remote Preview. Get that address and enter it in the Webview Test app. Does the game run the same as your APK?

  • Were off...lol. If nothing else, I will learn a few things.

    godotengine.org/qa/82562/attempting-to-prevent-overlap

  • Native APK performance from Godot is great so far, this includes new features I added such as 2d lighting and bloom effects.

  • Looks like there's good activity at Chromium on this issue. Part of the problem is these issues get reported here, Phaser forums etc., but people don't follow up by reporting it to Chromium, sending their APK etc. and walk away blaming webview, Construct, Cordova etc. So I commend indy2005 for following through on this.

    To me this is looking more and more like a GPU driver specific issue, which might be anti-climatic, and Ashley might sigh a told you so.

    I just tested on the apk on my phone, a low-mid end Nokia 3.2, and no performance issues, 60fps with 25% CPU utilization, GPU metrics not available on my phone. Together with Cascade Games testing that tells us there is no performance issue on the following GPUs:

    - Mali-T830

    - Adreno 505

    - Adreno 504

    But there is a problem with Mali-G71 MP2 (the GPU in the Doogee N20). Mali uses a different renderer (driver) for T series and G series. So the problem is probably specific to Mali G series, if not only G71 MP2 itself. G71 MP2 was released in June 2016, some analytics from Q1 2019 across 36 countries, shows G71 MP2 is 1.51% of the market, and I suspect it would be less again if you were looking at the 'gamer' market. The issue might even be further limited to a specific driver version.

    So if people want to help get to the bottom of this, let's crowdsource it, download and test the APK from the Chromium issue:

    https://bugs.chromium.org/p/chromium/issues/detail?id=1127307

    Report back here with your phone model, GPU model, and if you see the same performance issue or not. Then we can compile that information and add it to the Chromium ticket. I would especially be interested for people to test on phones with Mali G-series GPUs, including more common phones like Samsung Galaxy S8 and S9, Huawei P10, P20, Honour 10, which are all G-series but a different GPU. And people to test on phones with the exact same GPU (G71 MP2) which include:

    Blackview P10000 Pro

    Cubot King Kong 3

    Doogee BL9000

    Gigaset GS290

    Gigaset GX290

    Oukitel K10

    Oukitel U23

    Oukitel WP1

    Poptel P60

    Samsung Galaxy A10

    Samsung Galaxy A20e

    Samsung Galaxy A30s

    Samsung Galaxy A40

    Samsung Galaxy A7 2018

    Samsung Galaxy A8 2018

    Samsung Galaxy M20

    Samsung Galaxy Tab A 10.1 2019

    Samsung Galaxy XCover 4s

    Ulefone Armor 3T

    Ulefone Armor 5

    Ulefone Power 3

    Ulefone Power 5

    Umidigi One Max

    Umidigi Z2

    Alcatel 3X 2019

    Alcatel 7

    Blackview BV9500 Pro

    Blackview Max 1

    Blackview P10000 Pro

    BQ RU BQ 6424L Magic O

    Cubot King Kong 3

    Cubot P30

    Cubot Power

    Cubot X19

    Doogee BL12000 Pro

    Doogee BL9000

    Doogee N100

    Doogee N20

    Doogee S50

    Doogee S70

    Doogee S80

    Elephone A4 Pro

    Elephone PX

    Elephone U

    Gigaset GS290

    Gigaset GX290

    Oppo A1

    Oppo A73

    Oppo A83

    Oppo F5

    Oppo F5 Youth

    Oukitel C17 Pro

    Oukitel K10

    Oukitel K6

    Oukitel U23

    Oukitel WP1

    Poptel P10

    Poptel P60

    Samsung Galaxy A10

    Samsung Galaxy A10e

    Samsung Galaxy A20e

    Samsung Galaxy A30

    Samsung Galaxy A30s

    Samsung Galaxy A40

    Samsung Galaxy A7 2018

    Samsung Galaxy A8 2018

    Samsung Galaxy A8 Plus 2018

    Samsung Galaxy J7 Duo 2018

    Samsung Galaxy M10s

    Samsung Galaxy M20

    Samsung Galaxy M30

    Samsung Galaxy Tab A 10.1 (2019)

    Samsung Galaxy Tab A 8.4 (2020)

    Samsung Galaxy Tab A Plus 8

    Samsung Galaxy XCover 4s

    Ulefone Armor 3

    Ulefone Armor 3T

    Ulefone Armor 5

    Ulefone Armor X5

    Ulefone Power 3

    Ulefone Power 3S

    Ulefone Power 5

    Ulefone X

    UMI Z2

    Umidigi A5 Pro

    Umidigi A7 Pro

    Umidigi One Max

    Umidigi One Pro

    Umidigi Z2

    Umidigi Z2 Special Edition

    Vernee V2 Pro

    Vernee X

    Vernee X1

    Hello there, I bring up this topic again.

    I have a user that tested my game with the Adreno 618. The performance are pretty bad, meaning that the fps doesn't go more than 25 fps, even if the CPU is at 20%.

    Another user, using Adreno 405, run the game with a smooth 60fps.

    So there is clearly some problem. My game is in the internal testing phase and I'm not still ready to publish as an open beta. So I'm looking for someone who has the capability to test my game on different android phone to better understand which gpu are affected to bad performance.

    Since is not possible to pm here in the forum, if you are in the discord could you message me at Ribis#7413 ? So I could share with you all information to download the game.

    Thank you!!!

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