Godot 3 vs Godot 4 - mobile games

Godot Version

godot 4.2, godot 3.5

Question

Hey guys,
can someone tell me who already had experience with mobile games in both godot versions which version is better to use for now?
What is the biggest problem making mobile games in godot 4? Is it possible to fix those problems in the future?

I can’t find information on how many mobile devices support gles3 or/and vulkan? Is it more than 90% devices or lower? Does it make sense to make games using only gles3?

And how is tuff to migrate game from godot 3+ to godot 4+ ?

I am not (yet) a game developer, but a few weeks ago I uploaded an Android app to the PlayStore (Godot 4.1, Vulkan, for internal tests)

According to the PlayStore, there are up to 22978 device models. Of these, 6641 are supported. (28.9 %)

Vulkan is only available on Android 7+ smartphones (year 2016 / 2017) and 300$+ (i think)

good luck with your game :slight_smile:
share it when you release game :smiley:

I am aware of that, but these 6641 devices don’t have full support of vulkan :confused:

I am testing also game using vulkan mobile, and game is crashing because my phone doesn’t have good drivers :confused: phone is Xiaomi mi a2 android 10.
luckily, gles3 works well.

I didn’t upload any game, this was just an official demo app: in-app payments

Google Play says that Xiaomi mi a2 is supported, now I’m not sure if PlayStore can check the Vulkan version. I only see OpenGL version 3.2

Lite - Version

3DMark Sling Shot Extreme (Vulkan)

Score = 512

I found your issue :slight_smile:

That actually looks ok

2023-07-21 20:28:26.906 4431-4482 godot org.godotengine.game I Vulkan API 1.1.87 - Forward Mobile - Using Vulkan Device #0: Qualcomm - Adreno (TM) 512

I created it :smiley:

I have just upgraded a 2D mobile game from Godot 3 to 4 & it wasn’t a walk in the park. Most conversion was done automatically via the conversion/upgrade tool, but parts of the game had to be recoded/reconfigured. Especially, in the areas of file access and GPUParticles.

There is also the issue of Vulkan drivers not being available on some older mobile devices, which forces use of the compatibility renderer.

https://www.reddit.com/r/godot/comments/17idz3y/real_android_opengl_status/

For 2D I don’t know, but for a bit demanding Android 3D, Godot 3.5 stills performs better. Moreover if GLES2 needed.

As posted above, “officially support OpenGL3 or Vulkan” doesn’t mean that it really supports. So statistics must be take with a lot of care.

That I am afraid of :frowning:
My game will be 2D, so should work ok in compatibility mode :slight_smile:

My question is if the problem is the buggy GLES3 device implementation or lack of maturity in the compatibility Godot 4 GLES3 rendering modality.

I just created an empty Godot 4.2 project with an empty scene in Compatibility mod (GLES 3) and uploaded it on my Test Device (for oldest phone hardware).

Results?

After the Godot screenshot the game freeze.

Doing the same on Godot 3.5.3 with GLES 2.0 and ALL WORKS FINE!!! :frowning:
I’m really frustrated!.

2 Likes

yeah haha that’s the problem haha
I am seriously thinking of using defold instead of godot 4 for mobile games :confused:
I don’t want to use godot 3, because it lacks so many features, like gdscript 2.0.

The problem is that Vulkan support on Android 7-8 is pretty broken, and essentially unusable (not just for Godot). You pretty much need Android 9 or later to have a chance of having good Vulkan support (and even then, it will depend on how recent your device’s SoC is).

If you look at other Android apps using Vulkan such as emulators, they strongly recommend a high-end device with a recent Android version for this reason. These tend to have better drivers across the board due to the manufacturer putting more effort into updates.

This is why it’s recommended to use the Compatibility rendering method when targeting mobile until the Android situation improves. The iOS side doesn’t have these issues, except on the iPhone 7 and first-gen iPad Pro which don’t support some of the hardware features currently required by the Vulkan renderer.

1 Like

so gles3 is not broken on old devices? Is it a problem in godot compatibility rendering method?

GLES 3.0 should work well enough on most Android devices by now. However, Godot 3.x’s GLES3 renderer isn’t a good point of comparison with Godot 4.x’s Compatibility rendering method.

Godot 3.x GLES3 was a high-end oriented renderer that happened to run on mobile as well (albeit with poor performance, especially on devices of the time). In Godot 4.x, this role has been filled by the Forward+ and Mobile rendering methods, which use Vulkan (or Direct3D 12/Metal in the future).

Godot 4.x’s Compatibility rendering method is designed for low-end devices such as integrated graphics and mobile. It doesn’t have any features that only work on high-end hardware, and it takes rendering decisions that prioritize performance over quality. In that sense, it’s similar to Godot 3.x’s GLES2 renderer, except it uses GLES 3.0 as a baseline to improve quality and flexibility a bit (e.g. shadow maps are properly filtered out of the box).

can you explain what is happening here:

This may be a bug, which should be reported on GitHub - godotengine/godot: Godot Engine – Multi-platform 2D and 3D game engine with full device information and a reproduction project included. The Godot 4.x Compatibility rendering method hasn’t been around for quite as long as Godot 3.x’s GLES2 renderer, so it’s expected to have more bugs.

PS: Remember that if you create a project and switch its rendering method afterwards using the dropdown in the top-right corner of the editor, its mobile override won’t change automatically. You have to change it manually in the Project Settings.

ok :smiley:

@Joined72 if you do like this ignore this tag:

I have this problem with Godot 4.2.1: Run time error on Android

Please don’t post unrelated support questions here, as this is purely a discussion topic.

1 Like