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).

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)
Cool Stuff Baker! 
Worked right away on my redmi note 3 (64-bit arm) and mi note2 (x86_64 tablet). It's software rendered!

Two control suggestions:
- if you hold the "move forward" touch area and tap the "jump" button, you stop moving forward.
- currently if you press the "move forward" onscreen button and move your finger to the "move back" area, without lifting it up, it keeps walking forward 
is it capable to handle sepulcher? 
There Goes My Weekend 
Excited to test this out 
For Those On Mobile Chrome 
I had to touch hold the links and open in a new tab or else it is just black. FYI. 
Works On My S7!! 
And Baker becomes an instant Quake legend. 
@ericw - I'll check that out. Never noticed during testing. This has been tested to death on the 2 phones available. (With tons and tons and tons of coop played). It has also been refined to death, but I can think of some more refinements.

@pulsar - I haven't had time to add Sepulcher support yet. But it is on my list. Now that I have this big project out (it's a relief, I hate have major modifications on my hard drive) --- I can focus on things like that.

@dumptruck_ds - I think you'll love it. ;-)
@QMaster - Thanks! My worst fear is that I have had only 2 devices available for testing and Android is a diverse ecosystem. 
I had to touch hold the links and open in a new tab or else it is just black. FYI.

Could you explain this in detail like I'm not sure what you mean? My mind is sapped from this project. 
I'm slightly surprised it worked on your x86_64 tablet. But also happy. I think I only compiled for ARM, so the x86_64 must translate somehow.

(I also did some hasty Googling and concluded x86/x86_64 Android was a rather rare beast -- but apparently I am wrong?). 
currently if you press the "move forward" onscreen button and move your finger to the "move back" area, without lifting it up, it keeps walking forward

That is proper operation.

When you touch the surface, the "down" checks what it hit. The button is the "owner". And that button remains down until that finger is lifted.

Windows does this as well.

If I went full overboard Minecraft style, I would make the virtual arrow keys a singular directional zone. I considered doing that, but want to hold off for now. 
Quake1 On An IPod Touch Would Be Insane! 
Rendering would be incredible on the Retina screen, running AD and all the modern maps.

Is there a chance that may happen? 
I did a lot of the QuakeDroid testing playing coop with -- an iPad!!!!

I am not going to rule out putting some sort of iPhone Quake on the Apple App Store.

I want to gauge the interest with this first.

There is, in fact, an iPhone build in the source that has not been tested on a Retina display (I used an iPad 2 for testing, I have some sort of iPad Air 3 (?) sitting 12 feet away (3 meters for non-USAians, haha) but I'd have to upgrade my XCode and deal with new fussiness.

My main concern is I care more about mappers and putting maps on an iPad/iPhone/iPod Touch is a real PITA.

The iPhone + friends offers a superior experience, has the better development environment, but from a mapper perspective the file system is locked down in a rather cruel way. Android, while perhaps protecting the users less, enables them to have enough convenience.

Anyway, I'll meditate on this in the coming weeks.

I want Quake everywhere, because mapping is an enlightening and enjoyable experience and Quake makes it happen. 
Webpage Woes 
On my S7 Edge, using Google Chrome mobile app. Touching links above goes to an all black webpage. Website says it's loaded and address at the top is correct but nothing shows on the page.

Touch and hold, popup with link options comes up, touch "open link in a new tab" and webpage loads fine i the new tab. Not sure why the links are being wierd. Oh well.

Now to see about finishing playing DM4Jam on my phone. Yay! 
The touch keyboard for entering your name in setup is AMAZING! 
I'll see if I can fix the links, after you post I tried Chrome on mobile it acted weird.

I thought after years and years of Acid-2 and Acid-3 tests and such, that the mobile Chrome would behave like the desktop Chrome, but stupidly it is not true. 
I should have the web site rendering for mobile Chrome resolved, let me know if it works properly for you. 
works fine on my huawei p10 plus (64bit)

good job! 
Cool! Android has many different models + different processors. 
QuakeDroid has been updated resolving the jump + forward bug ericw reported.

(The single changed source file is available in builds folder where the source code can be downloaded.) 
Sansung Galaxy J5 Prime 
Works with no issues so far. I'm away from my pc for the weekend but will get pak1 when I go home again. 
Sansung Galaxy J5 Prime 
Works with no issues so far. I'm away from my pc for the weekend but will get pak1 when I go home again. 
Working Fine On My Apollo Lite (Mediatek Helio X20) 
Wow, software rendering Quake on a phone! I suggest an option to hide the Android navigation bar, to use all the screen. 
Anyone Other Than Mgtroyas Seeing Android Navigation Bar? 

I suggest an option to hide the Android navigation bar, to use all the screen.

It is supposed to be fullscreen. It is on both the devices I have tested on.

I'll check some Android dev forums and see if I can find any info on that kind of issue in apps. 
@ OGkspAz 
Thanks for feedback. 
Is the Android navigation bar on your device a screen rendering of the (<--) (Home) (==) buttons that on other phones are physical buttons?

Like your device doesn't have physical buttons but they are instead rendered on the screen? 
This runs smooth as butter on my mediocre Samsung from 2015. I'll see how it fares on a Huawei once it gets finally shipped (fucking TNT).

I was going to say "tapping to shoot isn't too responsive" but then I remembered it's double tap, and it worked fine. A single tap would be more intuitive for the user though, I think?

Quitting doesn't actually shut down the app - it resets the game and minimizes the window.

All in all, a great Easter gift! 
Baker: If you want to be a big boy developer, you need to wear big boy developer pants and use proper version control software.

In 2018, putting the source code in a series of timestamped RAR archives is effectively making the application closed source.

Bite the bullet and put the code on a public repository so it can be actively grown and developed by others, who I guarantee have no patience for dealing with .rar files.

This has the potential to be actual gaming news, anything else than a public repository would be an embarrassment if it hits the headlines. 
Good Job! 
Works greate on my huawei acsend g630. I like the software rendering with lerping and other fixed, looks really good. I have one suggestio: make weapon icons clickable on hud to enable quick weapon switch 
Good Job! 
Works greate on my huawei acsend g630. I like the software rendering with lerping and other fixed, looks really good. I have one suggestio: make weapon icons clickable on hud to enable quick weapon switch 
Apologies For The Double Post Up Top 
A buddy of mine enquires about controller support possibly. Something called wamo pro. 
Bug Report 
If quake_command_line.txt is blank, the app crashes immediately on startup. 
If you go to the console using the options menu, then touch the console, you can type in commands using quake keyboard!!

This is beyond awesome! 
Bug Report 
When a level exceeds the limits, e.g. Aristical's Profaned Place has 82421 leafs which is greater than max 65535, then after it returns to console, the touch areas no longer work and neither does touching the menu. Only the escape triangle in the corner works to bring up the menu overlay.

How to reproduce: attempt to play Aristical's firat map for dm4jam. 
A Great Accomplishment 
Works well enough on my phone (LG v20), but I spent a good while trying to figure out how to open the menu (well, 30 seconds... but that's way too long!) when I first launched the game.
I'll admit that I barely play games on my phone, but really... having the controls be so hard to see (the pause/menu button especially) is really painful.

Also can report that the game doesn't support immersive mode, as others have mentioned. Forcing it through System UI Tuner works well enough, even if it is a bit impractical.

My god do I suck at aiming on a touchscreen... 
Feature Request 
After touching and holding down the shoot button, allow for mouselook to work as the touch moves around still. 
Bug Report 
Can't change resolution...feature? 
Notes On S7 Edge 
Folder location - perfect! Right out in the open, easy to find using My Files app.
Landscape by default - the phone still thinks it is in portrait mode...and doesn't care if I flip it sideways! This is great!! The top swipe-down menu is on the side then, but it is consistently so which is nice.
Resolution - stuck at 426x240 I think, says 2560x1440 x 6?. Old school though.
Touch works really well. No complaints there. Control scheme is very hard though. Multi-touch works fine, but it is like trying to play with keyboard and mouse except you only have one finger on each hand. Circle strafe is nigh on impossible. More than 2 projectile enemies at a time is rather difficult....makes me want to play on coop so when I die I come back...which takes me back to how I played it when I was 5 which is very I kinda like this in a way. 
Feature Request 
Add underscore button to console touch keyboard.

P.S. sorry for multiposting, bht each item feels distinct and I'm testing as I go. 
Feature Request. 
Record demos directly to .mp4? 
Yes, my phone has "software" navigation bar as it hasn't got any physical buttons.

Some apps effectively hide the bar, other don't, I suppose it's something the app has to request.

I can hide the bar with a xposed module, but for non-rooted phones there's usually no option to configure it on a per-app basis. 
Touch Issues On G4 Plus 
The demo works like a charm but menu won't show up when touching the screen. Brilliant work though and thank you. 
Feature Request... 
send SMS and make calls via quake 
Did you try touching the top left corner? There is a hard to see faint brown triangle touch button there. 
Ok I feel dumb now. Working superbly. Thanks a lot. 
Thanks! Shooting has to be a double tap, if it were single tap you can't drag look.

The traditional way to play Minecraft is to have your hands holding the screen and you use your right thumb as the mouse, drag looking on the screen.

svn/github/etc - At this time, I don't want the extra work of maintaining an a source depot. I have finite time. Plus the source code is not fully "cleaned up" everywhere because I spend most of my time writing very difficult features instead of going over it with a fine tooth comb finessing it. But maybe when I get the time in the future ... 
@qmaster - Re Blank Command Line 
Awesome catch! Thanks! I'll check it out. 
@mgtroyas, @negrostrike 
@@mgtroyas - Someone else beat me to it. It's "immersive mode" that I need to add the capability for.

@negrostrike - glad you figured it out. I tried to make the triangle subtle so it wasn't a distraction. 
@MilkeyWilkey (Status Bar Press!) 
make weapon icons clickable on hud to enable quick weapon switch

I considered doing that, but on a phone that is going to be quite small.

At this time, I decided instead to make it so if you click the HUD/Status bar it shows "Monsters 12/29 Secrets 0/3" (progress). 

I have a UI niggle: of the 3 touch areas on the right of the screen, I feel the FIRE button should be the center one, and the JUMP button should be the top one (because you jump or swim upward, and you fire a lot more than you jump). I tried customizing the controls through the menu, but even though it seems to accept the input, it doesn't actually change them.

And how about a tiny triangle in the top right corner for messagemode? Though when I manually enter messagemode in the console, the onscreen keyboad doesn't appear, and I'm stuck there looking at "say:" on the screen while inputs are disabled, except the menu triangle in the top left to esape messagemode.

And how about a touch area in the top center (or if you swipe down from the top center) to lower the console.

There could be two touch area for weapon cycling -- one to cycle forward, one to cycle back. They could fit next to each other. And maybe have it change to a weapon if you touch that weapon in your status bar.

If I sit and don't touch anything for a couple minutes my device turns off the screen, which causes quake to minimize and restart. It should be a simple matter to disable the android sleep thing when the app is running. But on sleeping, the app also shouldn't restart. Hm, though it looked like if I woke up the device right away, it went right back to Quake without resetting.... Two other times it did reset. 
@otp - "Quitting The App", @pritchard, @qmaster, @oGkspAz 
@otp Quitting doesn't actually shut down the app - it resets the game and minimizes the window.

It does quit on mine.

I'll do some checking around and see if I am quitting in the truly proper way that works on all phone models.

@pritchard - Yeah, if you haven't played mobile 3D games, it takes a few minutes to get the swing of it. I didn't want to make obtrusive controls or menu navs so I went for subtle over explicit.

@qmaster - Doesn't have "Sepulcher support" yet, so 65536 is the limit right now. But yeah, I'll check into what happens on a "Quake Error". Right now resolution changing isn't supported.

@qmaster (again) - re:console ... the console is the area where I would most like to improve the experience, but I'll have to meditate on that.

@oGkspAz - Thanks! It does have External BlueTooth Keyboard Support. At some point controller support would be nice to have. 
If I sit and don't touch anything for a couple minutes my device turns off the screen, which causes quake to minimize and restart.

Android silent shuts down and restarts apps sometimes, especially on sleep.

I am dependent on SDL2 handling of that (QuakeDroid uses SDL2 library to handle video and system interaction).

On my phone, when it sleeps --- when it resumes, I am back in the same place. However, I have seen what you describe about the restart. 
@onetruepurple - "gaming News" 
This has the potential to be actual gaming news, anything else than a public repository would be an embarrassment if it hits the headlines.

Well, you see my source code isn't refined or cleaned up. I expended all my time and energy getting the features to work and writing documentation to make it mapper friendly.

I agree with your sentiment about this being "Actual Gaming News" level -- thanks!

I was going for that level of quality. 
Plays flawlessly on my Motorola XT1575 Moto X Style (a.k.a. Moto X Plus in US).

2 issues: it "flips" to the opposite orientation when entering into landscape mode so I need to turn my phone "upside down" compared to other apps.

also upon Quit > Yes the app does not close on my phone either 
Quake1 On IOS? WOW! 
I can't believe there's a chance that in the near future, I could be playing Quake 1 and all its awesome custom maps on my iPod Touch!

Frankly, that would be an amazing jaw dropping experience!

Baker, you're the guy that is making this possible? You're a real life hero! 
"Quitting doesn't actually shut down the app - it resets the game and minimizes the window."

That sounds like standard Android behavior. When you "quit" an app, it still appears in the "recent apps" list, and that app will run again if you tap it in that list. Apps in that list are sometimes "paused" in the background, but other times they are only there because you recently ran them.

If you truly want to SERIOUSLY QUIT an app, you can swipe it out of the "recent apps" list, and then you won't see it any more. 
@dumptruck, @barnak 
@dumptruck - "flips to wrong landscape". Well at least it is rendering correctly. I'll have to meditate on that one. I thought that should not happen with the configuration I used.

+extra example of device where "Quit" doesn't close the app.

@barnak - The iPhone version is buildable in the source code, but only tested on one device (hasn't been tested on Retina, nor an iPhone X, nor IOS 10 let alone IOS 11) but the main issue is mapper friendliness -- loading maps and such isn't easy at all like an Android USB connection -- it is very hard and awkward. I'll think about over the coming weeks and we will go from there. 
I have two Android apps for audio that actually do quit entirely if it prompts for an exit. So Yes most apps to behave this way it should be expected that an app terminates completely if you run thru a prompt. not sure if there is a performance impact or not but anything that potentially drains battery should be at least tested. 
Bug Report 
{fence textures just show their ugly pink, no cutout. 
Bug Report 
Can't save a coop game 
@qmaster - QuakeDroid Can Save Co-op Games! But Menu Denies 
It will in a week or so, haha.

QuakeDroid can actually save co-op games, but the menu is wired like classic Quake to not save multiplayer games.

If you are desperate to save a co-op game, go to console and do "save mygame".

To load a co-op game, first have players connect and go to console and do "load mygame".

*Should* work.

I had to strike that from the initial release todo list due to lack of time.

I plan to make it user-friendly.

Alpha support in the software render is something I want but I have not been able to yet successfully implement (go figure).

I assume the server browser (MultiPlayer->Join Game->Local Games) is working ok for you?

/Nice catch on the underscore being needed in the on-screen keyboard. I went to great effort to try to make sure all the needed keys were there, but I clearly missed an important one! 
Bug Report 
Transparent water has wierd lines:

Um and screenshots are sideways lol 
I'll look into modifying the transparent water draw algorithm to reduce the likelihood of it looking like that.

It may just be bad luck of the draw with your device's screen resolution, but I'll check it out and see what I can do. 
Feedback On Right Side Control Order 
Gunter pointed out something I think does need changed.

Right side order (NOW):
"Change weapon"

But in order of usuability should be (???)

Right side order (SHOULD BE):
"Change weapon" (the least used of the 3)

How About 
A Doom-like weapon wheel in top right? 
Looks at screenshot of feature. That gives me some different thoughts on some nicer solutions. 
Mt preference is for

Change (possibly both directions: < change > Or instead of two buttons, have an area that reads the direction of your swipe -- swipe left or right to change weapons in that direction)

I find it more natural to stretch my thumb upward to hit a jump button. Bending my thumb downward is slightly less easy, so better suited for the less-used buttons.

I notice that if I press a button (like Attack) and slide my thumb to a different button (Jump), it acts as though Attack is still held down and it doesn't trigger a Jump. Prefferd functionality would be:

When finger slides out of Attack button zone, stop attacking, and when finger enters Jump button zone, jump.


Keep attacking even if finger slides out of Attack button zone, AND still Jump when finger enters Jump button zone.

Either of these behaviors would be preferable for the movement keys as well -- you could slide your finger back and forth across the move keys to alter your movement without having to puck your finger up off one button before you can press another.

Actually, with the layout of the move keys, only the first option would work -- the sidestep keys would need to be next to the Forward key instead of the Back key...

Probably a better option is to have a circle onscreen for a virtual joystick, and the movement is determined by your finger position within the circle. If you slide your finger to the top of the circle, you move forward. Bottom of the circle is move back. Left and right edges of the circle are sidestep. And you can move your finger to like the top right position of the circle to be moving forward + sidetep right at the same time, for example. This could just have virtual button triggers at certain points around the circle, or it could actually emulate an analog joystick allowing for movement at varying speeds. If you go outside the circle, then it would just continue your movement unless you lift your finger off the screen.

To enhance the "button" control method (without also having to touch the screen to aim, because you will be using the virtual Fire button), you could have the accelerometer control turning left and right, so you just tilt your device left and right (like holding a steering wheel) to turn left and right. The turning speed would be determined by how far you are tilting. 
Agree with Gunter, sliding finger from one touch zone to another should change button effect...EXCEPT FOR SHOOTING..which should let you continuously aim while shooting otherwise I need two fingers to do that.

Movement needs 4 zkmes added for combinations of wasd keys...wa, wd, as, and ad combos in a 9 square pattern. These could be invisible and only work on slide. 
Stupid phone...zlnes...argh i hat this...zones. 
Hey, that's a good idea: once you put your finger on the Fire button, any sliding you do with that finger should act as aiming, as long as you don't lift your finger (and you still keep shooting).

I've gotten a few crashes with Cache_MakeLRU: active link

I'm trying it out with a little bluetooth keyboard now, on -- where everyone else should be trying it, since it's coop and you can sit around and chat if you want while everyone else kills the monsters ;) 
Probably a better option is to have a circle onscreen for a virtual joystick, and the movement is determined by your finger position within the circle.
I'm not one to stare a solid mobile version of Quake in the mouth (so to speak) but since Gunter has brought it up:

If there was this virtual thumb stick scheme I would play this on my phone often as opposed to just testing this out and playing occasionally. The current style of control is too difficult to get used to to play for long stretches.

I agree that this code should be brought into a repository as well for those who'd like to assist in development. 
Oh yeah, forgot was I was going to say about bluetooth controls: when you detect input from a bluetooth keyboard (or gamepad - do those work? I'll find out later), you should remove the onscreen control overlay, because it's not being used.... If someone touches the screen, then you draw it again until you detect bluetooth input.

... and you really need to disable the android Sleep mode, heh... While I wtas typing this, my table fell asleep, and Quake go bye bye. 
Is there any way to add original soundtrack? 
I Had An Epiphany 
If I use 3 fingers on the left like I do on a keyboard, it's actully not bad. I still can't steer and shoot at the same time though. 
"Quitting" An Android Application Is Impossible

Android apps are not automatically unloaded even after the onDestroyed() callback, e.g. when they are in the destroyed lifecycle state. They will only be removed from memory if more recently started apps would require memory themselfes.

You cannot completely "exit" an Activity on Android (like on Windows or other OSes where exit() resp. return from main unloads the program from memory). Android will decide for itself whether and when to remove an Activity from memory.

Now I understand why I end up with an accumulation of several apps in the "Multitasking Screen" pic after I closed them.

The reason behind this design is the fast restart of applications (caching). 
@gunter, @dudeq - Bluetooth Keyboard Hide 
@dudeq - Not yet, but it'll be coming.

@gunter - I have seen that happen on rare, I also know how to fix it.

As far as detecting a Bluetooth Keyboard, I don't know that SDL2 provides a method for that, but I think what would work just as well is that ...

1) opening the menu with the keyboard causes the in-game controls to hide

2) opening the menu by touch would unhide the game controls

After all is quite possible to not want to use the keyboard for playing, just entering console commands.

This scheme would satisfy all preferences and not require a setting, so it would be real convenient. 
Getting Maps On Iphone 
What about using quaddicted? 

(Requires registered Quake and QuakeDroid doesn't check to see if registered vs. shareware)

In the console

1) type "install rapture"
2) type "game rapture"
3) Do Single Player->New Game

I have installed 6-7 mods with it -- things like (kinn_marcher, nihilore, rapture), but would prefer to test it more and think more about the structure on Android. Also johnny law provided me an example or 2 were unexpected file structure in a map jam confused the unpack a bit.

So "Should work, unsupported, use at own risk" because I want to exhaustively review it. 
@fifth - Oops You Said IPhone 
Yeah that isn't a problem on iPhone, but you can't really mess with your own Quake folder on a iPhone, like put map from your hard drive on it. 
I guess the only solution for mappers for iphone would be to design with a controller in mind and release as normal. 
Excellent Port, I Can Play AD (with Broken {alpha Textures) On My S8 
The controls leave something to be desired. As was said, it'd be nice if jump/attach were switched so attack is in a more naturally reachable position, maybe the ability to manually place the buttons.

Also the icons are a little faint, and the movement buttons are not very easy to use.

Any chance of a Quake-Touch type radius where on the left side is like a trackpad (like the aiming?)

As crappy as Q-touch is the controls are actually very natural and it's pretty easy to move around, whereas with this setup the individual buttons and binary movement make phone play much less enjoyable 
Here are my current thoughts on control options:

So you have possibly an onscreen graphic of a circle on both the left and right side of the screen. Left circle is movement, and right is aiming. Each circle would necessarily have a dead zone in the center, but as you move your finger around in the circle you would just measure the distance from the center and the direction of the line. These pretty much emulate analog joysticks. If you move your finger outside the circle it just reads as the maximum value which is the same as touching the edge of the circle, since you are noting the line from center to your finger position.

Ok, so left circle is move forward, back, left, right. Right circle behaves the same way for aim up, down, left, right. But if you double tap the right circle, you start firing and you keep firing as long as you don't lift your finger, and you can still aim using that circle while firing.

Just above the left movement circle there is a virtual Jump button, so that if you slide your finger up to it (outside the move circle) you keep moving forward and you jump.... These should probably also still be a virtual jump button above the right circle for tapping, because "jump while aiming up would not work well, but it could still be tappable if you aren't aiming.

Now you could get fancy, and not draw set cirle areas, but within a fairly large area on the left and right of the screen, you just detect the first place a touch occurs, and set that as the center of the circle (and then possibly draw it once a touch occurs). The movement controls would work the same as I described, just by measuring the distance and direction of the finger starting at that first touch point. When someone lifts their finger, you just forget the last touch start point and make a new one when they touch the screen again.

You may need a permanent jump tap button somewhere on the right to go with this scheme, but that button could also be dynamically relocated to just above the wherever the touch occurs and the circle is positioned when that happens.

The move circle could optionally respond to a double tap to toggle to walk mode, or to trigger a jump, or something else.

I also do think the weapons in the status bar do need to be touchable to select a gun (actually, to trigger impulse 1-9), abut if you swipe left or right along the weapon area, it will cycle weapons left or right. Touching the player face could activate messagemode. 
Any chance of a Quake-Touch type radius where on the left side is like a trackpad (like the aiming?)

Sure. I check that out and see the scheme there. 
I'm considering some of those kinds of concepts. I feel if I can just get the controls more tuned ... 
Any Possibility For Alpha Texture Support? 
AD works great aside from that 
I have something in the works ;-) Might take a few days or perhaps I'll be very lucky and it could go faster. 
QuakeDroid Updated 
New Version :Just Reinstall
(Will show 1.92 in console)


* Switched attack + change weapon position (everyone)
* Sepulcher support (pulsar)
* Underscore shows in on-screen keyboard (qmaster)
* Bluetooth keyboard use auto-hides in-game controls (gunter)
* Empty quake_command_line.txt doesn't hang. (qmaster)
* Water alpha vertical lines fixed (qmaster)

Looked into
* Immersive mode - Not seeing clear-cut SDL2 support in a stable SDL2 release. But will keep and eye on it.

Other issues/suggestions pointed out are on the list, I hope to get some more done in a new version in a few days.

Thanks for the feedback/suggestions/bug reports, Android is diverse in device variety and it has been greatly helpful! 
Hm, the onscreen control overlay doesn't seem to go away when I use my bluetooth keyboard(s). The overlay does vanish when I'm using messagemode though.


is not a good layout. Your default finger position is on Attack. Other buttons should be within one button of that finger position. With Attack all the way at the bottom, it's a large motion to get all the way up to that Change button. That's why I think it should be:


With thumb resting on or over the Attack button, it's easy to get to either Jump or Change.

So, it seems many mini bluetooth keyboards (like mine) have no Escape key. I can bind some other key to togglemenu, but it doesn't work like Escape, in that it won't cancel messagemode, for example. Luckily you have the little top-left triangle that acts just like an Escape key.

My little bluetooth keyboard has tougher problem though. Pressing Func+Up or Func+Down should give me PageUp or PageDown. But this keyboard is some weird generic thing (I have a different one that does work correctly in this regard), and instead it triggers Windows+Up and Windows+Down, so I can't scroll up and down in the console. So how about allowing me to swipe up and down in the console? A tap on the console should obviously trigger the onscreen keyboard, buy an up or down swipe could instead trigger PageUp/PageDown to scroll the console.

I also have a almost full-size Mircosoft bluetooth keyboard, and while it does have an Escape key, it doesn't even have Functionable PageUp/PageDown, yet it has Functionable Home/End.... So no console scrolling with this onn either. Though if I were going to use a large keyboard, I may as well just use my XP Netbook, heh. 
Looks like I needed to provide more detail.

Do you have a tidle/backquote key? That will trigger the console and cause the keyboard to hide.

Let me know.

Working on game controls come takes time, I did not have time to do anything with control. 
Oh, maybe we are talking about a different thing.

I had suggested that the onscreen control overlay be completely hidden in-game if a keyboard is being used.

Yeah, I can effectively use the tilde key and pull down the console -- the onscreen overlay doesn't show on top of that.

I'm wanting a way to hide the overlay during game play. Like if input is being detected, but no screen touches are being detected, that should indicate that someone is not using the touch screen controls, so the overlay can be hidden. 
Yeah, probably so but that thought didn't cross my mind at the time, haha.

So for now, press tilde and it will hide the touch controls. ESC to the menu will cause them to reappear.

Next time, I'll have any keypress hide the controls. 
Bugsmashing Feedback 
Underscore on console touch keyboard works great!
Empty command line file fix confirmed. (I like to keep it empty for vanilla.)

BUT water alpha no longer works. I tried different values of r_wateralpha but no luck.

Bug report:
When the player camera is looking too far up or too far down past about +/- 80 deg, the turn direction flips and rotates the view the opposite way. Expected:slide thumb right looks right, slide thumb left looks left. The wierd part is that it only seems to happen if I make one continuous thumb swipe that looks up/down and to the side in a sweeping thumb arc such that the view moves past a certain threshhold angle for pitch and only then does the yaw reverse. If I make quick single swipes it works correctly regardless of view pitch. 
Galaxy S9 
Very excited for this, but when I run it I get a blue screen tint to the screen as the opening demo plays. I can't access any menus at that point so the demo keeps playing with a blue tint to everything. I am testing with a Galaxy S9- any ideas? Thanks and congrats to Baker. 
Just to clarify: Can you open the menu? There's a small triangle on the upper left side of the screen that opens the menu.


One other control suggestion to think about: Double-tap forward to jump. I think this would be a very elegant option. When I release forward I still have a tiny bit of momentum. That gives me a little time to jump by double tapping. Even if you use the radial / virtual joystick control scheme I think this would work. Would eliminate the need for 3 buttons on the left side of screen. 
Meant to type "eliminate the need for 3 buttons of the right side of the screen down to 2" 
That's unfortunate. This was tested on a Galaxy Prime (64-bit) before release.

My only ideas are reboot the phone, make sure you aren't out of storage -- but that is probably not much help.

Sorry that it isn't working on your phone. 
re: water alpha ... are you sure? Type r_novis 1 in the console.

The looking down beyond your feet -- you can't look down more than all the ways nor can you look up more than all the way. That kind of behavior is baked into Quake on client side, server and input side. I know what you mean though.

@dumptruck - I'll be getting around to controls. The double tap to jump for instance sounds right. 
I don't know that this would help, but I think what I will do is make it so any tap opens the menu during the start demos.

I'm not sure that this will help with what you described.

I'll be doing another update in a few days. 
Blue Screen Tint 
I've seen something similar mentioned in the SDL bug tracker/forums, = not sure if it's relevant: 
Wierd, wateralpha is working now.

Looking up/down: the issue occurs before the pitch ever reaches full 90/-90. It is a matter of swipe right/left during up/down inverting once the pitch changes around 80 or so during the same swipe. Inverting = swipe left to look left actually stops turning left and starts turning right within the same continued touch if you look far enough up or down within that same continued touch.

Bug report: if a console command fails, e.g. map not found, the full screen console no longer registers the touch and does not bring up the touch keyboard. You have to start a new game before the console registers touch again. 
@ericw, @qmaster 
@ericw - Thanks for the link. According to that, it seems to imply that specifying the color format RGBA 565 might solve virto's tint problem.

SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);

@qmaster - Another great catch -- yeah, I'll check to make sure console forced up allows access to the on-screen keyboard in the next version. Quake thinks it is in the game, but it isn't. 
@Virto - Special Build For You Try 
QuakeDroid Virto Blue Screen Fix Attempt

If it works, ericw is your hero!

I attempted to locate matches to the symptoms of your problem but never would have found that link. 
Blue Screen Fix Worked! 
Just tried it- works perfectly now! Great work! 
Great! Glad to hear it! We're batting 1000% again.

My greatest fear on release was the diversity of the Android platform from models to Android versions to processors.

/Mega-thanks to ericw! It could have been weeks before I came across that kind of information! 
Sepulchre Support? 
I suppose your support implementation differs than Quakespasms, because I still can't play aristical's map in dm4jam because it is greater than 80000 verts. I haven't actually tested AD itself yet though. 
I didn't go full dynamic. I want to see if a minimal skinny implementation worked first. I'll go full dynamic next version so there is effectively no cap. 
Neither Mark V nor QuakeDroid can load Artisitical's map. We even put a "this map requires Quakespasm" warning in the dm4jam start menu before the teleporter to this level. 
I Know 
I just wanted to test it after Baker added sepulchre support to QuakeDroid, something MarkV doesn't have yet either.

I'm trying to get my Gunter badge for the month ;) 
Bug Report V2.0 
Just downloaded the new version this morning and reinstalled. It did update as the console now has an underscore.
I am still getting the lines on transparent water mentioned in posts #60 and #85.

Samsung J5 Prime still running Android 6.01 
Congrats On The Release! 
On my phone, the Huawei P9 lite Quakedroid works perfectly fine.
I wondered if my Kindle Fire HD tablet from 2012 could handle Quake, and the shareware downloaded perfectly fine, then it just got stuck on a white screen. Don't really bother about, only maybe. I bet you can find issues more important, I bet it will lag the hell out of the Kindle (1.2 Ghz Dual-Core, 1GB of total RAM) 
I'm glad it works well on your phone!

should run on any Android phone made in the last 5-6 years

For the 2012 Kindle, it might not have enough RAM or might be out of storage space. It could also be that the version of Android is too old. Also it is my understanding that Amazon rolled their own (outdated) Android especially on older Kindle Fire tablets.

Thanks for letting me know about the 2012 Kindle Fire. I think I know someone with one of those sitting around and I might be able to get ahold of it in a few weeks (at a minimum to satisfy my curiosity to see if I can get it to run).

You might be able to free up some space on it and still get it to work. 
I'm Fine On Storage 
Got at least 10GB of free space. Of the 1Gb RAM, it should still have 400 Mb free. Maybe. Just guessing, cause Amazon patched out the task-view. I can run a N64 Emulator though 
Yeah, sounds like you are fine on storage. My Android phone, storage is more of an issue (4 GB) and during testing I managed to run myself out of space a few times.

If you posted Quakeid1qconsole.log off your device folder pic via USB, I might be able to learn something useful about the crash.

(You usually need to restart the device first to see the file. Android uses MediaStore to keep track of files and rescans on boot, Quake doesn't have a good way to update MediaStore because it is a low-level native C application.)

1) You might try the APK for Virto I made in post #100 to see if that works. It tells the device the desired color format.

2) Seems from your description that video works (download flashes the screen, changing the shading as it downloads) and that download works.

Barring that, I have a friend of friend who I know had a 2012 Kindle Fire, but it won't be quick to get ahold of it. 
I'll have to play around. I'm hoping it isn't "luck of draw" depending on screen resolution. I modified the algo but apparently on some resolutions the draw stretches favoring certain columns more of liney look on the transparent water. 
I am pretty sure I have a 2012 Fire. Will confirm with you. This project is so cool I want to help out where possible. I can also test on other models. I have access to a Pixel and a 1st and 2nd gen Moto X. I'll report back. 
Could you check if your 2012 Fire has the problems that brassbite does? 
Yep. Will report back this evening. 
I Have An Old Fire Too 
Can't revall the year, 2013 maybe 2012. 
Unfortunately, my Kindle is from 2011 and gave the error: There is a problem parsing the package. Most likely the OS is way too old.

My wife has a much newer model. I will steal it and report back if I have any luck. 
Have A Log File 
And Another One 
This time I installed virto's build and got the same error 
Looking at the log, it appears the engine thinks everything loaded ok and it proceeds to start playing the demo.

Does it make sound in the background and just show a white screen while doing it?

Either way, I'll try to eventually get my hands on a 2012 Kindle Fire from a friend I know, just to satisfy my curiosity and see if I can get it to work. 
@Baker fantastic job, but would it be possible in the next release to rise The step left / right icons at the same level of the fwd icon. In my opinion this would lead to an increased playability. What do you think? 
I'm about 80% I know what's up with your Kindle and can fix it if it is playing the sound. I saw something in the log you posted that made me think.

@icaro - Thanks! I tried to make it very nice. Yeah, the controls need some tuning and it'll come. I've got a little bit of a queue at the moment. 
ICARO is right about the position of the move icons -- at least util a better control option comes along.

But while we're still using the current setup, I'll also mention, in addition to my previous preference for:


that the buttons along the right could be positioned like:

. . . . . . Jump
Change Attack

with the buttons grouped around the bottom right corner. That still puts all buttons close to the Attack button for easy access. 
Sorry, I'm A F K Until Friday Afternoon 
Away from Kindle

Have fun with other issues meanwhile 
Lol, Guess That Meams I'm AFK Too Until Saturday 
Feature Request 
When touching the hud bar at the bottom of the screen, still let the camera move with continuously held thumb swipe.

Have you been able to reproduce the camera reversing effect? 
@qmaster - I know what you mean about the "camera reversing", I haven't developed a plan to properly "clip the drag look" if someone attempts to look beyond where Quake will let them. And other one will be a yes. 
Hey, Baker! 
Good News! It's only a drawing bug! When I turned up the volume, I heard the familiar sounds of Romero blowing up the Zombies... 
Great! That's why I mentioned if it was playing sound.

The reason it is rendering white is your Kindle doesn't have an OpenGL extension allowing non-power of 2 textures.

When I had checked the source, I found I had commented out a couple of lines of code I wrote in the video section upsizing to a power of a 2 size. 
Doesn't Work On My Phone 
I'm getting the error: 'Not enough memory free; check disk space' but I have almost 2GB of free device space on the phone. It's a Galaxy Note 3.

Anyone have any ideas? I'm mot very good at reading code but that error message comes from here:

Could this be related to RAM instead? The phone only has 1GB of memory. 
It's RAM. It is also asking for more RAM than it needs. I'll reduce the RAM it asks for in the next release which I am hoping for Sunday.

If you don't want to wait, you could alter the command line how to set command line just putting "-heapsize 256000" without the quotes in the quake_command_line.txt or if that still didn't work, putting "-heapsize 192000" 
I've tested on some retired phones. What info would be most helpful? Model numbers? Frame rates? Happy to take some time and collate data for you. They are mostly older Motorola phones but all shapes and sizes.

I horde all our older phones for some reason. 
Ah! Thanks dude! Had a feeling a simple command line would fix it but didn't know how to do access it. Heapsize 256000 worked like a charm.

Btw, are the controls setup set in stone? Reason why I ask is coz I played almost the entire Quake II campaign on my Android phone ( ) and those controls felt much better and extremely smooth compared to the ones you chose. I'm mostly referring to the movement + mouselook. Also, they were customizeable. Maybe something to look into!

Great port btw. Thanks for making it! 
I'll work on the controls until everyone here is satisfied. I'll check out the QII4A link you provided.

I knew going into this that the controls would be the #1 that needed refinement. The touch-driven menu that allows things like touch slider dragging was the hardest part.

Controls will take a few revisions to satisfy everyone.

@dumptruck - I'm satisfied with the feedback we have on existing devices, we have quite a range of feedback on devices. 
I Had Q4A On My Old Motorola Moto G 
But it stopped working when I updated from Android 4 to 5. likely it counts for Q2A and Q3A too. All made by the same guy. 
I see the weird lines in the water surface only when I am actually inside the water.

And using a bluetooth keyboard, lookspring and "centerview" (bound to a key) just stop working sometimes, then they start working again, then they stop working again.... I can't really tell under what circumstances they stop working or start working again. 
As you are a power user, you don't have +mlook/-mlook anywhere in your config or binds do you?

Without checking, I do not believe "centerview" works with mouselooking on.

Since mouselooking doesn't apply to QuakeDroid, I haven't considered the possible interaction between the controls and +mlook/-mlook.

If this doesn't have anything to do your setup, let me know ... I'm thinking aloud a bit.
On the other hand, lookspring was extensively tested. Should work anytime you start moving. Again, interaction with +mlook/-mlook has not been considered -- if that applies. 
@gunter - Force Centerview 
You might try a bind like "-mlook; force_centerview; +mlook" and see what happens.

I give centerview some thought. On a desktop, there is no way to improve centerview but on mobile there actually is because on mobile you know if a look operation is in progress because it requires a specific action to occur (which is a drag has started obviously). 
I haven't touched mlook. And I can't replicate the problem again, after Quakedroid crashed and I restarted it. If it happens again, I'll try the force_centerview 
Upcoming ... 
Delayed some due to adding game controller support, which proved to be a few steps harder than expected.

(Required SDL2 upgrade which happened to require an entirely different Android build system than the version I had been using (no fault of SDL2, Google changed the Android SDK/NDK) then discovering desktop SDL2 and Android SDL2 aren't really the same when it comes to game controllers -- so a series of experiments was required discovering differences until it worked.) 
Any Update? 
On when dual thumbstick style touch controls will be added? 
I'd like to try to have controls "right" by the end of this week. 
QuakeDroid With Gamepad Support 
Download: QuakeDroid w/Controller Support source: here

* Gamepad support (oGkspAz, Gunter asked for)
* Rare blue screen tint issue RGB565 (virto)
* RAM issue (brassbite)

Features the controller support implemented identically to Quakespasm, adapting the battle-tested controller code written by ericw (who supplied a reference on how to it efficiently).

This beta is to get the gamepad support out the door while a much more comprehensive update is in the making, hopefully out late this week.

Button names LTHUMB, RTHUMB, LSHOULDER, RSHOULDER, ABUTTON, BBUTTON, XBUTTON, YBUTTON, LTRIGGER, RTRIGGER. The DPad acts as arrow keys (and also supports diagonal movement), left stick moves, right stick looks (swappable). 
Glad to hear you got it working! I can test an Xbox 360 controller on my tablet later today. 
I would test this... but... my little Dell Venue 7 tablet has decided that it is dead now. :u

I shall have to acquire another Android device.

Also, you need to add that gamepad support into Mark V as well. 
@ericw, @gunter 
@ericw -- I ended up writing a short story about it on the SDL2 forums explaining how it behaves differently on Android vs. desktop, perhaps for the benefit of someone else using SDL2 on Android.

I'm approaching QuakeDroid from a "perfect prototype" mentality from a user perspective. Or at least trying to. I'm only human.

Butane provided a link to q2 android (qii4a) and I saw that the DPad worked with my controller so I wouldn't accept the DPad not working in QuakeDroid -- a small addition beyond what your existing code did.

@gunter - aw that sucks. Sorry to hear that :( 
Controller Would Make All The Difference. 
Hi guys,

I like this project a lot, and would love to get all my fav quake mods up and running on my android. But its damn near impossible to play without a controller.
I have a MOGA hero controller, is there any way this can qork with quakedroid? What to I have to do so set it up? 
Make sure you installed the special build a couple posts up.
Pair your bluetooth input device.
Go into Quakedroid
At this point I was able to use the DPad and LStick (A- and B-Buttons) for Menu Navigation.
Ingame the walk and look stick were working.
Then I went to options and to controller options and rebound all the necessary buttons.
My gamepad: Gamesir G3s, can recommend, really noice 
My setup:
R2: shoot
L2: jump
L1: last weapon
R1: next weapon
Had a blast playing, much more fun than touch. Don't get me wrong because I got along quite well with the touch controlls.

Sadly the Kindle still shows a white screen whilst playing the demo with sound. I'm looking forwards to the other graphics of Mark V coming to Quakedroid soon, or what I think I saw in the screenshot. :D 
"@gunter - aw that sucks. Sorry to hear that :( "

Heh, thanks.
Ya know, it really does suck! Hah, it's way more stressful than it should be when one of our little tech devices kills over.... But it served me well, daily, for the last 4 years. I think something in the hardware gave out, because factory resets do nothing.

In any case, I've found a nice little 7" RCA Voyager Pro Android 6 tablet on for just under $50. Gets high reviews. And comes with a nice little keyboard case and free 2-day shipping, so I should be back up and testing Quakedroid in a couple days. 
@apm - Thanks! Always nice to have more interested parties. Like brassbite said, should work.

@brassbite - I only added controller support in that beta but I think I'll do another incremental and throw that in plus, if I am fortunate, a 2nd with what you correctly saw in a screenshot :D

@gunter - Awesome! That's funny that it comes with a keyboard too for under $50. 
I didn't have any luck with my Xbox 360 wired controller. (no buttons/axes had any effect). Here is the qconsole.log:

It doesn't look like it was even detected as a joystick? 
Hmmm. Does it show as a bluetooth device in Settings->Bluetooth?

I suspect it is not showing as a joystick to SDL, but in the next incremental I'll add a warning for devices that cannot be opened (I can't entirely rule this out, I'll have it print unopenable devices in the next incremental).

I posted a code block @ insideqc code that shows what it does when considering a device. Note it always prints something and didn't for your XBox 360 controller.

I have the number of buttons check to exclude the accelerometer.

By the way, should you ever be interested in compiling, it is rather straightforward and I'd be happy to assist. 
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. 
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. 
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). 
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. 
brassbite suggested a controller.

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

/Typo corrected 
You might try to see if your controller works with

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.

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. 

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.

This is also this article: 
@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" 
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. 
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.

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. 
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. 
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 
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 ( ), 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! 
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. 
The alternate landscape build should solve you issues for now. Let me know. 
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. 
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: 
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.


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... 
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! 
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.

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? 
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 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
httpdownload failed (5):

(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 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 had forum issues, the previous download depot (that had FvF maps and sounds and stuff) went away and 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 - 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)

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):

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": 
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. 
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. 
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:

Which then leads to:

I tried rebooting the phone, didn't help.

Then I tried manually creating and populating the Quake directory.

Made the directory here:

Put pak files in it like so:

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. 
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. 
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


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 


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 ( ) 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:

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

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:


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
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? 
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. 
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. 
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.

Well, here's proof it worked. Thanks again Baker! 
Post A Reply:
Website copyright © 2002-2018 John Fitzgibbons. All posts are copyright their respective authors.