Page 2 of 51

Re: [WIP] Android port testing

Posted: 19 Jan 2018, 14:41
by psi29a
How do you type in your character name?

Re: [WIP] Android port testing

Posted: 19 Jan 2018, 14:45
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

Re: [WIP] Android port testing

Posted: 19 Jan 2018, 14:56
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.)

Re: [WIP] Android port testing

Posted: 19 Jan 2018, 17:33
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.

Re: [WIP] Android port testing

Posted: 19 Jan 2018, 20:32
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!

Re: [WIP] Android port testing

Posted: 20 Jan 2018, 00:39
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.

Re: [WIP] Android port testing

Posted: 20 Jan 2018, 05:24
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.

Re: [WIP] Android port testing

Posted: 20 Jan 2018, 14:53
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

Re: [WIP] Android port testing

Posted: 20 Jan 2018, 16:01
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.

Re: [WIP] Android port testing

Posted: 20 Jan 2018, 17:31
by Bulbulator
Samsung Galaxy S4
Android 5.0.1

Did everything I can, it crashes on start.