Android build on older device not rendering game objects (SOLVED)

iOS is working flawlessly so as is Android with newer devices like OnePlus 6 and even old ZTE Blade V6 with Android 5.0.2 but for some reason the problem is (at least )with Zenpad 10 with Android 5.0.2. All of these devices works well with the build from November but Zenpad has this issue with now built bundle even with same codebase as on November, which makes this pretty difficult to figure out :smiley:

Only differences between these ZTE and Zenpad devices are that Zenpad is of course bigger, but also less performant and has Intel instead of ARM processor. And maybe a difference with openGL support, but earlier it was working.

1 Like

Btw, when you say you can’t get the logcat, what do you mean?
You’ve already posted some of the logcat in the first post?

Perhaps there are something else relevant prior to those lines?

Run with: $ adb logcat
and it should print it out to your console.

Has it updated during this time? E.g. with new drivers?

I have updated the BETA build with a small log improvement that lets me know what function and line number is failing the glGeterror() check.

Please try it out and report that log to me.

2 Likes

Thanks, I have to try it out. I meant that the game crashes immediately if I made a debuggable build so that I couldn’t get as far to see any missing game objects and to see if there is a more detailed logs about that issue.

The Zenpad device has not been updated and if I now install the old package, it is working flawlessly and when I install a new package from the old codes but with the latest editor, it is having the issue and missing the game objects.

1 Like

I tested our shaders and sprite materials on the empty project and it is still working, so these are not causing problems with the main project.

I also tested the 166 BETA client but I cannot get a debug build done because Firebase seems to miss something with this new editor. Error seems similar as in this thread Errors in building a project for Android

I cannot send a screenshot maybe because the forum’s certificate is expired but I copied the Build Errors log here:
/firebase/src/firebase.cpp
Line 3: ‘DLIB_LOG_DOMAIN’ macro redefined [-Wmacro-redefined]
#define DLIB_LOG_DOMAIN LIB_NAME
^
Line 3: previous definition is here
#define DLIB_LOG_DOMAIN “FIREBASE”
^
Line 36: extra tokens at end of #else directive [-Wextra-tokens]
#else if defined(DM_PLATFORM_IOS)
^
//
Line 165: format string is not a string literal (potentially insecure) [-Wformat-security]
luaL_error(L, msg);
^~~
Line 165: treat the string as an argument to avoid this
luaL_error(L, msg);
^
“%s”,
Line 185: format string is not a string literal (potentially insecure) [-Wformat-security]
luaL_error(L, msg);
^~~
Line 185: treat the string as an argument to avoid this
luaL_error(L, msg);
^
“%s”,
Unknown source:
warning: [options] bootstrap class path not set in conjunction with -source 6
warning: [options] source value 6 is obsolete and will be removed in a future release
warning: [options] target value 1.6 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.

And I am using the latest 1.3.2 version of Firebase as mentioned on the first post.

Your log snippet doesn’t seem to contain any errors.
Please post the log.txt you’ll find in your project/build folder so I can take a look at the build error.

Here, thanks!

armv7_log.txt (14.0 KB)
arm64_log.txt (13.6 KB)

They doesn’t seem to have a specific error either, but actually now when I tested again it was successful! So now I can test with beta build and Zenpad to get the logs.

Yes, it was most likely due to an expired certificate which we fixed today.

1 Like

Here are now the logs from debuggable build with the latest Beta editor

Full unfiltered log, which contains also most likely so much unnecessary trash
full_logs.txt (10.8 KB)

Defold filtered logs (adb logcat -s defold)
defold_logs.txt (1.4 KB)

As a quick look, I didn’t notice any special compared to the original log from older editor posted earlier. It is weird that debuggable build crashes like this on startup and a release build does not crash. I have enabled debuggable from Android build dialog and added android:debuggable="{{android.debuggable}}" to the manifest.

Thanks for your help!

1 Like

If you can try a specially built editor/bob, I’ve added some more debug info for those types of errors, and also your problem in particular:

OSX
Windows
Linux

2 Likes

Thanks, I tested with that special editor and here are the logs.

Full logs from Zenpad:
full_logs2.txt (12.8 KB)

Defold logs from Zenpad:
defold_logs2.txt (1.4 KB)

Defold logs from other Android device (ZTE Blade v6) where everything works:
working_device_logs.txt (1.0 KB)

When I run game on the editor I can see a lots of prints like this
MAWE: DrawElements:
MAWE: prim_type: 4
MAWE: count: 36 00000024
MAWE: type: 5125
MAWE: first: 0 00000000
MAWE: DrawElements:
MAWE: prim_type: 4
MAWE: count: 36 00000024
MAWE: type: 5125
MAWE: first: 0 00000000
MAWE: DrawElements:
MAWE: prim_type: 4
MAWE: count: 36 00000024
MAWE: type: 5125
MAWE: first: 0 00000000
MAWE: DrawElements:
MAWE: prim_type: 4
MAWE: count: 36 00000024
MAWE: type: 5125
MAWE: first: 0 00000000
MAWE: DrawElements:
MAWE: prim_type: 4
MAWE: count: 36 00000024
MAWE: type: 5125
MAWE: first: 0 00000000

but on the device logs I cannot see these.

1 Like

Ah, that’s probably because I used the wrong print function on android :frowning: (each platform always does something slightly weird)

I’ll make new editor :slight_smile:

Alright, another editor which I hope will print out the erroneous values for us:

OSX

2 Likes

Thanks, now I see the loggings with logcat. Here are Defold logs from crash and from working device. Those full logs with all the device loggings were most likely useless anyway.

Crash
defold_logs3.txt (1.8 KB)

Working device
working_device_logs2.txt (3.7 KB)

1 Like

Alright, thank you so much for this info!

So, this is the input to the erring glDrawElements:

W/defold  (24492): WARNING:GRAPHICS: MAWE: DrawElements:
W/defold  (24492): WARNING:GRAPHICS: MAWE: prim_type: 4
W/defold  (24492): WARNING:GRAPHICS: MAWE: count: 36  00000024
W/defold  (24492): WARNING:GRAPHICS: MAWE: type: 5125
W/defold  (24492): WARNING:GRAPHICS: MAWE: first: 0  00000000
E/defold  (24492): ERROR:GRAPHICS: DrawElements(1311): gl error 1280: 'GL_INVALID_ENUM' from glDrawElements

The error it gives is GL_INVALID_ENUM, and looking at the input enums prim_type, a.k.a mode in the documentation, and type:

  • Prim type 4 corresponds to GL_TRIANGLES

  • And type 5125 (or 1405 in hexadecimal), is GL_UNSIGNED_INT.
    Although, in the gl.h I looked at in our current Android SDK, that enum isn’t defined(!)

The GL_UNSIGNED_INT means that there are indices higher than 65535, which is quite a lot.
By the looks of your game, I guess you’re not using 3d models, but only sprites?

Have you by any chance increased the game project setting sprite.max_count to something high?

2 Likes

Thank you very much! These are excellent news indeed!

When I decreased the sprite max count from 16384 (which seemed to be the maximum in editor when we added this value) to 4000 everything started working on Zenpad also. We maxed those values when the first default count of some resource was exceeded and they didn’t seem to cause any harm being so high :smiley:

We are not using any 3d models but only sprites in the game.

2 Likes

Good to hear you found a solution!

Yep, you guys rock!

I still suggest that this would somehow be fixes on the engine’s side as well to prevent weird problems with some devices since this setting was working before. When I got time I will test what happens for example with 16383 sprite max count if it is somehow error by one or something like that that causes the cast to GL_UNSIGNED_INT.

2 Likes

In cases like this we’re are the mercy of both the mobile vendor graphics driver and the Android SDK, when they change behavior.
I’ll try to think of a good way to deal with this, not sure how yet though.

2 Likes