[WIP] Android port testing
- psi29a
- Posts: 5362
- Joined: 29 Sep 2011, 10:13
- Location: Belgium
- Gitlab profile: https://gitlab.com/psi29a/
- Contact:
Re: [WIP] Android port testing
How do you type in your character name?
Re: [WIP] Android port testing
I'm also impressed.
It's a bit unstable, it'll sometimes crash on cell transitions (Especially transitioning from interior to exterior) Terrain texture rendering is weird with the GLESv2 renderer. Water rendering is weird with GLESv1. I feel like I'm getting somewhere between 5 and 20fps in exteriors, and at least 30fps in interiors.
Also, it consistently crashes for me if I try and start it with the 'Hide Onscreen Controls' options checked.
Nexus 6P, Android 8.0
It's a bit unstable, it'll sometimes crash on cell transitions (Especially transitioning from interior to exterior) Terrain texture rendering is weird with the GLESv2 renderer. Water rendering is weird with GLESv1. I feel like I'm getting somewhere between 5 and 20fps in exteriors, and at least 30fps in interiors.
Also, it consistently crashes for me if I try and start it with the 'Hide Onscreen Controls' options checked.
Nexus 6P, Android 8.0
Re: [WIP] Android port testing
I did a bit of testing and wrote down some notes:
Build: openmw-2018-01-18.apk
Device: LG G4C running Android 6.0
Settings
The game would crash on start without the --skip-menu and --start options, and also if 'Hide onscreen buttons' was enabled. I did most of the testing with the default settings.
On starting the game
The screen is black with the controls overlay on top. After a couple minutes it shows the loading screen and loads into the game.
Performance
I managed to enable the FPS display by opening the Save menu which brought up the keyboard (Hacker's Keyboard) and then I pressed F3. 1-10 fps in Balmora. 1-5 fps in Ebonheart. 15-30 fps in interiors. -5 fps during rain. Audio seems to work perfectly.
Graphics problems
GLESv1
Some textures flicker in interiors. Water looks wrong.
GLESv2
Some ground textures look extremely blurry in exteriors.
Controls
The pause button doesn't pause the game. The 'back' button on my phone sometimes pauses the game and sometimes exits the app. The paper icon (second from the left) doesn't seem to do anything. Navigating menus with the cursor is difficult.
Build: openmw-2018-01-18.apk
Device: LG G4C running Android 6.0
Settings
The game would crash on start without the --skip-menu and --start options, and also if 'Hide onscreen buttons' was enabled. I did most of the testing with the default settings.
On starting the game
The screen is black with the controls overlay on top. After a couple minutes it shows the loading screen and loads into the game.
Performance
I managed to enable the FPS display by opening the Save menu which brought up the keyboard (Hacker's Keyboard) and then I pressed F3. 1-10 fps in Balmora. 1-5 fps in Ebonheart. 15-30 fps in interiors. -5 fps during rain. Audio seems to work perfectly.
Graphics problems
GLESv1
Some textures flicker in interiors. Water looks wrong.
GLESv2
Some ground textures look extremely blurry in exteriors.
Controls
The pause button doesn't pause the game. The 'back' button on my phone sometimes pauses the game and sometimes exits the app. The paper icon (second from the left) doesn't seem to do anything. Navigating menus with the cursor is difficult.
Re: [WIP] Android port testing
Gave it a try on a Samsung Galaxy S8, Android 7. Runs fairly good at 720p resolution, FPS in Balmora is mostly between 15-30, and virtually never drops below 10. Issues are basically the same as magamo and esc reported - crashes, strange behavior of "back" button, water/terrain rendering glitches with GLESv1/v2 respectively. Control sticks are very inert (maybe just seem so because of low fps?) and really unusable in menu. Maybe a touchpad-style control instead of analog stick emulation would work better for menus?
Anyways, that's a great start!
Anyways, that's a great start!
- AnyOldName3
- Posts: 2679
- Joined: 26 Nov 2015, 03:25
Re: [WIP] Android port testing
I bricked my phone in the process of upgrading to Android 5 and then downgrading to 4.4.2 when I realised that the upgrade had gone horribly wrong. I'm counting the lack of support for ancient Android versions as a potentially device-killing bug... even if it's entirely LG's fault for coming up with their own crappy ways of doing things that are prone to breaking.
Re: [WIP] Android port testing
The biggest thing I learn in the Android Development class I took was that phone manufacturers are basically Satan.AnyOldName3 wrote: ↑20 Jan 2018, 00:39 even if it's entirely LG's fault for coming up with their own crappy ways of doing things that are prone to breaking.
- psi29a
- Posts: 5362
- Joined: 29 Sep 2011, 10:13
- Location: Belgium
- Gitlab profile: https://gitlab.com/psi29a/
- Contact:
Re: [WIP] Android port testing
BTW... libgles1 (libglesv1) is being removed as being unsupported in Debian. Ubuntu has picked this up as well.
https://bugs.debian.org/cgi-bin/bugrepo ... bug=857432
https://lists.debian.org/debian-x/2017/02/msg00099.html
This means that we will have no choice but to use the wrapper in the future for Android and armhf/armel builds of OpenMW.
We should eventually try to migrate to GLESv2 or GLESv3, because this is blocking us:
https://bugs.debian.org/cgi-bin/bugrepo ... bug=857432
https://lists.debian.org/debian-x/2017/02/msg00099.html
This means that we will have no choice but to use the wrapper in the future for Android and armhf/armel builds of OpenMW.
We should eventually try to migrate to GLESv2 or GLESv3, because this is blocking us:
Code: Select all
[ 2%] Building CXX object components/CMakeFiles/components.dir/sceneutil/lightmanager.cpp.o
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp: In member function 'void SceneUtil::LightStateAttribute::applyLight(GLenum, const osg::Light*) const':
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:78:34: error: 'GL_AMBIENT' was not declared in this scope
glLightfv( lightNum, GL_AMBIENT, light->getAmbient().ptr() );
^~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:78:34: note: suggested alternative: 'GL_APIENTRY'
glLightfv( lightNum, GL_AMBIENT, light->getAmbient().ptr() );
^~~~~~~~~~
GL_APIENTRY
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:78:13: error: 'glLightfv' was not declared in this scope
glLightfv( lightNum, GL_AMBIENT, light->getAmbient().ptr() );
^~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:78:13: note: suggested alternative: 'mLights'
glLightfv( lightNum, GL_AMBIENT, light->getAmbient().ptr() );
^~~~~~~~~
mLights
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:79:34: error: 'GL_DIFFUSE' was not declared in this scope
glLightfv( lightNum, GL_DIFFUSE, light->getDiffuse().ptr() );
^~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:79:34: note: suggested alternative: 'GL_FALSE'
glLightfv( lightNum, GL_DIFFUSE, light->getDiffuse().ptr() );
^~~~~~~~~~
GL_FALSE
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:80:34: error: 'GL_SPECULAR' was not declared in this scope
glLightfv( lightNum, GL_SPECULAR, light->getSpecular().ptr() );
^~~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:80:34: note: suggested alternative: 'GL_APICALL'
glLightfv( lightNum, GL_SPECULAR, light->getSpecular().ptr() );
^~~~~~~~~~~
GL_APICALL
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:81:34: error: 'GL_POSITION' was not declared in this scope
glLightfv( lightNum, GL_POSITION, light->getPosition().ptr() );
^~~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:81:34: note: suggested alternative: 'GL_POLYGON'
glLightfv( lightNum, GL_POSITION, light->getPosition().ptr() );
^~~~~~~~~~~
GL_POLYGON
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:87:34: error: 'GL_CONSTANT_ATTENUATION' was not declared in this scope
glLightf ( lightNum, GL_CONSTANT_ATTENUATION, light->getConstantAttenuation() );
^~~~~~~~~~~~~~~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:87:34: note: suggested alternative: 'GL_CONSTANT_ALPHA'
glLightf ( lightNum, GL_CONSTANT_ATTENUATION, light->getConstantAttenuation() );
^~~~~~~~~~~~~~~~~~~~~~~
GL_CONSTANT_ALPHA
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:87:13: error: 'glLightf' was not declared in this scope
glLightf ( lightNum, GL_CONSTANT_ATTENUATION, light->getConstantAttenuation() );
^~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:87:13: note: suggested alternative: 'mLights'
glLightf ( lightNum, GL_CONSTANT_ATTENUATION, light->getConstantAttenuation() );
^~~~~~~~
mLights
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:88:34: error: 'GL_LINEAR_ATTENUATION' was not declared in this scope
glLightf ( lightNum, GL_LINEAR_ATTENUATION, light->getLinearAttenuation() );
^~~~~~~~~~~~~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:88:34: note: suggested alternative: 'GL_BLEND_EQUATION'
glLightf ( lightNum, GL_LINEAR_ATTENUATION, light->getLinearAttenuation() );
^~~~~~~~~~~~~~~~~~~~~
GL_BLEND_EQUATION
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:89:34: error: 'GL_QUADRATIC_ATTENUATION' was not declared in this scope
glLightf ( lightNum, GL_QUADRATIC_ATTENUATION, light->getQuadraticAttenuation() );
^~~~~~~~~~~~~~~~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:89:34: note: suggested alternative: 'GL_INVALID_OPERATION'
glLightf ( lightNum, GL_QUADRATIC_ATTENUATION, light->getQuadraticAttenuation() );
^~~~~~~~~~~~~~~~~~~~~~~~
GL_INVALID_OPERATION
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp: In member function 'virtual void SceneUtil::DisableLight::apply(osg::State&) const':
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:326:34: error: 'GL_AMBIENT' was not declared in this scope
glLightfv( lightNum, GL_AMBIENT, mNull.ptr() );
^~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:326:34: note: suggested alternative: 'GL_APIENTRY'
glLightfv( lightNum, GL_AMBIENT, mNull.ptr() );
^~~~~~~~~~
GL_APIENTRY
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:326:13: error: 'glLightfv' was not declared in this scope
glLightfv( lightNum, GL_AMBIENT, mNull.ptr() );
^~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:327:34: error: 'GL_DIFFUSE' was not declared in this scope
glLightfv( lightNum, GL_DIFFUSE, mNull.ptr() );
^~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:327:34: note: suggested alternative: 'GL_FALSE'
glLightfv( lightNum, GL_DIFFUSE, mNull.ptr() );
^~~~~~~~~~
GL_FALSE
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:328:34: error: 'GL_SPECULAR' was not declared in this scope
glLightfv( lightNum, GL_SPECULAR, mNull.ptr() );
^~~~~~~~~~~
/opt/OpenMW/openmw/components/sceneutil/lightmanager.cpp:328:34: note: suggested alternative: 'GL_APICALL'
glLightfv( lightNum, GL_SPECULAR, mNull.ptr() );
^~~~~~~~~~~
GL_APICALL
Re: [WIP] Android port testing
Where I should copy this text?Now copy contents of the steam version into it (I've only tested that one - and right now expansions are required or it will crash):
Ah this is files that I should copy, nevermind.
-
- Posts: 9
- Joined: 22 May 2014, 16:21
Re: [WIP] Android port testing
Samsung Galaxy S4
Android 5.0.1
Did everything I can, it crashes on start.
Android 5.0.1
Did everything I can, it crashes on start.