News | Forum | People | FAQ | Links | Search | Register | Log in
QuakeDroid - Quake For Android
QuakeDroid is Android Quake that should run on any Android phone made in the last 5-6 years, but has only been tested on 2 phones (one 32-bit, one 64-bit).

http://quakeone.com/quakedroid

Designed to have controls similar to popular mobile games (/cough Minecraft). Went deep on the documentation to try to empower the user.

Does not require Quake to install, it downloads Quake shareware on startup.

* How to put your TrenchBroom/J.A.C.K map on your phone
* Where is your Quake folder?
* Difference between shareware vs. registered Quake
* Put registered Quake pak1.pak from Steam/GOG on your phone
* How to set a startup command line.

The menu has 2 methods of navigation, you can touch items like "Single Player" or manually slide the volume slider bar or use the menu nav buttons.

* Tap-fire (double tap on an Ogre to shoot it)
* Drag-look (like Minecraft)
First | Previous | Next | Last
GL QuakeDroid Beta - Fog, Alpha Textures, Mirrors, ... 
Download: GL QuakeDroid
Screenshots: Rubicon 2 Honey QMB Option

Suggested: if QuakeDroid has been loaded before ...

1) Settings->Video Options->Brightness: Texture Gamma
2) Settings->Preferences->Autoscale: Auto Large
3) (Option) If you want QMB particles Preferences->Effects: QMB

The above are new default settings but would be off in an existing config.cfg. 
Re: Xbox Controller 
It's a wired USB controller connected to a "USB->USB C on the go" adapter. I actually don't have any other games to test it with so I need to do some more testing on my end, and I'll try compiling myself this week and see what's happening. I'm worried that the SDL "Joystick" api won't be compatible across different joysticks. As I understand it, they added the "Game Controller" api's to SDL2 as a layer on top of the Joystick API to give a consistent view of joysticks, so when the API says "left stick" or "A button" etc., it's actually that stick or button on the joystick.

Whoah - GL support! Nice! 
 
Runs well for me, but can the GL error pop-ups during startup be suppressed please? At least for second and subsequent runs? Having to click through 4 or 5 of them every time gets old real fast. 
@mh 
Whoa! I get zero GL errors during run, but I did the build in debug mode in the event someone had issues.

I'll suppress those in the next incremental and instead record them to log, but I want to know what they are. 
@ericw 
See the Butane qii4a post/link for an APK download for a different game with controller support.

Regarding the SDL2 joystick API ---

This is all new to me -- that being said, I looked at the SDL2 2.0.8 source code and it leverages native Android controller support which is extremely robust and standardized and mature.

So I am thinking the controller support is going to work almost universally.

Nonetheless, this is the thread where we find these things out ... 
@mh - Part 2 
I want to see more feedback, but the fact you have GL errors already annoys the hell out of me. I spent time studying the OpenGLES specs and was under the impression that it was pretty damn standardized.

/Pioneers, arrows in the back -- this is the whole purpose of exploring engine developing and killing these kinds of things, but damn ... 
GL Errors 
Here's what I get; it's an el-cheapo Nokia 5 btw.

First is "Alert: GL_EXT_texture_filter_anisotropic" but no other info.

Then a 1280 at line 221 in GL_Evaluate_Renderer_CheckExtensions.

Then another 1280 at line 222, same function.

Then a 1280 at line 223.

Finally one more 1280 at line 224.

Following which it loads and runs fine. LIT files work, and VIS files also seem to do so; I have a bunch of them in a pak2.pak so I'm assuming it's getting them (I've deliberately avoided reading the code for feedback purposes). 
@mh 
Alright, well -- gives me an action plan.

And I'll act on it and address in the next build. 
Still Trying To Get My Moga Hero Controller To Work 
which is unfortunate because i really want to have quake (and all the expansions) on the go.

the controller can controll the phone in the moga pivot app so its not a bluetooth thing, the controller works, but does nothering in qd.

please could you suggest a controller which you think is best to use for quakedroid. (im willing to pay for a new one just for this project).

I dont think my moga hero can work with quakedroid, i sure cant get it to work. I dont even know if it works outside of moga pivot games, confusing.

If anyone does mange to get this working with a moga controller please let me know so i can know if its worth persisting with this controller.

Might be worth considering moga support for quakedroid, seeing as i think it's a popular controller? Let me know what you think. 
@apm 
brassbite suggested a controller.

My controller, a ERO VR was $19.98 at Walmart. 
 
Make that EVO VR.

/Typo corrected 
@apm 
You might try to see if your controller works with https://www.apkmonk.com/app/com.n0n3m4.QII4A/

When I was setting up my controller, the greatest initial difficulty was correctly pairing it with the device. I had to hit a certain combination of buttons to cause it pair as Android vs. pair as iPhone and my initial pairing was wrong.

I had to unpair the device entirely and then pair it again to get it to work right.

While the device was paired improperly, it still showed as a bluetooth device, but didn't work in any game.

/Ideas 
GL QuakeDroid Slight Tweak (resolving Mh Startup) 
Download: GL QuakeDroid April 18 2018

@mh/GL_EXT_texture_filter_anisotropic glerrors and notification no longer happen. 
 
Cool.

Won't be able to test until 6+ hours time at the earliest (it's the warmest day of the year and I have seasides to walk along, beer to drink and pizza to eat!) 
 
warmest day of the year

It was literally like December at 7 am this morning in Ohio with light snow. I'm a "cold weather coder" so that actually is quite ok by me. 
Having Issues With PS4 Controller 
Both Bluetooth and wired connections are fucked. HOWEVER, it's not QuakeDroid. There are 3rd party options to solve it but I'm not rooting my phone to play Quake or any other game.

I tried the Steam controller had a little bit of luck but the right pad acts as a mouse cursor. Sadly the orientation is for portrait and the mouse doesn't work as an input device for the software anyway.

Any suggestions would be appreciated. I'd like to buy a Steel Series controller for this but a bit gunshy at this point. 
@dumptruck - PS4 Controller Android Article 
This article may help you:

There was a dark time, long, long ago (six years or so), when Android was still a platform in its nascent stage, and to really unlock its best features, you had to root your device. Well no more. One of the many things you can do now without rooting is connect your PS4 controller to your Android phone or tablet via Bluetooth.

https://www.maketecheasier.com/connect-ps4-controller-to-android/

This is also this article:

https://www.teamknowhow.com/discover/discover/how-to-connect-a-ps4-controller-to-android 
@apm - Mogo "hid Mode" 
Some reading/researching around ... you might look into trying to set HID mode.

HID refers to the gamepad protocol inherently supported in Android™ devices running 3.0 and higher.

Both my EVO VR gamepad and my external bluetooth keyboard use HID mode.


MOGA's Pivot app has yet to be updated for Android 5.0 compatibility

However, certain MOGA gamepads (not all) have a HID mode switch on them that let you use HID mode with games.

"How to connect moga pro controller thru hid mode"

https://www.youtube.com/watch?v=5NwT3Msoxzo 
@Baker 
Thanks for the links. I've been able to pair the devices as shown in the links above. I believe the PS4 is defaulting to HID mode already as I can navigate the phone's UI as the guy showed in the video.

What happens is that I can use the X button IIRC on the controller and the analog sticks do work - which is a great start - but as soon as I press the other buttons the whole thing blows up. The view pans up and the QuakeDroid menu behaves as if the up button is held down.

I think re-configuring the buttons is probably the fix I need but the app you linked is out of date and unstable per the developer. I am going to keep searching and will report back.

There are other apk's that are out there that require rooting my phone to fix all this that I won't even bother with. I'll probably just get a different controller eventually. But I'm tantalizingly close on the Ps4 Dualshock. 
@dumptruck - Made For Android 
The SDL2 library controller support is for the gamepads that were designed to support Android out-of-the-box.

I guess it is natural that some users with existing PS4/XBox/Steam Controllers are going to try to use those with their phone/tablet, but those aren't the "Works With Android" controllers that the SDL2 library supports.

They may work or not, may require Google Play button remapping apps or what not. The mileage on that is going to vary.

The best I can probably do with that if someone like yourself gets it to work with, say, a PS4 controller, is to make note of your post and perhaps eventually throw a link on QuakeDroid page. 
 
Obviously, I do hope you get it to work. 
 
And if you do, I'll accomodate the info on a "using PC/console info" page or similar on the QuakeDroid page. 
@apm - "B Mode" 
“B” mode works with Android devices running Android OS 3.1 (Honeycomb) or higher.

According to this link, you may need to switch your MOGO to "B" mode.

https://support.mogaanywhere.com/hc/en-us/articles/201290560-Which-Android-devices-does-the-MOGA-HERO-POWER-work-with- 
@Baker 
2 things. I was really only attempting it because I read that you can use PS4 controllers on Android and thought "what the heck." But as with everything it's a rabbit hole, time-suck thing to get working.

Even Sony's Android specific streaming solution is limited to specific phones OR you need to root the phone (and *then* you sign into your PSN account --- fuck that noise.)

The other reason I'm trying this is to just add to the knowledge base here on the thread. So, please don't research too much on my account!! I asked earlier as I was hoping against hope there was somethin I was missing.

After work I'll hit Fry's and see what they have for Android controllers. I had a Steel Series for iPad and I do think their products are excellent overall.

Thx! 
Anisotropic Filtering/GL Error Pop-ups 
Confirming that everything starts up clean now.

An interesting observation is that the texture filtering options don't work either. My guess is that there's a bug with glTexParameter calls on this device, and that your code is otherwise fine. 
 
When I was trying to get it to run, if I recall correctly OpenGLES 1.1 doesn't support the texture filtering options docs.

In head, I was planning OpenGLES 1.1 first and then convert to OpenGLES 2.0 using RMQ engine GLSL as a guide.

But getting OpenGLES 1.1 to work was more time consuming than anticipated. Also I was met with challenges like non-supported draws like GL_POLYGON (easy --> GL_TRIANGLE_FAN) but more complex ones (GL_QUAD_STRIP) slowed me down a bit.

Plus limitations like the typical mobile NPOT extension GL_APPLE_texture_2D_limited_npot (despite the name Android uses this commonly) can't be used with clamp to edge textures (if I recall).

So more can definitely be done on the rendering side of things over time. 
 
Hrm. Trying the latest version on my new Android 6 tablet, the screen does not auto-rotate (flip). That's a problem because my keyboard case connects to one side of the tablet, which means UP is a certain direction, but QuakeDroid does not agree that this direction should be the UP!

But my bluetooth gamepads work flawlessly with no problem. I use an iPega 9023 v2 (suitable for tablets 7" and larger) and an iPega 9055 (suitable for smaller phone-size devices). These controllers actually hold the device, basically converting your phone or tablet into a portable game console. 
@gunter 
Is it upside down from what you need?

I could add a setting possibly in video options to flip it.

dumptruck also said for his phone it was "upside down".

/Awesome your gamepad works flawlessly. 
@Baker 
All the phones I tested QuakeDroid on are "flipped" like this. They are all Motorola phones from the past few years.

Moto X Pure (aka Style)
Moto Mini
Moto X (1st Gen)
Motorola RAZR 
Sorry 
That second one should read Droid Mini - but it's still a Motorola. 
GL QuakeDroid Alternate Landscape Build 
Download: GL QuakeDroid Alternate Landscape

I'll end up making this a setting in video options later. 
 
I can't speak with certainty for whatever tools you are using to build this, but with Android development stuff, auto-rotate should be a simple switch somewhere, along with limiting it to either portrait or landscape modes. I mean, it's basically built-in functions in Android to detect which direction is UP and rotate the screen accordingly; you just have to set the game to allow it when developing. Of course, I have played games where it is locked to one position... so it may not be something that is easily set in all development tools. I just know that when I made my little android games ( www.tinyvast.com ), it was a very simple setting to allow auto-rotate in landscape modes only.

If that's not an option, then I guess a menu setting would suffice! 
@dumptruck 
I think I'll default the landscape to the "gunter/dumptruck" preferred kind. Looks like that should be normal. And then I'll put an option in video options to flip it. 
@gunter 
The alternate landscape build should solve you issues for now. Let me know. 
Whoa. 
I guess it's cold out today! :) 
 
Btw, Baker I did get it to build in Android Studio with no issues - nice!

Double checked the joystick initialization code and SDL is just returning the accelerometer and no joysticks for my setup. I think my tablet may just lack the Xbox driver, as it's a running a customized android, so I probably can't help test at the moment. 
@ericw 
I'm glad compiling went easy. I try to make things easy to compile :) I did a reinstall clean compile, but hadn't tested fresh on a different machine.

I actually don't use Android Studio (it must be installed for the toolchain).

I go to the Android folder where there are several .bat files I made ...
1) (Done just once) make_symlink.bat (hooks up SDL2 folder)

2) gradle_assembleDebug.bat (compiles)
3) adb_install.bat (installs apk to phone)
4) (optional) adb_debug.bat (open a window with live log prints as it runs)

Because the Android compile process is rather slow ... I typically make sure Visual Studio will compile the Windows version of the engine (in 3 seconds Visual Studio will tell me if I am missing a semicolon, the Android process will take 2 minutes to tell me such a thing). I also have a "Fake Android" configuration in Visual Studio with the right preprocessor defines for Android so I can easily work with the code.

/And as time moves on, I want to see if I can speed up the Android compile. Sadly the gradle build system documentation for use with the Android NDK (native C/C++ dev kit) is basically non-existent. 
 
Well, I played for a little while on FvF and got the same crash as my old device:

Cache_MakeLRU: active link


Also, I feel like the "Invert Mouse" setting should also invert the look axis on the gamepad (right joystick).

Other than that, gamepad control feels really good. Perhaps the "Dead Zone" (the amount you can move the joystick before it counts as moving the joystick) for looking up and down should be a little larger as compared to the dead zone for looking left and right. Most of the time you don't want to look up and down but it's not too hard to accidentally let the joystick drift up or down a bit when you're looking left and right.

When hiding the onscreen controls (from keyboard use), there's no need to disable touchscreen aim. 
 
Check this out for a picture of my awesome Quake rig running QuakeDroid: http://www.fvfonline.com/forum/viewtopic.php?f=4&t=3810 
@gunter 
I've been focused on getting the OpenGL build up and running, so I haven't had the time yet to hit the everything on the todo list (especially a lot of qmaster items). But they'll happen ...

For the "active link" I either have to acquire the Quakespasm SDL sound mixing code that they acquired from ioQuake3 or read mh's cache system redesign tutorials and redesign the sound cache system.

For deadzone and company, the following cvars are available and they all save to config.

joy_deadzone
joy_deadzone_trigger
joy_sensitivity_yaw
joy_sensitivity_pitch
joy_invert
joy_exponent
joy_exponent_move
joy_swapmovelook
joy_enable

Since I use adapted ericw/Quakespasm controller support, I would prefer to leave the default values unchanged. 
So I Dug Up Some Old SonyXperia Phones 
And you know what?, it is working perfectly here.
Great thank you Baker, this is nothing short of awesome!

My smile starts to hurt already.

Thx again. 
Re: #186 Alternative Landscape Build 
Just a few things I noticed while messing around with it this morning:

In Options when Autoscale is set above "Auto Small" setting (medium and large) the white test descriptions do not match the currently selected item. So the Crosshair description reads: "Screenblend underwater, powerup..."

My screen resolution is defaulted to 2392x1440 BTW.

Another thing I noticed in Video Options changing Pixelation settings has no effects. It remains set to default GL smoothed regardless of what the selection reads.

While I was typing this I had QD looping through the demos so I could type the right settings for you. While on one of the demos the app gave error:

Chache_UnlinkLRU: Null link

When I touched okay the app crashed to home screen. 
Typo Above 
should read: Cache_UnlinkLRU: Null link  
Hey It's Mfx! 
@mfx - Thanks!

@dumptruck - another fine catch! Shall be addressed. The LRU link active deal will be fixed either tomorrow (if time permits) or late Sunday.

The next release will have a QuakeDroid (GL version) and a QuakeDroid WinQuake and I'll have to reorg the QuakeDroid page some to reflect the new changes. 
 
"Button names LTHUMB, RTHUMB, LSHOULDER, RSHOULDER, ABUTTON, BBUTTON, XBUTTON, YBUTTON, LTRIGGER, RTRIGGER. The DPad acts as arrow keys (and also supports diagonal movement)"

I was playing a bit and wanted to configure my joystick buttons but I couldn't figure out the button names and had to come back and scan over this thread to see the key names to bind...

I suggest adding joy_ to the beginning of each of these key names, so that if I do something like "find joy" or "help joy" it would show me the key names.

And the directional pad on the joystick doesn't need to replicate keyboard arrow keys -- they could be their own separate thing, like joy_left, joy_right, etc. 
 
Those are the names that Quakespasm uses for the buttons.

If I were to change the names then I would be throwing a wrench into consistency ... 
 
(This doesn't mean that something couldn't be done to make discovering the button names easier ... I concur about that ...

I'll think about how the names could be easier to discover.) 
 
I use 8bitdo Bluetooth controller. found your project before u added controller support and thought it was the only drawback. but now, this is now probably the nicest Quake port to android that I've seen. works well w/ controller. Props! 
 
Yeah - joy_abutton, joy_ltrigger, ... would probably have been better choices for key names.. it's one of those annoying things that's hard to change without breaking anyone's configs. I was expecting people to use the "customize controls" menu for binding controller buttons so didn't expect knowing the key names to be an issue.

And the directional pad on the joystick doesn't need to replicate keyboard arrow keys -- they could be their own separate thing, like joy_left, joy_right, etc.

Same goes for the "back" and "start" buttons (the two small buttons on the front of an Xbox controller), I hardcoded them to emit Tab and Escape keyboard keys. In hindsight it might have been better to introduce new key names in the engine. This still might break some configs but seems like it'd be an improvement. 
 
It probably wouldn't be much of an issue if it's not compatible with Quakespasm configs, especially since this is the Android port.... Though I would also hope the joystick code gets put into Mark V at some point as well.

But would it be possible (in Quakespasm too) to add in the better names like joy_abutton, etc, and still keep the old names for backward compatibility? So both joy_abutton and abutton would refer to the same button.

Though that might not work as well for the joystick buttons that were hard-coded to emulate keyboard buttons.... I guess in that case, people would just have to update their configs.

Or, you put in a console variable like "joy_keyboard_keys 1" that causes the previously hard-coded joystick buttons to act as a keyboard keypress (which would be Quakespasm's "default" setting), but then you could toggle it off with joy_keyboard_keys 0 to make those buttons work independently as joystick buttons, joy_start, etc. (this should be QuakeDroid's default, since it's not much of an issue at this point to carve a new path, since we're still in pretty early testing mode). 
@***** (#203) 
Thanks for the feedback! I'm glad it is working well with your controller.

The goal is to do mobile in a more comprehensive and more versatile way than has been done before.

And I think it is off to a great start, including the number of different users providing feedback to help mold it into shape.

@gunter - I'll think about all of that more as this progresses. 
 
there's no reason that name->keycode->name needs to result in the same name. just add multiple key names and it'll favour the first found when it writes out the config, and the bind command will accept either.

regarding back->tab, if the new joy_back's keybind is still null then just lookup tab's keybind instead of printing a warning about it being null/unset.
I had a similar issue when I split left and right shift/ctrl/alt keys in FTE. This stuff is entirely feasable, its just messy enough that you'd do it ONLY for compat.
With all the various different default.cfg files around the place, it can be nice for those various keys to actually do something by default. So whether the compat is short-term or permanent is up to you... 
Spike 
that doesn't sound so bad. DP has "X360_*" and FTE has "GP_*" prefixes for the Xinput key names, so if QuakeDroid and/or Quakespasm migrate their controller key names it would make sense to match one of those. 
 
Quake had all the cvars begin with "joy_" and all the buttons were "joy1", "joy2", "joy3" since 1996.

Plus the associated cvars in Quakespasm begin with "joy_".

/One thought 
 
joy1, joy2, joy3, etc., would most certainly be the better option for button names, since not every gamepad is going to have its buttons labelled a, b, x, y....

Plus you can then allow for an infinite number of buttons, like joy18, joy19, joy20... What? I might want to play Quake with my Vagina Hero controller!

https://web.archive.org/web/20110427183508/http://www.ripten.com:80/2008/07/03/vagina-hero-exclusive-first-look/ 
 
Sure, but joy1 ... joyNN conveys no information about what button it is.

Although there are a lot of controllers, since Xbox/PS/Nintendo use the same layout (and have for over a decade) including Android/iPhone controllers ... it has become a rather reliable norm like keyboard layouts.

And if the norm somehow changes (the future is always full of surprises), there is always Menu->Customize Controls.

A "joy_" prefix as an additional alternate name should suffice and permit easy discovery via auto-complete.

Nice that Spike reminded there isn't a 1:1 names to keys ratio. 
 
Well, not PS controllers -- they use the X, O, Triangle, Square buttons. But it does seem that most all bluetooth gamepads go with the A B X Y buttons.

Also, I believe R1, R2 are the standard names for right shoulder and right trigger, though I suppose they may be a bit less informative.

But yeah, alternate JoyNN (or joy_NN) names would be like the Windows control panel joystick test page, where the buttons are only numbered 1, 2, 3, etc., to allow for all the different types of joysticks that may not be labelled the same, and may have more buttons that other gamepads.


I note that using "Customize Controls" currently does not function correctly. When trying to set joystick functions there:

My A button is detected as ENTER (though functions correctly in game when bound with ABUTTON).

B button seems to act as ESCAPE.

Both joysticks are detected as arrow keys. But the right joystick still causes me to look around in the game (while the menu is open).


I am guessing this has to do with setting the gamepad stuff to act as menu navigation keys when the menu is open.


Another question: my tablet keyboard does not have F1, F2, etc., keys. It has multimedia keys (volume, play, brightness, etc). Actually, my bluetooth gamepad has some multimedia keys as well.... Is it possible for QuakeDroid to capture those keys and bind them? That may not be possible, since they hook right into OS functions.... though I know that, for example, the "back" softkey button in Android can be overridden by whatever app is running. 
 
For my first attempt on the QS joystick code, I only supported SDL2's Game Controller api, which on Windows, corresponds to only supporting Xinput. Xinput gives your program button/axis events labelled based on Xbox controllers. This makes the dev's life easy, and player's lives easy if they have Xinput-compatible joysticks.

Support for support for arbitrary joysticks that don't conform to Xinput is doable, this would be like the original Quake joystick code where the buttons produce joy1, joy2,... and you have to figure out what that different axes do yourself.

@Baker
I would be fine with the joy_ prefix for the buttons, as well as adding:
joy_dpadup, joy_dpaddown, joy_dpadleft, joy_dpadright,
joy_back, joy_start, joy_guide
to cover the remaining Xinput/SDL2 game controller buttons that I initially set up to emit keyboard keys. 
 
Weirdly, when I started up QuakeDroid tonight, some of my keys had been unbound. LSHOULDER, RSHOULDER, Tab, XBUTTON, YBUTTON (which I had left at the default assignments). And I think uparrow, downarrow were not how I left them (+attack, +jump). I have no idea what caused this. They all functioned correctly after I rebound them in the console. They are all keys that are either gamepad only, or duplicated on the gamepad though....

I've still been intermittently having the issue where lookspring and centerview stop functioning, but force_centerview does work when that occurs (no -/+mlook necessary).

I know these aren't very helpful reports....


Also, I remember with Mark V, I asked about the text size for the scr_showfps not being scaled up with the other text, and you said this was by design. On android that scr_showfps is TINY. Could there be some other variable to scale that up? 
@gunter 
Centerview ... bind "-mlook; force_centerview; +mlook". Will be 100% reliable, right?

QuakeDroid (and Mark V and Quakespasm) all unbind all your keys when it runs config.cfg. This is so things you don't want bound from default.cfg don't linger that you don't want, I don't know if that could somehow be a factor. That being said, I'll look around and see how they save and make sure that I didn't exclude the new keys.

I hear you on the fps thing. I guess I will need to address that. Never considered that the fps could go microsize. 
 
Yes, force_centerview always seems to work, even when centerview (and lookspring) stop working.

Adding those mlook settings in there seems to be unnecessary, and could potentially cause problems...?

Hm, next time lookspring stops working I will try messing with mlook alone and see if that makes any difference. 
 
Well, all kinds of problems today.

Upon first starting, it did not detect my bluetooth gamepad which I had just connected. I looked to see if I could manually set "joystick 1" but that is not a valid command.

Rebooting QuakeDroid fixed that issue.

I started experiencing the lookspring issue right away, and kept playing around to see if I could narrow down the circumstances when it works or not, but I just can't get it to work or not work reliably, and it seems kind of random. mlook seems to have nothing to do with it though. It does seem like stepping on various surfaces can get it to snap back on (stairs or teleporter pads), but not reliably.... Sometimes it just seems like bumping into a wall makes it kick on.

And then very coincidentally, while I was messing around with it, another player on the server mentioned that Mark V's centerview wasn't working correctly for him.... He said sometimes it works and sometimes it doesn't, and it seems to behave differently depending on where he's standing, like on stairs..... So it's not a QuakeDropid problem, it's a Mark V code problem. I just never used keyboard alone with Mark V, or I probably would have ran into it sooner. Anyway, I told him about force_centerview, and he said that worked for him.

Next, I was going to try and copy my console to clipboard so I could pate his report here, but the "copy" command crashed the heck out of QuakeDroid, possibly because my console was too long for it to handle (but it wasn't really that long though). Upon rebooting and trying "copy" right away, it seemed to work. But after connecting to the server and trying it again with not a lot of text, it crashed again.

And finally, this happened to me last night as well but I thought it was a fluke... I got disconnected from the server, and any attempt to reconnect just comes up with "could not resolve fvf.servequake.com host_error:connect failed." And that happens very quickly, like it's not even trying to connect. This persists even after closing and restarting QuakeDroid.

Hm, ok, after sitting here for a few minutes typing this message and trying again, it does connect. This may have to do with my old connection still being attached to the server or something, and it thinks I'm trying to spam connect.... Not sure. I don't think I have the server set to be super strict about connections. 
 
And oh yeah, I'm not running the fvf mod on QuakeDroid, and I always get:

couldn't load sound/fvf/nuke.wav
HTTP downloading: sound/fvf/nuke.wav
(bigfoot.servequake.com)
httpdownload failed (5):
"sound/fvf/nuke.wav"

(and other custom sounds I use) 
 
1) Copy command ... yeah, I need to disable that in QuakeDroid or make it work (not sure it can be done for Android). I already have disabled most impossible commands like "imagedump". I haven't messed with the clipboard on Android at all. But it sounds like it does work sometimes already (???).

2) Downloads for your fvf precache sounds ... options ...

Either contact Polarite (?) or whoever can add files on bigfoot.servequake.com and maybe ask them to add a sound folder in the same folder as maps, then make an FvF folder inside the sound folder and put your sounds there. Then they will download. OR do pq_download_http 0 or whatever the cvar name and it won't try and you'll just have missing sounds. If you contact whoever can upload files to bigfoot, you might try to get the FvF maps on there. Around the time quakeone.com had forum issues, the previous download depot (that had FvF maps and sounds and stuff) went away and bigfoot.servequake.com has replaced it as the depot. 
@gunter - Force_centerview + Stair Smoothing 
The code in the engine for force_centerview is simple ...

It is literally this ...

void Input_Force_CenterView_f (lparse_t *unnused) { cl.viewangles[PITCH] = 0; }

Now mouse input will override force_centerview, hence you need "-mlook; force_centerview; +mlook" to get the same effect (in any Quake engine).

Stair smoothing in engines that do that (most modern ones) will mess with force_centerview.

You can turn stair smoothing off in QuakeDroid/Mark V via "v_smoothstairs 0" and get the classic jerky stairs.

Anyway +1 for noticing that force_centerview + stair smoothing while on stairs don't mix in engines. Almost all engines are using stair smoothing, no one ever noticed that before.

/The engine has nothing to do with network like "Can't resolve xxx" or getting disconnected -- as far as I know. Then again, in many ways you are pioneering online play with Android, hehe. 
 
There definitely is a clipboard in android. I can copy the console when I first start up, and then paste it elsewhere in android. QuakeDroid just chokes to death if the console is very large. (Side note: I use an app called ClipSync for android, and its server program that runs in windows, which lets me copy/paste to/from android/windows across my network, basically sharing the clipboard contents between android/windows.)

I'm not sure stair smoothing has anything to do with the lookspring/centerview issue. I tried disabling it as you noted, but centerview was still not working (force_centerview always works). 
 
I wasn't aware that there was both "centerview" and "force_centerview" until just now.

I've never used "centerview" and didn't know it was a command.

We may have been talking about different things entirely.

When would someone want "centerview" over "force_centerview"? 
 
I don't know.... And I don't really know what the difference is, since they should both do the same thing? But centerview does work when lookspring is correctly functioning. But when lookspring stops working correctly (for unknown reasons), then centerview no longer works either, but force_centerview does.

Yeah, I never knew force_centerview was a command until you mentioned it several posts back (and apparently the keyboarding guy on my server didn't know about it either until I told him). I guess you may need to re-read my posts with that difference in mind, heh. When I mentioned "centerview" I specifically meant "centerview" and not "force_centerview." 
 
Ok, this is some info from a Quake wiki:


"centerview - realigns the view of the player to the center of the screen. Does not work with mouselook, instead force_centerview must be used."


Hm, I would assume that when mlook was active, lookspring would not function... so maybe mlook is getting set on somehow. Though I've tried +mlook and -mlook when I was having the lookspring problem, and it didn't seem to make any difference. 
 
This occurs when using QuakeDroid and the joystick together exclusively or does the lookspring issue happen in other combinations (QuakeDroid with joystick only, QuakeDroid without joystick)? (For you only, in your personal experience).

Also: I need to know ... does this occur ONLY when playing FVF connected to a server or also when playing vanilla singleplayer Quake offline (First only, second only, both)?

There are a number of places that touch that code an some of it can be triggered by QuakeC.

So in order for me replicate this or speculate it, I need to be able to pin it down (or hopefully experience it myself). 
 
Well, I've only been playing FvF online when I experience the issue, so I'm not sure if it would occur in other situations.

It has happened both when using the joysticks and when using the keyboard only.

I've just been playing for a hour or so and lookspring/centerview were working perfectly, heh, so I couldn't do any testing.... This is difficult for me to pin down, but I'll keep watching for it.

And like I mentioned, the other player on FvF (who I think uses Mark V on linux) mentioned the same problem, I think.

I do note that if I set +klook it behaves in the same way as the issue I am experiencing (no lookspring when moving with joystick, centerview doesn't work, but force_centerview still works), with the difference that my keyboard movement keys then look up and down, of course. Setting +mlook, on the other hand, does not replicate the behavior.

I'm sure I'm not normally setting +klook when I have the issue, but next time I experience it, I will try forcing -klook to see what happens. 
 
Record a demo while you are playing. When/if it happens, press TAB to see the level time and write it down.

Then upload the demo somewhere and tell me where in the demo. I might be able to develop a theory based on what is going on when it happens. 
This Bug Is A Sneaky Bastard 
Not sure a demo would reveal anything.... I hadn't been experiencing the issue the last few times I played, but then it struck again tonight, so I started playing around to see if I could narrow anything down.

Well, first I hypothesized that the joysticks could be detecting a tiny amount of drift from the center position -- not enough to trigger movement, but enough so that it thinks I am in the process looking up/down so it prevents centerview from working....

But then I turned off the bluetooth gamepad (while the game was still running) and used the keyboard only, and the issue didn't go away.

What I noticed is that tapping a "centerview" key does work, but with a delay. Generally between 10-30 second after I tap the key (while standing completely still) my view will be centered.

Just running around (which would normally trigger lookspring) does not work, even after a delay. But running around after tapping the key does work after a delay.

And I see a difference between centerview and force_centerview -- the former method "animates" the view so that the screen *moves* back into the centered position whereas force_centerview just snaps it to center instantly (which I don't like in terms of gameplay experience).


Then when I exited the level and started the next map, my lookspring and centerview were functioning correctly. Hm, again noting that my gamepad was disconnected at this point.

And I was playing on the FvF server when this all occurred.


Hmmm, testing my hypothesis above, I can kind of replicate the issue by barely holding my joystick off center, upward. It's not enough to move my view (that I can tell) but it does prevent centerview from working.....

But again, I'm pretty sure I've experienced the issue before when only using the keyboard (gamepad never having been connected -- I'll try playing this way more to be certain)....

Yet that "joystick drift" thing would also account for the "delay" in centerview working. A drifting joystick analog value would tend to, over time, drift around slightly between say 0 to 0.9. When it drifted back to 0, the (I guess buffered?) centerview command would then activate....

Hm, but no, when I replicate the issue by holding the joystick off-center, then tap the centerview key, it does not then center my view when I release the joystick (unless I tap centerview again)... so it seems that joystick drift can't be the same issue....

This is a tricky one.



Additionally, here's another error that's been crashing me:

Assertion failure at SDL_GL_SwapWindow_REAL (C:/Dropbox/quakedroid_source_go/Android/app/jni/SDL2/src/video/SDL_video.c3506), triggered 1 time: 'window && window->magic==&_this->window_magic'

At least I think that's the same error I've gotten a few times before -- I never screenshotted it previously, but it looks the same. I wasn't doing any window switching or anything when it happened. Though I do have apps running in the background, and one that displays network traffic in an overlay near the android softkeys. 
QuakeDroid Major Update 
Download: QuakeDroid GL - skybox/fog/etc | QuakeDroid WinQuake

0) In addition to supporting native "Works with Android" controllers, also supports at a minimum the wireless Xbox One Controller S (white standard Xbox controller).

1) Big Sepulcher support (polarite/qmaster)
2) Brassbite Kindle issue resolved (brassbite)
3) Multiplayer save/load in menu (qmaster)
4) Texture mode works (mh, dumptruck_ds)
5) Forced disconnect console input (qmaster)
6) Cache_LRU issue solved (gunter, dumptruck_ds)
7) Optional "joy_" prefix for controller keys (gunter)
8) Uses more conventional landscape (dumptruck_ds, amongst others)
9) Bluetooth keyboard connect/disconnect no longer restarts QuakeDroid
10) More optimized builds = faster.
11) Many quality control enhancements for OpenGL build.

Thanks to everyone who provided feedback to help get QuakeDroid more refined!

QuakeDroid will continue to evolve ... 
Touch To Quit Is Now Broken, FYI 
 
 
More from the "Gunter tries weird things that nobody would ever do" department: If I run the Win version then go to Preferences and try to alter the Autoscale value which says "GL ONLY" (it doesn't change, obviously), then I close it and run the GL version, Autoscale will be set to "Forced Off" (so all the text will be tiny).

I see that Win has a Gamma adjustment in addition to Contrast, but the GL only has a Contrast adjustment.... I don't like using Contrast because, even though it makes the world look nice and bright and vivid, it washes out fullbright textures and they lose their subtle colors (like the blue streaks in lightning bolts totally disappear, and torches look bad). I know this is an issue I've reported for Mark V in the past (with screenshots). Is there no other way to adjust brightness in the GL version?


I know control tweaking will be worked on later, but ANY input from a physical keyboard should disable the onscreen control overlay, not just toggling the console with the `/~ key on the keyboard. Like when I use the keyboard to go through the menus and start a new game, I get the touch overlays. Additionally, I have bound ALT to toggleconsole, and using that does not remove the overlays.
And any touching of the screen should restore the onscreen controls.... 
@qmaster/gunter 
@qmaster - QuakeDroid GL updated has been updated and should resolve the bug you reported. Must be some sort of bug in the SDL2 library.

@gunter - I'll add a brightness slider bar. Was on my list initially. I agree, I just kind of ran out of steam trying to package so much in a single update.

Should have the brightness slider bar added later today. 
 
I'm glad the FPS text (etc.) can be scaled now, but since it it essentially part of the HUD, it should be linked to scr_sbarscale rather than scr_conscale (i.e., it should be the same size as the clock digits in the status bar). 
 
It's on the same row as messages like "You got the silver key!"

(LEFT Console print) (scr_showfps counter)

I think it would look strange if print on the same row were of different size. The status bar is far, far from either of the above.

But yeah, possibility of microtext gone! Yay!

/Anyway, those were my thoughts. 
 
Looks more like its 2.5 lines down from where messages appear:

(Also activated scr_showpos for the screenshot)
https://imgur.com/kCl8x3n

Which is a good place for it to be... But I still say it should be the size of the clock in the status bar rather than matching the size of the message text (it's too large).

Would making it smaller look more strange than this already does? I think it would end up looking less jumbled because you would automatically mentally differentiate the text of a different size as not being part of the game messages. 
 
You are asking me to fine-tune based on the appearance a very specific resolution and console size.

The reality is that scr_showpos is going to occasionally bump heads with something when the font is large and the screen real estate is small.

On the plus side, scr_showpos is nice to have available (do you play with it on? It's just developer tool. Is there a reason to with it on? I'm curious.) 
 
Also, I'm curious why you don't use the centered deathmatch statusbar feature? Yeah, I know your screenshot is original, original Quake status bar and I get having a preference for that.

/Regretable 2x post instead of including that above :( 
 
Actually this is not the case of a very specific resolution and console size -- it's the built-in "Autoscale Medium" option, which will probably appear identical in every resolution(?). At least it looks virtually identical on my XP Netbook as it does in the Android screenshot (see first image):

https://imgur.com/a/yB6j1YT

The first image also demonstrates why I use the Quake Default status bar position -- it allows player names to be displayed to the right of the status bar. Having the status bar in the center (single-player style) does not allow this (which is, of course, unnecessary in single-player), so you lose some information when playing online.
Honestly, this is one of those little niggles I have where you changed a Quake Default which causes a slight determent to functionality (the conveyance of some information). I even mentioned this on the old Mark V page, in #1110, hah: "Why did the HUD move to the center (single-player style) instead of moving to the left edge (deathmatch/proquake style) like it used to, so you can also display some player names in the extra space...."

At least in this case there is a clear menu option to return to the Quake Default value (so I haven't chosen to complain loudly about this "feature" ;). But I do feel the Quake Default should be the Default for Mark V as well -- the engine should start users out at the defaults, and allow them to tweak from that starting point, according to their taste. You've changed the default based on your own tastes....

Though on my Android device, the screen space doesn't automatically allow room for the player names at the "Auto Medium" setting, so I will have to tweak the scale manually to make room (the names don't appear if there isn't room based on resolution, so they weren't in my Android screenshot).


Back to the FPS text. As the 2nd screenshot shows, it used to be teeny-tiny, which was acceptable on a laptop screen. But you can see it's not an issue having text on the same rows of different size. However, both "too small" and "too large" are not good. Currently it's "too large." I accept that it will sometimes bump heads with other screen text, but that problem can be mitigated by making the text a bit smaller in this case.

I originally thought just linking the FPS (and POS) text scale to the status bar scale would be better (the clock text is a reasonable size -- and I wanted to be able to scale FPS separately from the other screen text), but you mentioning that the showpos text was "developer info" gives me another thought...

You should have a separate scr_ something scale variable for the FPS, POS, and Texture Pointer text (Texture Pointer text also suffers from being teeny tiny in Android). I'm not sure if there are any other onscreen texts that fit into this "information" category. But this would allow us to set a reasonable size for all this on-screen info text, no matter what resolution, without messing with the scale of other game elements. This would be ideal, I think. scr_infoscale? scr_infotextscale?


And yeah, I do normally run (when I play in Mark V) with scr_showpos ON (along with showfps). Why? I like having access to lots of information (like those deathmatch player names). Always being able to see the FPS helps me determine what things greatly affect my FPS, which allows me to tweak my settings to strike a balance between "looking nice" and "performance." "Performance" may not be an issue for people with powerful computers, but I'm still using my XP Netbook (and now Android) so it's important to be able to squeeze out better performance. For example, seeing my FPS lets me see how badly Mirrors harm my FPS! (by the way, Mirrors should be Defaulted OFF, as in standard GL Quake, since it's an optional visual enhancement that greatly affects performance ;) and there's not even an easy menu option to return to Default in this case...).

As to why I keep scr_showpos activated, that's another case of "Gunter doing unusual things in FvF that most people would never think of...." In FvF, you get more bonus points at the end of a level if you have killed 100% of the monsters. So the players usually scour the levels to find every last one. I have an admin command that will locate all the remaining monsters and print their coordinates on screen (sometimes they get stuck in walls or we just can't find the last few monsters on a large map). Before Mark V had the showpos ability, I programmed in a way for players to check their own location coordinates when using the info [ key built into FvF. Knowing your location and the monster location helps you find your way to those last few hiding monsters. But now I just tell people to use "Quake GPS" with the scr_showpos feature, which is much better than having to press an info key repeatedly. So yeah, I know for a fact that me and other FvF players have used your scr_showfps feature as a part of our actual gameplay, to enhance our game :D 
 
... I meant, "I know for a fact that me and other FvF players have used your scr_showPOS feature as a part of our actual gameplay, to enhance our game"

Made it all the way to the end of that long post and typoed the final thought!

Now that's regrettable ;) 
 
4) Texture mode works (mh, dumptruck_ds)

Confirmed; everything looks nice and crunchy now.

With the menus up, the square "touch" regions overlap the menu graphics. This is normally not noticeable, but is very much so in e.g. the Options menu. This is a visual glitch rather than a functional issue, but if you're going for the extra layer of polish, IMO you should be fixing it.

When running a demo, touching the screen anywhere should bring up the menu. This removes one barrier to entry for new players, and is also consistent with stock Quake's "during demo playback, most keys bring up the main menu": https://github.com/id-Software/Quake/blob/master/WinQuake/keys.c#L685 
@mh 
The any touch while start demos = console slipped through the cracks. I'll be addressing that hopefully today.

I hear you and agree about the options occasionally overlapping with the other UI controls.

I've been focusing a bit on function over form at the moment to try to thin my todo list way down. 
 
Using GL 1.98, still crashing with: Cache_MakeLRU: active link.

Though my player seems to disconnect right away when this happens, when before he would stick on the server as a disconnected player for a while.... 
 
Lest we forget, Quake's cache memory exists because it needed to run on a P60 with 8MB of RAM running an OS with no virtual memory.

That's why it got a caching system that kept stuff in memory between map changes (for faster reuse), but was able to evict stuff from memory at any point in time too (in case memory ran out), as well as on-demand load previously-evicted stuff (in case it was needed again).

That's also why as soon as ID moved away from those constraints they got rid of the caching system. 
 
@mh - Yeah, I have been looking around your cache system code within the last several minutes.

I suspect SDL2 on Android is hostile towards the Quake sound system or at least feature incomplete compared to SDL2 on Windows. 
 
It's been a while but IIRC getting rid of the cache system for sound is a little more work than for MDLs. Probably the least intrusive way is to just replace it with a malloc, but if you want runtime game changing that's not going to play nice. Look at Quake II's sound loading code as well; it's instructive to try port that to stock WinQuake as it has better implementations of a lot of this stuff, but yet is not too wildly different. That should then set you up nicely for implementing similar in your own engine. 
 
It's been a while but IIRC getting rid of the cache system for sound is a little more work than for MDLs. Probably the least intrusive way is to just replace it with a malloc, but if you want runtime game changing that's not going to play nice. Look at Quake II's sound loading code as well; it's instructive to try port that to stock WinQuake as it has better implementations of a lot of this stuff, but yet is not too wildly different. That should then set you up nicely for implementing similar in your own engine. 
 
It's been a while but IIRC getting rid of the cache system for sound is a little more work than for MDLs. Probably the least intrusive way is to just replace it with a malloc, but if you want runtime game changing that's not going to play nice. Look at Quake II's sound loading code as well; it's instructive to try port that to stock WinQuake as it has better implementations of a lot of this stuff, but yet is not too wildly different. That should then set you up nicely for implementing similar in your own engine. 
QuakeDroid Update 
Download: QuakeDroid GL - skybox/fog/etc

1) Gamma slider now available (gunter)
2) Tap during demo brings up menu (mh, qmaster)
3) Possibly exit hang fixed (qmaster)

In the future, I'm going to rewrite the cache system to work around gunter post #242.

The gamma system is texture gamma, so if after releasing the slider it takes a moment for it to apply the gamma -- that is expected. It waits 0.35 seconds after you stop adjusting to apply it.

In the future, may put "Applying gamma ..." in the middle of the screen when it is doing that. 
 
Hm, in the Preferences you can change the aim assist to "Off" or "Quake Default." How about "Always On," meaning that Quake's traditional keyboard vertical aim assist would function regardless of if the server has disabled it....

Servers disable it because mouse aimers hate it. It actually makes it harder to aim accurately. But keyboarders could still really use it...

And yeah, I know, having it be client-side like that starts to sound like an aim bot, but I re-iterate I'm only talking about Quake's standard sv_aim feature for keyboarders, which, for the most part, just messes you up in deathmatch, but can really help keyboarders in online coop (I have been testing Quakedroid with keyboard only; aiming up and down is difficult!). 
 
I don't think it's going to be easy to move sv_aim to client-side - have you actually looked at how it's used, so that you can understand what you're asking for?

The sv_aim cvar is actually only used by QC; to be more specific, the QC "aim" function, which calls into the C code. There is no other entrypoint for use of sv_aim.

Rather than making it client-side, a more useful approach might be to have each player use their own version of sv_aim, so that rather than one sv_aim cvar there are 16 of them. That might work. 
 
Then I suppose it would have be basically a client-side aimbot that only mimicked sv_aim behavior... which is probably beyond the scope of what Baker would want to do for QuakeDroid....

Of course, touch-aiming allows easy vertical aiming, but currently touch-aiming is disabled when the keyboard is being used. 
Esoteric Request 
Who the hell plays with only a keyboard? Quake is the grandfather or mouse look games. I'd like Baker to spend his time on meaningful code. 
And 
I should add, I am aware we're talking about QuakeDroid. But the number of ppl who will play this I general is small. The subset of ppl who will play with a controller is smaller. The number of ppl who will play with keyboard only has to be nearly non-existent. 
Cheats! 
ignoring keyboards, autoaim is still fairly important for gamepads too.
at its most basic, all it'd need to do is to reduce non-mouse sensitivity while the crosshair is over entities flagged with U_NOLERP (aka: U_STEP), or something (the other option is to network an additional takedamage==AIM flag).

Regarding keyboard users, the view already auto-pitches according to whatever slope the player is standing on (assuming mlook is off). Pitching it towards enemies too might not be too unreasonable as sv_aim basically does exactly this already.
Note that this could actually be done fully serverside inside SV_SetIdealPitch. Keyboard users would then auto-pitch while mouse users wouldn't even notice, both would be catered to without adding any new settings - but what kind of weirdo still favours keyboard-only?!?

The other option is to add some extra userinfo setting(like name/colours) to control sv_aim on a per-client basis, but personally I'd rather the actual viewangles changed instead of just the weapons. 
 
For reference, in QuakeWorld if the server had autoaim set, you could opt out of that by setting "noaim 1" in your client. 
Kindle Working 
Yeah, so thanks for fixing that. 
 
Tried it on a Pixel 2 just now. No joy so far...

On launching I get this message: http://www.eclecticmenagerie.com/jl/temp/msg1.png

Which then leads to: http://www.eclecticmenagerie.com/jl/temp/msg1.png

I tried rebooting the phone, didn't help.

Then I tried manually creating and populating the Quake directory.

Made the directory here: http://www.eclecticmenagerie.com/jl/temp/storage.png

Put pak files in it like so: http://www.eclecticmenagerie.com/jl/temp/quakedir.png

Same result when trying to run the app.

Was just curious, so I'm not raging at the sky here, but if there's anything you want me to do to help debug this let me know. 
 
Ah duh, it needs an id1 subfolder. For some reason I thought I saw that this app was doing that differently. 
@brassbite, @johhny 
@brassbite: Awesome, thanks for the confirmation!

@johnny: Did you get it to work? I'm thinking you did. I'm not sure why it would work differently on that phone vs. all the other phones the various others have tried, but yeah, I care of course! 
 
Yup works now. Didn't auto-download pak0.pak, but worked when I put the paks in. 
@gunter 
Yeah ... mh and Spike's comments.

I don't want to add "bot-like" behavior and cannot control what a server uses for settings or QuakeC. 
 
Ok, here is a demo that shows the weird centerview behavior near the end. I don't know how long the whole demo is, but it starts out in e4m7, when I reconnected with the software version because the hardware version had just crashed with that cache error. Centerview kept working fine, until we got to e1m3 at about 18 minutes in, right as we were about to exit. But around 25 minutes into e1m3 there are some good examples of me testing it and saying when I was pressing the button, then I'd wait, and then my view would be centered like 15 seconds later without me touching anything. I'm not positive I was tapping the correct button a few times before that when it didn't seem to be working at all (small android keyboard) but the other guy on the server experienced the same issue at the same time I did.

http://fvfonline.com/centerview_demo.zip 
 
Oh yeah, additionally, I find that gl_overbright 0 causes things like doors and ammo boxes to... uh... get extremely blurry to the point where it looks like they are textureless. 
 
Demo acquired.

saying when I was pressing the button

Excellent!

This one has my curiosity. I don't know how long it will take to develop some sort of plan, but an interesting bug and what should be enough evidence to trap it, is kind of like a 4D Rubik's cube. 
 
With pq_moveup 1 set, if you go in the water (I was in waist-deep) and tap jump, you just keep furiously bobbing even after you release jump. It only stops if you actually tap a +moveup key.


In android, r_bloom 1 causes a huge black square to appear and take up almost half my screen. Yeah, I know: experimental feature in development?


gl_flashblend 1 is causing many things to appear with a blue lightball instead of orange.... Watch the start demo and see the ogres and scrags glowing blue.


Tapping the power button on android (normally this would cause the screen to go to sleep) kills QuakeDroid and HARD NUKES all configs. It even erased my name, colors, and social security number. All default controls were set to ??? (nothing), and I had to delete the config.cfg file to even get those back.


I should start holding all my bug reports for ransom.... "Deliver OGG support to the dumpster outside of the Slipgate Complex, or you'll never see your precious bugs again!!" >:D 
 
:F

...

Uhhh, In the Mark V thread, Baker said:

Gunter, I just want to point out that it is impossible to play ogg on Android or an iPhone (without unacceptably chewing up metric shit tons of CPU -- hence the frames per second would be absolute trash --- because it is an obscure format and hence does not have hardware decoding in the processor)

Soooo, I just happened to be browsing the File Explorer on my Android device, and in the "Recent" section, imagine my surprise when I found (because I had been adjusting my alert sound): "hangouts_message.ogg"

I tap that and it opens right up in a Google Play Music popup right there on my screen....

So... yeah... it seems Android is FULLY CAPABLE OF PLAYING OGG FORMAT, and at least one Google app includes sound effects in OGG format....

...

Just Saying....


I guess it remains to be seen if it would actually affect the frame rate, but it seems that QuakeDroid does not yet include any music support anyway -- at least I can't get it to play the MP3s.

Though with Google having OGG support built in and used in some of its major apps on Android... I'd suspect it would not be a CPU-killing format on Android... otherwise... why did Google chose to use such an "obscure" format? 
Since This Is A Good Place For Quake For Android Questions.... 
Quake For Android [EDIT]
Posted by Reyond on 2018/05/29 21:29:46
Hello. I have a question about running my quake mod on android devices. Of course, I can launch quake on android using qi4a port. After that I can replace original ID1 folder with my one.

But what should I do if I decide to distribute my game? How can I add my quake mod to Google play? Is it possible to make .apk file with my mod?


#1 posted by Spike on 2018/05/29 22:01:04 spam
Depends on the engine as to whether it already works. I implemented it into FTE, where it was really handy for touchscreen widgets etc, so maybe it'll work in qi4a(aka dp) already - check the path command to see.

apks and pk3s are basically the same thing so the bulk of the code is already there. Just remember that if you're nesting pk3s or paks inside an apk then be sure to NOT use compression when adding that file to your apk, otherwise seeking gets expensive. This is no great loss - other files can still be compressed, and any files inside the pk3 will still be compressed, just avoid paks).

#2 posted by Reyond on 2018/05/29 23:47:38 spam
Thanks for respond! I will try to do that with Qi4a. However, fte engine is my favorite quake-based engine but it has complicated and not really handy controls. I would like to use fte if it had handy control system. For instance I like how it is made in quake touch

#3 posted by Reyond on 2018/05/30 02:21:40 spam
Also, in FTE port movement buttons and rotating does not work at one time.

#4 posted by anonymous user on 2018/05/30 04:42:05 spam
"QI4A is broken for good I'm afraid. I know this because I had to fix the issue it has in order for QVR (Quake VR) to work correctly. Basically the problem is Android 5 introduced some security checking on calls to snprintf, which means a null string is returned if it detects invalid characters in the input string. As Darkplaces uses certain characters in its netcomms code, it is failing on starting the game on Android 5 and above and is unable to go any further." 
 
So, I acquired a USB OTG cable from ebay for under $1 (great option as long as you don't mind ordering directly from China and waiting weeks for it to arrive... and I'm a cheapo who hasn't upgraded his WinXP netbook, so that works for me!).

I hooked up a USB mouse, in an attempt to make my teeny tiny Quake device ( http://www.fvfonline.com/forum/viewtopic.php?f=4&t=3810 ) as much like a teeny tiny PC as possible.

Well, mouse control obviously hasn't been considered in QuakeDroid, but it does function at a system level in Android (just like OGG decoding! XD ), and shows a mouse cursor on the screen.

It thinks my screen on QuakeDroid is rotated 90 degrees to the left though (same with the softkeys being along the right side of the screen), so when I move the mouse up, it moves left on the screen, moving the mouse right moves the cursor up, etc.

It acts as a "touch" rather than functioning as actual mouse1 or other mouse motions. If I hold down mouse1, then I can "drag" the screen around just like with touch aiming. Double-clicking makes it fire, and I can click through the menus (sideways...).

And if I use the mouse cursor to press any of the onscreen controls, it activates that control, just like a touch.

So actual mouse controls might be viable, assuming the mouse can be separated from touch controls. But I'm not sure how possible that is.... 
 
I have never seen any app for android, where the mouse does more than stay a cursor. Mouse is probably not supported in a way that would enable FPS Gaming.
Though in PUBG Mobile, there are people ”hacking“ which means Android emulator users from Windows using Keyboard and Mouse. Those are not supported by the actual game and are very unfair for other players. 
 
relative motion requires android 7.0, and even then I've no idea how to hide the cursor itself.
android just wasn't made for mice... 
 
Hm, there do seem to be some methods for distinguishing mouse input: https://stackoverflow.com/questions/12705117/handle-all-mouse-events-in-android

At the very least, perhaps the mouse could still operate the menus, if QuakeDroid and Android could agree about which direction was "up." 
Feature Request For Your Next Coding Season 
https://drive.google.com/file/d/1JS7NOUA9YEF-CObz6W26uApqjIwpV54s/view?usp=drivesdk

I'd like to play in ”full immersive“ mode, without the black Android navigation bar with the gray triangle, circle and square (see scr.)

Also, I am unable to play mp3s. My CD-Rips are mp3s at 256kbs, because I have enough space for good quality.
Do I need to lower the bitrate? Which bitrate is recommended? 192kps? Or even lower? 
 
How to compile quakedroid?
i got this error

executing external native build for ndkBuild 
Compiling QuakeDroid ... 
Assumes you have quakedroid_gl_source_20180508.rar downloaded ...

For source folder named:

C:/quakedroid_gl_source_20180508/Android_GLQuake

Open folder C:/quakedroid_gl_source_20180508/Android_GLQuake

// 1. "make_symlink.bat" may need admin privledges to create the symlink ...
make_symlink.bat (double click me ... you need only do this once to build folder reference)

// 2. Compile ...
gradle_assembleDebug.bat (double click me to compile!)

// 3. Install on your phone with USB cable connected otherwise having your phone with ADB development mode available
// Which may require drivers
adb_debug.bat (double click me me to install on your phone!)

Android development can be cruel and brutal.

Android NDK (C/C++ code like QuakeDroid) is several times as cruel, as Android is geared towards Java and support for C/C++ code is awkward.

It is best if you do several Android tutorials before stepping on to this playing field to get your phone setup right and get a handle on the basics!

Finding adb drivers for your phone might be a challenge or it may go easy ... for my phone finding the drivers was moderately difficult and it was a minor nightmare finding them for my phone model.

Every phone has a different manufacturer and tons of models, etc.

ericw compiled without guidance, so I think I did a pretty solid job making it as easy to compile as possible.

May fortune ever be in your favor! 
 
I found the problem,that was whitespace in Program Files (x86),dumb error:)

another problem in
C:\quakedroid_gl_source_20180508\SDK\Core\core_sdl.h
Error:(47, 19) SDL.h: No such file or directory 
 
SDL.h: No such file or directory

See #2 above "make_symlink.bat (double click me ... you need only do this once to build folder reference)" 
 
I tried,its show this:

C:\Windows\system32>rem cd "C:\androidprojects\SDL\app\src\main\jni"

C:\Windows\system32>rem we are in C:\Dropbox\quakedroid_source_20180401_controllerus_functional2\SDK\SDL2-2.0.8\android-project

C:\Windows\system32>rem need to nav to app\src\main\jni

C:\Windows\system32>rem sym to here C:\Dropbox\quakedroid_source_20180401_controllerus_functional2\SDK\SDL2-2.0.8

C:\Windows\system32>rem Kill the fake folder

C:\Windows\system32>rmdir /s /q app\jni\SDL2
The system can not find the path specified.

C:\Windows\system32>cd app\jni
The system can not find the path specified. 
 
Forget about all this:)
just done that commands in cmd

got apk:)
Uploading file
local path: C:\quakedroid_gl_source_20180508\Android_GLQuake\app\build\outputs\apk\QuakeDroid-GL-debug.apk 
Issues With Arcane Dimensions 
I tried to run AD in this, used the command txt file to select -game ad, and it loads the menu correctly, but touch controls no longer work at that point. Is this a known bug? 
@arfink - AFAIK Should Work (screenshot) @brassbite/@gutner 
To the best of my knowledge, it worked for me during testing ...

AD 1.5 QuakeDroid screenshot

I mostly only checked if it loaded, walked around the map and admired the view and then moved on to the next thing on my list when I was testing.

You might uninstall AD and then reinstall it -- maybe you have a file that only partially copied or something? If you continue to have the problem after a delete AD15 and then reinstall AD15 and especially if others say they do, I'll add it to the list of items to investigate when I code next which is probably around Christmas.

@brassbite - Didn't get around to adding the soundtrack support to QuakeDroid because I ran out of time -- every time I was trying to do it someone discovered something during testing that needed immediately attention.

So adding soundtrack support in is #2 or #3 on the list for when I code again around Christmas. 
 
I was using 1.7 fwiw. I can try with 1.5. 
 
Oh yeah, and it might be an AD 1.7 thing anyway since the mouse driven menu from regular ol PC Mark V also doesn't work with 1.7 either. 
 
Just tried AD 1.7 and then 1.71. Not able to replicate your issue. Mouse driven menu works fine. I also opened AD's 1.71 quake.rc file to see if it contained something unusual ... it didn't.

Obviously you have something going on, but I wasn't able to cause anything unusual to happen.

/Delete config.cfg and autoexec.cfg? 
@arfink 
Replicated your issue.

Sometimes when the config.cfg is being written, for reasons I don't understand the config file gets truncated and it doesn't write the whole thing. Must be some sort of "Android NDK thing".

Delete your config in ad folder.

When I do an update next around Christmas either I'll do some research and find out why Android NDK may sometimes write incomplete files or have QuakeDroid ignore an incomplete config by writing a checksum into the config header.

Android is known to arbitrarily terminate applications whenever it likes, which means verifying the file wrote completely wouldn't work if that is what is going on.

But one way or another, when I do an update around Christmas, I'll make this problem impossible. (Especially since it is very annoying.)

/Excellent bug report! 
 
I deleted config files in AD and id1, as well as autoexec, and it didn't seem to help. I'll putz around with some other stuff too. 
 
Btw, I did want to say, despite my issues with AD, everything else I've tried has worked amazing. I'm going to be getting a GPD XD Plus this week and I'll try it on that as well. I suspect that will be an excellent match. 
 
And my phone that I've been testing on is a Lenovo Moto e4. 
Touchstick Controls? 
Any chance you've messed with adding Touchstick style controls (like in *cough* Minecraft or PUBG), and the ability to hold shoot down and then still look at the same time. 
 
When I work on stuff again around Christmas, I'm going to hit up controls more.

Never forgot about your input on that, it just kept getting bumped by [insert bug report] or [insert usability issue]. 
Rotated Display On GPD XD+ 
I just got my GPD XD+ today, and while QuakeDroid seems to work really great, there's a major issue: the display is turned 90 degrees, and I can't seem to figure out how to fix that. Any ideas? 
 
Do you mean upside down?

Or do you mean it renders as a tall screen like this picture
 
Yes, tall and narrow. No idea why though, it's really weird. But the controllers face the right way iykwim 
 
In Menu->Options->Video Mode, what resolution does it say?

I agree this is major issue, so I will try to do an update Sunday to solve your issue if time will allow me to do it.

Android is really diverse in devices, versions and configuration. 
 
It lists my res as 720x1280. Also noticed that sometimes the sound randomly doesn't work, but closing and reopening a couple times brings sound back magically. 
@arfink 
I have the new "portrait-verify" version done that I hope will resolve your.

I'll be uploading it in the next 24 hours after I double check some things tomorrow.

Since I don't have the issue myself, you are the only one I can think of that can verify it solves your issue. 
 
>>Also noticed that sometimes the sound randomly doesn't work

i got this issue too 
 
I'll keep an eye out for your update. Looking forward to trying it out. 
@arfink 
QuakeDroid GL Orientation Detect Fix:

Download: Android APK

I think it should work. But coding for a situation you cannot duplicate is never a sure thing.

Let me know! 
 
I'm happy to report that your fix works great on my 2018 model GPD XD Plus. For other GPD owners who care, I suggest setting the gamepad touch mapping off (push the gamepad button and push reset) and then use the config GUI from GPD to select Xbox control emulation. Works great! 
 
I am glad it solved your issue. 
 
https://youtu.be/Fdh3Gd_5eHk

Well, here's proof it worked. Thanks again Baker! 
Possible Feature 
Some apps appropriate the volume buttons for their own purposes (example: naked browser, which can be set so that it navigates through tabs). Such buttons could be used for weapon switching. When doing this, the "next weapon" button could be done with, enabling more screen real estate.
Having this in a vc repo would enable us to contribute an ease your job too ;) 
Controls Are The Most Important For The Moment 
 
First | Previous | Next | Last
Post A Reply:
Name:
Title:
Body:
message
question
exclamation
idea
flame
noflame
error
skull
beer
moon
pent
rocket
sheep
pacman
pig
cheese
worldcraft
gauntlet
crate
pitfall
pimp
smile
cool
sad
frown
oi
yay
tongue
evil
wink
neutral
q1
q2
q3
ut
hl
cs
doom
dkt
serious
cube
Website copyright © 2002-2018 John Fitzgibbons. All posts are copyright their respective authors.