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

http://quakeone.com/quakedroid

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

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

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

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

* Tap-fire (double tap on an Ogre to shoot it)
* Drag-look (like Minecraft)
First | Previous | Next | Last
 
You are asking me to fine-tune based on the appearance a very specific resolution and console size.

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

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

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

https://imgur.com/a/yB6j1YT

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

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

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


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

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

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


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

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

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

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

Confirmed; everything looks nice and crunchy now.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

I tried rebooting the phone, didn't help.

Then I tried manually creating and populating the Quake directory.

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

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

Same result when trying to run the app.

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

@johnny: Did you get it to work? I'm thinking you did. I'm not sure why it would work differently on that phone vs. all the other phones the various others have tried, but yeah, I care of course! 
 
Yup works now. Didn't auto-download pak0.pak, but worked when I put the paks in. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.