Now I'm worried: Performance on Android

I watched this video: The realities of publishing mobile games with Godot Engine - Devlog 9
I’m learning Godot, specifically to create a mobile game. The video shows two concerns about running a Godot 4 game on Android: Abysmal performance and crashes.
Is this the experiance for you? Should I switch to another game engine?

What phone and what game and what developer?

I didn’t watch the video. But here are my initial thoughts:

  1. There are lots of things you can do to tweak performance.
  2. Crashes are typically caused by poor coding practices and not the engine/language used to make a game.

Why didn’t I watch the video? Well, you didn’t give us enough information to make it necessary. And if you had, it wouldn’t be necessary to watch the video. So here’s a few questions for you:

  1. Was the game in the video 2D or 3D?
  2. Are you planning on doing a 2D or 3D game?
  3. Were the textures and models optimized for a 2D/3D game?
  4. Were they using a custom version of Godot to publish their game? In other words, did they take out the engine they were not using and make other optimizations to reduce the size of the game?
  5. What physics engine were they using? Default, Jolt, Rapier, Quark?
  6. What language were they using? GDScript, C#,or a GDExtension (C++, Rust, Go, Python, Lua, etc.)?
  7. Have you spent any time using the Godot engine yourself yet to test out the performance of your ideas?
  8. Are you planning on making all the same choices they did?

There’s a lot that goes into making a game. And if you’re making a mobile game, you have to understand that the hardware players have will be varied. You can either try to support anyone, or target high-end hardware.

No, it hasn’t been - but I’ve only had people testing games I haven’t published a mobile game yet.

Which game engine were you thinking of switching to? Unity or Unreal? How come you chose Godot in the first place?

2 Likes

The author of the video have a low-poly 3d game which he initially developed under Godot 3.x, which runs ok, but when he ported it to Godot 4.x (due to waining support of plugins for 3.x,) the game performed poorly on his Pixel 8 pro. He tried both the native physics engine, and Jolt. From the comments I see he tried both the Mobile and the Compatibility modes. None of these changed the performance issues.
I actually want to develop a simple 2D puzzle game, which Godot may be a little of an overkill for. I considered using Cocos2D-X, but it seem to be dated. I wanted an open-source engine that is actively being developped, and has a big community around it, so I chose Godot.

2 Likes

You are not going to have the same issues with 2D that he is having with 3D.

2 Likes

As far as I understood from the video the performance problems come from Collision checks. I am working on a 2D game with a lot of collision checks and performance takes a dip at a very high count. This of course took a bit of optimizing and fiddling, but all in all Godot is capable of handling a lot in 2D so far.

Also “porting” can mean a lot of things. Not to downplay the video author’s experience, but they kept talking about Jolt and Godot Default physics as means of “trying different solutions” and not digging deeper, showing their code or anything. So this is all very dramatic and diffuse.

3 Likes

I confirm that my 3D scene that ran at max FPS (capped to 165) on my PC (Ryzen 9 5900X + RTX 3060 Ti), only ran at around 15-20 FPS on my Android phone (8 core ARM Cortex A55/A78 + Mali G610 MC6).

However, it’s also true that I didn’t do any optimization at all (no manual LODs, nor occlusion culling), many high end settings were enabled (MSAA and others), and the models are very high poly for mobile. It also used Terrain3D.

This is what the scene looked like when I tested it (screenshot is on PC, but I tested on both PC & mobile):

This was in August. Since then I have not tested on mobile again, because I’ve been coding gameplay systems, but when I start working on optimizations I will try Android again and hopefully report back my results and knowledge to this thread.

I must say this happened to me on my first game. I did some early testing on mobile and everything was good so I got on and built it and it was (to me at least) beautiful - on my PC. Then I put it on my phone after months of building and guess what? It was a nightmare! It was like 10 FPS. I was heartbroken. I had to take a week or two off just to recover from the shock.

But it was not Godot’s fault. It was mine. I learned a hard-earned lesson and have never forgotten it. You need to test it on mobile constantly, and all the way through development. At every mile marker, you need to export it and test it again, and then again. Doing the “build it on pc and then optimise for mobile when its done” is a recipe for disaster.

You will get it working on mobile again, but like me, you will probably find you have massive re-factoring, dropping entire approaches for some things, doing complete rewrites for others. It was a lesson that nearly broke me at the time. I won’t ever make that mistake again.

Oh and good luck, I really want to jump in that car and take it for a spin. I look forward to playing it when you do get it working on mobile!

3 Likes