mkrupczak3 / Freedoom-for-Android

Freedoom with GZDoom for Android
GNU General Public License v2.0
88 stars 16 forks source link

Code reformatting, Java 1.8, and README #35

Closed TacoTheDank closed 5 years ago

TacoTheDank commented 5 years ago
mkrupczak3 commented 5 years ago

Removed mention of a "sticky" external library in the readme that's been a bit of a point of contention (may actually be able to be removed soon) , and removed rebasing GZDoom engine as a goal for now. Maybe might want to table the OpenGL ES too.

I'm not entirely sure, but I think I've read that the newer GZDoom engine versions (3.x +) use OpenGL calls that may not be supported on older devices. As the dolphin blog has documented, mobile openGL drivers can be TERRIBLE.

I think Beloko does some custom GZDoom patches to tweak the rendering pipeline to get around this, but I have nowhere near his technical capability. For now, I think the current GZDoom engine should be maintained until beta testing with the new engine can be done on a wide range of devices to make sure there's no issues.

Rebasing the GZDoom engine should definitely be done and has been a critique among some users, but I think there is also a large segment of non-technical users that the change won't have a large impact on and international users that are running on older arm chips and older versions of android that won't have as good OpenGL driver support for newer engine versions.

People with newer devices that want to install mods would probably like a newer engine version. I think this change could be done in a branch of the main development, but I think most users would get a lot more impact from the other changes first.

mkrupczak3 commented 5 years ago

LGTM, Great job on the readme and the fancy Java 1.8 stuff

TacoTheDank commented 5 years ago

Freedoom only supports devices on Lollipop (SDK 21) or above, so I don't think it would be too big an issue to update the OpenGL,

...I think I've read that the newer GZDoom engine versions (3.x +) use OpenGL calls that may not be supported on older devices.

How old are these devices we're talking about, exactly? Old as in Jelly Bean, or old in retrospect like Marshmallow (which is 3 1/2 yrs old)? Because it could just be referring to older devices that Freedoom doesn't even support anyway.

For now, I think the current GZDoom engine should be maintained until beta testing with the new engine can be done on a wide range of devices to make sure there's no issues.

Sounds good to me.

Rebasing the GZDoom engine should definitely be done and has been a critique among some users, but I think there is also a large segment of non-technical users that the change won't have a large impact on...

Very true.

Also, the version we are currently using is 2.0.02/2.0.03. I think something that's more within our reach is updating to the latest version of 2.x.x before we finally go to 3/4.x.x. We could also not, if it's unnecessary.

It sucks that nvllsvm abandoned the project lol, he could probably have done this pretty easily, or at least better than what we're attempting to do.

mkrupczak3 commented 5 years ago

So I know that this is a bit extreme but...

When I pushed out the update a few days ago for Freedoom with John Romero's Sigil.wad (8mb, which the app doubles to 16mb on disk due to a bug/laziness) I got this pretty eye opening one star review:

[20mb ou 100mb?]

This phone was released in mid 2016. It runs android 5.1, has a 480p screen, and in his case 4GB of total storage (probably less than 2GB usable) and 512MB of ram. It only supports up to openGLES version 2.0. The top tier model with 8GB of storage costed 70EUR upon release, so I can't imagine this device costing more than a few USD. The review was in Hatian Creole and this may have been this person's main computing device. When the app went up in size, they probably uninstalled it.

I've added many foreign languages to Freedoom to improve international adoption, and have tried to get native speakers to add translations as possible. In the international mass-market, these kind of low-grade devices are common. As you can imagine, the device manufactures for these kind of devices aren't too concerned with the nuances of new versions of OpenGL drivers, and even if they are technically listed as compatible they are often riddled with bugs and many times won't even launch apps which use more advanced OpenGL calls. My device target is maybe one tier of quality higher than this type of phone, but that's about it. Even devices released in 2017, 2018, and 2019 targeted for this kind of market could have the same kind of bugs.

As reported in the dolphin web bloghttps://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/ though, even users in first-world countries with new and updated devices from first-tier manufacturers may run into driver issues for openGL calls used by games. With all this, you can see why I'm a bit antsy about engine upgrades for now. Ultimately, I want something that "just works" to play wads on as many phones as possible.

Beloko has shown that an engine upgrade can be done, but there may be some secret sauce there that I won't be able to unravel in a reasonable way.

On 6/7/2019 11:34 AM, TacoTheDank wrote:

Freedoom only supports devices on Lollipop (SDK 21) or above, so I don't think it would be too big an issue to update the OpenGL,

I think I've read that the newer GZDoom engine versions (3.x +) use OpenGL calls that may not be supported on older devices.

How old are these devices we're talking about, exactly? Old as in Jelly Bean, or old in retrospect like Marshmallow (which is 3 1/2 yrs old)?

For now, I think the current GZDoom engine should be maintained until beta testing with the new engine can be done on a wide range of devices to make sure there's no issues.

Sounds good to me.

Also, the version we are currently using is 2.0.02/2.0.03. I think something that's more within our reach is updating to the latest version of 2.x.xhttps://github.com/coelckers/gzdoom/releases/tag/g2.3.2 before we finally go to 3/4.x.x. We could also not, if it's unnecessary.

It sucks that nvllsvm abandoned the project lol, he could probably have done this pretty easily, or at least better than what we're attempting to do.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/mkrupczak3/Freedoom-for-Android/pull/35?email_source=notifications&email_token=AGCQEX4SVXPXE64LTPIRUCLPZJ5ZJA5CNFSM4HVQZW72YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXGF5GI#issuecomment-499932825, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGCQEX7QH2YXCHF6NO7FK5DPZJ5ZJANCNFSM4HVQZW7Q.

mkrupczak3 commented 5 years ago

Hey @TacoTheDank Could I ask a favor?

image

Could you check out this class? I'm not sure if the latest refactoring broke my java code's ability to recognize the DoomWad kotlin class, or if its an IDE issue on my end. I've tried some IDE stuff but haven't been able to fix it.

I'm trying to push out a hotfix to improve first time user experience.

mkrupczak3 commented 5 years ago

Hey @TacoTheDank,

I just finished a hotfix and I think the project's in a good place to do your suggested changes. I've sent you an email. I'd also like to do a very basic 'download Iwad/Pwad from URL' fragment and have included the details. Please let me know if you're interested.

TacoTheDank commented 5 years ago

Sorry, been busy with some IRL things, and recently got back into Minecraft, so yeah...

I see now, yeah we'll probably just have to keep it at OpenGLES 2.0 for now.

I had a thought of "what if we released a second Freedoom app that used the 4.x.x base (that we would now work on), and maintained the old Freedoom 2.x.x base app for any bug fixes that might need to be made?"

Could you check out this class? I'm not sure if the latest refactoring broke my java code's ability to recognize the DoomWad kotlin class, or if its an IDE issue on my end. I've tried some IDE stuff but haven't been able to fix it.

Yeah, I ran into that as well, but I think that problem had already presented itself when I first launched the project in Android Studio (before I upgraded the Java to 1.8). It didn't affect my ability to upgrade the Java version, though.

As for the project, this is probably as far as I can help with my beginner knowledge of Java, and I don't even know other languages (but I'm working on learning them, slowly). I'll still be watching this project, and will try to help much later on when I actually know what I'm doing, but this is probably as far as I can help right now. Thanks for letting me work on this project :)