Android Release v 2.2.2
This minor release fixes a large number of critical bugs. There are no new features in this release.
The application is now approaching a stable state thanks to the amount of issues fixed here.
At the same time, fixing these bugs once again clearly demonstrates how unsuitable custom engines are for mobile platforms.
To make them work more or less properly, I always have to go through hell — something that simply never happens with Unity.
The same OpenMW developers may keep attacking Unity and praising SDL with “high quality standards”, but in reality they have never worked seriously with custom engines on mobile devices and have no idea what this kind of development hell actually looks like.
I also decided to port FTEQW before Widelands, because it contains Hexen II.
Yes — once again, another id Software–based engine.
Changelogs
- Fixed a critical bug in NG-GL4ES. The fixed-function OpenGL emulation pipeline never actually worked with GLES 3.2. Shaders were always compiled as GLES 2.0 instead. Because of this, games like Arx Fatalis and the Doom RPG series always ran on GLES 2.0. This issue is now fixed, and GLES 3.2 is properly used via this PR: BZLZHH/NG-GL4ES#9
- Fixed incorrect screen resolution calculations, which affected almost all custom engines. Because of this bug, changing screen resolution never worked correctly in nearly all engines ported to this app, except Perfect Dark. This issue has now been fully resolved.
- Fixed application wrong launch logic when starting from the launcher. If GameActivity was already running, the app now correctly launches into it instead of restarting MainActivity. Previously, this behavior caused crashes due to another SDL + Android lifecycle issue.
- Fixed broken touch press events in Doom 64 engines. The bug was caused by relying on SDL3 events after rewriting focus detection logic. The events were simply never delivered. This is yet another example of how broken and regression-filled SDL3 is on Android. The issue is fixed, but this was the final reason I will never port another SDL3-based project. Only SDL2 based projects will be ported
- Implemented another low-level workaround for SDL2 and SDL3 to bypass completely broken touchscreen input for all engines. This serves as a fallback in case input is still partially broken. I do not have time to fight this garbage endlessly.
- Fixed a ConcurrentModificationException in MainActivity, which caused random crashes.
- Fixed incorrect on-screen controls rendering, which appeared in some cases.