Giter VIP home page Giter VIP logo

freedoom-for-android's Introduction

Freedoom for Android


A fork of nvllsvm's GZDoom-Android port. My idea for this fork was to upgrade nvllsvn's GZDoom-Android port, fix the C/C++ engine bugs and the java app bugs, and combine it with the open-source Freedoom (freedoom1.wad and freedoom2.wad) assets to publish a completely open source android game running on the doom engine.

This "bundling" has allowed it to reach a more diverse audience of users whom either don't own Doom or are averse to having to find and copy their legally-owned Doom resource files onto their phones. It has reached over 1,200,000 downloads on the Play store.

Due to changes with the Google Play store, I have been unable to distribute my last update for this app on the Play store. The update contained a newer version of the Freedoom wad(s) and some language fixes, and is available on GitHub.

Due to the deprecation of the build tools for this app, I have stopped active development. Please check out the GitHub and let me know if you are interested in taking over this project.

While this app will remain free and highly functional for most users, please also check out Beloko's 'DeltaTouch' as an alternative.

Help translate!

https://www.transifex.com/krupczakorg/freedoom-gzdoom/dashboard/

Download

Play store link: https://play.google.com/store/apps/details?id=net.nullsum.freedoom

APK release: https://github.com/mkrupczak3/GZDoom-Android/releases

Ember's Unofficial F-Droid Repo: https://fdroid.heartshine.xyz/

(I have not verified this repo myself for security. At the time of writing, my latest release [v0.4.3] should have a sha256 hash of 43c94079d78ed2dffb90e521ffcc74364706fb8e334ba55f15b43168450625c6)

Why Freedoom?

While the Doom engine and its many spin-offs are open-sourced, most of the Doom's "assets" such as textures, sounds, and game levels are copyrighted and not legal to redistribute. The Freedoom project offers an alternative set of assets and game levels that are open-source and can be used with most Doom engines in place of the originals. In addition, Freedoom is compatible with much of the vast library of fan-made "WADs" (i.e. game levels) as indexed in the idgames archive.

Dev Blog (how I made this):

https://matthew.krupczak.org/2019/10/20/hawking-my-projects-ii-500000-installs-with-freedoom-for-android/

Links to the freedoom community:

Freedoom official Github

Freedoom forums (for the Freedoom project, not Freedoom for android)

"Third-party" library versions used (update this whenever they are updated)

Roadmap (not in order)

Notes before building

A large portion of this project relies on the Android Native Development Kit (NDK) to compile C++ and C code from GZDoom and other sources for use with this app. You may need to install additional tools in your development environment before being able to build these portions successfully. For more information, please read the "Getting Started with the NDK" article from Google. To my knowledge the environment only compiles towards the ARMV7 architecture as found in smartphones and not towards x86 as found in most traditional computers. You may need to add support for x86 compilation or emulate the ARMV7 architecture to get this app working on a virtual device.

Building

If you are running Windows, you may need to execute some of these commands using the Cygwin environment to avoid unexpected behavior. If you install Cygwin on Windows, you should make sure that the "patch" command is installed with the environment.

You may also need to add your NDK folder to your PATH or add/remove a .bat extension from a command in build.sh depending on your platform.

Building (cont.)

git submodule update --init
./build.sh
./gradlew assemble

Credits

Thanks to:

  • Andrew Rabert (nvllsvm) for your amazing work on the GZDoom-Android fork.
  • Emile Belanger (Beloko Games) for his work on D-Touch and the rest of the OpenGames suite.
  • The Freedoom authors for an excellent set of open-source assets. Please also look at /doom/src/main/assets/CREDITS.txt for a more complete list of these contributors.
  • Anyone else I haven't mentioned

Disclaimer

This project is not affiliated with Doom or its publishers, Id Software or parent companies, or Bethesda. This project is not officially endorsed by the Freedoom project or GZDoom project.

License

Freedoom is released under a BSD-like license which can be found under /doom/src/main/assets/COPYING.txt. Most other code is GPL'd.

freedoom-for-android's People

Contributors

dvdvideo1234 avatar mkrupczak3 avatar nvllsvm avatar tacothedank avatar transifex-integration[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freedoom-for-android's Issues

Inclusion to F-Droid and fmod.jar

Hello, is it possible to remove fmod.jar? As the original gzdoom port by nvllsvm, inclusion of this project to F-Droid is blocked by usage of a proprietary library fmod.jar.

Cannot change brightness / contrast

Version from Play store
Phone: moto z play, android 8.0.0 (close to stock)

Steps to reproduce:

  1. launch game (doom2.wad) without addons
  2. Options > Display Options
  3. Adjust to max: Gamma Correction, Brightness, Contrast
  4. Restart game

Actual result:
Doom still too dark to play in bright room, look of the game hasn't changed

Expected result:
Adjusting gamma, brightness or contrast change look of the game

most pk3s cause the game to close.

as written, running preety much any pk3 with zscript will cause the game to close, and the fact that you cannot see gzdoom's loading text makes it harder to pinpoint what's causing it.
It's very likely that this app uses a very outdated version of gzdoom, please update it, it's very anoying and I don't want to pay 2.50โ‚ฌ for delta-touch.

Game does not run on andorid 11

Just as the tittle implies, the game does not run on android 11, i have a moto g8 power and recently got thet andorid 11 stable update, since that update was done in my phone, the game just crash and freeze and stay in a white screen, it was working just fine on android 10 on my phone, is there a way to fix this?

Google's propeller-heads keep rejecting play store description update

Hello,

Some propeller-heads at @google @GoogleDevs @GooglePlayDev have rejected an update to the description of this app, giving no justification even after further communications and appeals.

This update to the description is important because it is intended to inform consumers of this app and other free software of information pertinent to their use of the app and critical to the ongoing success and sustainability of the free software ecosystem upon which (ironically) platforms such as @google and @Nintendo 's switch urgently depend upon.

This falls under the fair use clause of the DMCA as protected speech, and can in no way be regarded as copyright infringement or brand spam.

The update should be accepted to prepend the current description with the following:

***IMPORTANT NOTICE***

Like this app?

It wouldn't be possible without the support of the Open Source Software community and the cooperation of many software companies, hardware vendors, and independent software developers.

Nintendo has recently completed legal action (including arrests) against a tool distributor named Uber Chips which could set a dangerous precedent and threaten open source software and the freedom of tech marketplaces. 


***END IMPORTANT NOTICE***


Due to changes with the Google Play store, I have been unable to distribute my last update for this app on the store. The update contained a newer version of the Freedoom wad(s) and some language fixes, and is available on GitHub.

Due to the deprecation of the build tools for this app, I have stopped active development. Please check out the GitHub and let me know if you are interested in taking over this project. 

While this app will remain free and highly functional for most users, please also check out Beloko's 'DeltaTouch' as an alternative.


Call for contributors

Please help out with this project if you can! It's a great low stakes way to get started working with open source software.

In addition, I'll shamelessly plaster your github username on the patch notes. It has almost 600,000 downloads so far.

Currently, the biggest blocking problem is Armv8 support. Without it, I don't think I can publish updates right now.

Building how-to (requires old NDK)

On January 24, 2020 3:10:21 AM EST, vanta wrote:

Hello, I'm author of this issue: #40

I'm trying to compile the project right now, what version of build tools have you used? android-ndk, etc. Also, since there are no build instructions, are there some undocumented build steps that I should be aware of? (or it's simply ./build.sh and ./gradlew assembleRelease)

Hi Vanta,

#41

Thanks for your interest in this project

It's been a while since I have been able to "compile" a working version of this app due to Byzantine problems with the NDK during compilation

I think your best bet would be to look at my commit history, look at the time that I committed a "build" of the app, and then using whatever version of the NDK was latest during the time I built it.

So, you're right on the money for how to build it. Build.sh patches and compiles the C/C++ GZDOOM portions and other libraries, and gradle assemble builds the apk with the binaries you've built in build.sh

If you're on Linux/Mac or whatever, you'll need to remove the .bat from one of the last lines of build.sh. I had to add that since I was compiling on Windows.

I was dorking around recently and was able to find how to add armv8a as a build target, but I've since forgotten. I have the changes on one of my local environments, and could give them to you if you need (I was unable to get the app to compile though [using NDK 16b], hence why I've kind of rage quit this project for a minute. You probably won't have issues if you use the correct NDK version though)

This would be necessary before any new versions could be published on the play store

Multiplayer doesn't work

idk if this is the right place for this but i just wanna say something about this

I have played D-Touch before, and with it I could play multiplayer with my friends using the -host and -join commands.

Now, I found this gem and played it with little problems. I wanted to try multiplayer, so me and my friends attempt the -host and -join commands again. But now, after tapping launch game, the app goes into a black screen and doesn't respond.

Any way around this? Or is multiplayer with this app simply not supported?

first time launch crash

The first time the app is launched on any device, an intentional crash is triggered because the main list view doesn't update properly after wads are copied over while the app is running.

This is very bad from a UI standpoint. The initial hack that was in place to fix this was broken by changes in Google's toolbar API, and none of the other alternative hacks I tried worked at the time.

Integrate @rdkgit 's download wad from URL fragment

Prospectus:

Adding this "download wad from URL" fragment like so would greatly enhance the functionality of this app for most users.

@rdkgit has been working on something like this that, after some auditing and testing, could be integrated with great effect into the Freedoom for Android app.

Background:

This Freedoom for Android app provides to users a bundle of an old version of the GZDoom engine capable of running most game "IWADS" for the idtech1 engine including doom, heretic, hexen, strife, etc. and the community-created Freedoom and Freedoom2 "IWADS".

To provide a complete software package that is usable, the community-created Doom replacement IWADS Freedoom.wad and Freedoom2.wad are bundled with the engine in this app in place of Doom.wad and Doom2.wad so users can start playing immediately without having to own or purchase non-free assets.

While this provides users a great amount of functionality with the base wholly free game, much of users' utility of the doom engine (and derivatives) is derived from its mapping community which have created thousands upon thousands of levels, mods, and an assorted few full-game replacement "IWADS" such as Chex Quest, etc.

These can range from complex mods or levels bundled as .pk3 files for use with the GZDoom engine, or (more commonly), "PWADS" which are individual level replacements for the doom & doom2 "IWADS" and are compatible with just about every modern Doom sourceport or limit-removing sourceport.

Freedoom and Freedoom2.wad are compatible with most community created content "PWADS" in place of Doom and Doom2.wad.

Current actions a user must take to install PWADS for use with the app:

  1. Find and download a zip archive containing the desired pwad
  2. Download an android app for unzipping archives
  3. Use this app to unzip the archive and extract the desired pwad
  4. Move this pwad to a somewhat arbitrary location in android, such as /storage/emlated/0/net.nullsum.freedoom/config/wads
  5. Select the desired wad from the main screen by pressing "Addons", "WADS", then your desired wad
  6. press "OK", then select the main game resource file to use (usually freedoom2.wad)
  7. press "Launch"
  8. start a "new game" as usual, but you will go to custom level instead of the normal first level of the game
  9. (alternate) some levels replace other maps than the first one in the game and may require use of a warp command or special launch argument (such as -warp 3 1) to get to it

Problems:

Steps 2, 3, and 4 here are very difficult for most users, even with appropriate instruction.

Proposed user happiness path with new "Download wad from URL fragment":

  1. User uses a web browser to find a pwad, mod, or iwad they would like to download
  2. The user pastes the URL into an appropriately labeled text field on a dedicated fragment of the Freedoom for Android app
  3. The user presses the "Download and install Button"
  4. The app discerns whether the downloaded zip contains an IWAD, PWAD, or mod, and installs it to the correct location without further user interaction.
  5. The user selects the newly downloaded and installed IWAD, PWAD or mod from the main screen
  6. press "OK", then select the main game resource file to use if launching a PWAD and not an IWAD (usually freedoom2.wad)
  7. press "Launch"
  8. start a "new game" as usual, but you will go to custom level instead of the normal first level of the game
  9. (alternate) some levels replace other maps than the first one in the game and may require use of a warp command or special launch argument (such as -warp 3 1) to get to it

Mobile screen Recorders can't capture the sound of the game.

Hello ๐Ÿ‘‹, I'm a YouTuber, and I've been using your application for several days. After some hours recording my gameplay, I noticed that the audio couldn't be captured using screen recorders. Could you fix it?

Here are the screen recorders that I used:

  • x recorder
  • adv

Armv8 (64bit) support

Need to compile towards Armv8 before Google Play will accept any updates

I've tried to do this initially (got the initial hooks in to trigger compilation), but I found the newer versions of Google's NDK don't support the GNU c compiler (gcc)

To solve this, I downgraded my NDK version to 16b found here and re-ran build.sh to start building the c/c++ portions, but I started encountering weird build errors that I didn't have the first time around, and ones that seemingly had nothing to do with the Armv8 compilation.

I might try downgrading the NDK again, while trying to guess which particular version I used earlier to build this app.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.