[WIP] Android port testing

For new and upcoming OpenMW branches and ports; move fast and break things!
User avatar
psi29a
Posts: 5355
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: [WIP] Android port testing

Post by psi29a »

How do you type in your character name?
magamo
Posts: 109
Joined: 28 May 2016, 17:28

Re: [WIP] Android port testing

Post by magamo »

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
Sartur
Posts: 9
Joined: 19 Aug 2012, 12:51

Re: [WIP] Android port testing

Post by Sartur »

psi29a wrote: 19 Jan 2018, 14:41 How do you type in your character name?
The standard keyboard pops up and lets up input the name.
(I'm not too familiar with Android thus it's very possible that I am missing something.)
esc
Posts: 1
Joined: 19 Jan 2018, 17:30

Re: [WIP] Android port testing

Post by esc »

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.
densm27
Posts: 24
Joined: 02 Jun 2014, 18:34

Re: [WIP] Android port testing

Post by densm27 »

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!
User avatar
AnyOldName3
Posts: 2666
Joined: 26 Nov 2015, 03:25

Re: [WIP] Android port testing

Post by AnyOldName3 »

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.
User avatar
raevol
Posts: 3093
Joined: 07 Aug 2011, 01:12
Location: Caldera

Re: [WIP] Android port testing

Post by raevol »

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.
The biggest thing I learn in the Android Development class I took was that phone manufacturers are basically Satan.
User avatar
psi29a
Posts: 5355
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: [WIP] Android port testing

Post by psi29a »

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:

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
Biboran
Posts: 84
Joined: 03 Feb 2016, 12:50

Re: [WIP] Android port testing

Post by Biboran »

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):
Where I should copy this text?

Ah this is files that I should copy, nevermind.
Bulbulator
Posts: 9
Joined: 22 May 2014, 16:21

Re: [WIP] Android port testing

Post by Bulbulator »

Samsung Galaxy S4
Android 5.0.1

Did everything I can, it crashes on start.
Post Reply