News | Forum | People | FAQ | Links | Search | Register | Log in
Quakespasm Engine
This engine needs its own thread.

Feedback: I like the OS X version, but I have to start it from the terminal for it to work and can't just double-click it like a traditional OS X app. I'm sure you guys already know this, either way great engine.
If I do -listen 2 -game arwop +map start

I see INADDR_ANY in status on Windows. My Mac can't connect.

So I can't host a coop game on Windows. And I tried it on my Mac. Same issue.

However, I *can* use FitzQuake 0.85 to host a coop game on Windows and make my Mac connect = my dreams come true!

I have 3 computers: a Vista laptop (playing Quake on that blows), a Mac Mini and an XP desktop.

Now I can play coop with the 2 desktops!

Argh! FitzQuake 0.85 Bug 
Trashed player skin.

I thought that was fixed.

Will post screenshot next time. 
OS X version got some love recently. Networking for OS X was using my SDL_net driver, which is horrendously broken. The launcher should work in 0.85.2 though, at least it does for me. 0.85.3 will add networking fixes that should allow you to host games as well as connect to games hosted on other OSs. It also includes automatic updates to future versions and I hope to add a command line history for the launcher if time permits. 

Btw ... I love the "disc causes core dumps" note in Quakespasm changelog. Now, I'm rather OS X weak and rather Linux weak, but the disc is going crazy in FitzQuake 0.85 with ARWOP paused (!) in coop.

I'm thinking that disc isn't part of the solution, but part of the problem in any version of Quake. 
i use quakespasm currently as fitzquake has the w7/multicore timing bug. there are a surprising number of engines that have the timing bug, actually.

anyway, it's awesome except there's some kind of bug that causes the engine to not recognize the numpad. kind of annoying as it seems like some kind of oversight. 
Hmm... the numpad seems to work for me under linux and winXP, so i'm not sure what the problem might be.

We have been fixing networking code (cheers SleepwalkR). You can check-out subversion, or try this recent win32 binary 
Multicore Timing Bug = 
w7/multicore timing bug = Sys_FloatTime

Sys_DoubleTime should replace it in FitzQuake 0.85. The SDL version including FitzQuake SDL 0.80 doesn't have this issue just due to the alterations and the library or at least FitzQuake SDL's implementation of it.

Clock fixed NQ engines = DarkPlaces, JoeQuake, Qrack, ProQuake. All QW engines have the fix.

A symptom of the problem: demos play all jerky. 
Dear Quakespasm team,

your website is confusing and awkward to use. I have to hover the links to find out what hides behind the pretentious names. When there is text and links mixed, the text stands out more, suggesting it is a link. 
Cd Stuff 
Ha ha.. i made the cd player to work in dedicated mode. quakespasm -dedicated -cd inits the sound and cd subsystems. Also added "cd next" and "cd prev" commands... It's only about 20 lines of bloat, but SDL is so common and works mostly that this is quite handy for me. I should reinstall QNX and see if i can get it going there. Baker.. what do you think ?? The code's in svn, and i've updated the above windows bin too.

I figured out the windows device format too for when it doesn't get auto-detected. It's something like quakespasm -cddev F:\ 
@Stuff I Don't Know 
I should reinstall QNX and see if i can get it going there. Baker.. what do you think ??

No clue what QNX is, well except Googling it.

I'm not very Linuxy, although I am very adaptable. 
Nah..i'm just wondering about the uselessness of a quake/sdl command-line cd player. It advances tracks now, though it's possible i've broken something somewhere. 
I'm wondering about that, too. What's the point? 
A few lines of code saves me installing bloatware like microsoft mplayer just to play CDs. 
but I don't care either way. Just don't turn QS into an emacs clone. 
0.85.3 is up downloads, changes.
Nothing major, mainly just the networking stuff previously mentioned. 
Gamma Patched LibSDL 
For people with newish systems (Xorg >= 7.5) and broken brightness slider, these patched libSDL binaries should hopefully fix the thing.

libSDL 32 bit
libSDL 64 bit

I guess there could be side effects, as it's not officially included with libSDL. 
Quakespasm Statusbar 
Hello everyone. Only recently decided to venture into Quake once more. It's been since.....well it's been too long. DOS! I'm amazed at all the work that has been done, especially the engines and I've tried more than a few and Quakespasm comes out on top as far as I'm concerned but there is one thing that's bugging me and I can't seem to find the answer or their isn't one.
I'm running the Linux and Quakespasm performs outstanding for the most part but I have no statusbar....Any ideas how to enable it? I've Googled for several days and read countless joy. Any help would be appreciated. 
try viewsize 100 at the console

then you can use scr_sbarscale to adjust the size.. (1 being normal, 2 being twice as big.. 1.5 also works) and you can also use scr_sbaralpha 0.99 (instead of 1) to get it to sit 'in' the view rather than below it, which imo feels nicer

quakespasm is basically a modified fitzquake, so having a copy of the FQ readme is helpful for commands n stuff: 
Viewsize 100 
Great that works. I knew there must have been a command somewhere. I was assuming it would be under scr_something. Now how to get it to persist. What would I put in my .cfg file?
Yea I did look over what documents were available but I would never have seen the relationship between the two. Good man. I had already figured out the size and alpha blending but the non-appearance of the bar was a mystery. 
No Worries 
i just have an autoexec.cfg file in id1 which sets it each time. you may be familiar with them but if not, it's basically just a list of commands fired each time you start quake, regardless of mod 
*familiar with that. i know what i meant 
I had edited that but edited as view "100" rather than viewsize "100", which I had correctly entered in my config.cfg file. I have corrected my autoexec.cfg file and all is well. Thanks a million. This has led me to search for other commands to finesse my configs...which I find are numerous and make Quake a very personal experience. 
Need For Speed 
Another question.....the speed I have set as..
_cl_forwardspeed "999"
but that has no noticeable effect. It's still not fast enough for my taste. Syntax correct? 
you must also change sv_maxspeed 
I don't have a sv_maxspeed listed in my configs.
Is the syntax as you have written correct and in what increments is it set? 
Where can I find a farly definitive autoexec.cfg guidline/turotial? 
Ahem! tutorial 
Nevermind...found it. Took some digging as most posted configs re for the newer versions. Thanks to those who helped. 
Generally you do not need a autoexec.cfg. If your engine does not work well without one (ie forgetting its settings) tell the authors about it. Usually one only needs it to work around engine's overwriting each others settings or not even saving them in the first place.

You can set the "proper" movement speed by setting "Always Run" to "yes" in the menu. That would set the right sv_*speed. If the viewsize is so big it does not show the HUD by default it should be considered as a bug. Maybe you had an existing config.cfg that was the culprit for this? 
Points well taken...thanks. That has been my a question of mine...why have both config files. 
Generally you do not need a autoexec.cfg. If your engine does not work well without one (ie forgetting its settings) tell the authors about it.

but sometimes you don't want it to remember certain settings :) when i change certain values for taking screenshots only to reload the engine later to play a map and think "where the hell has my weapon/sbar/crosshair/fov gone??"

it isn't essential though, true. i just find it handy and have used the same one since 2001 or so 
You Need Two Seperate Commands For That 
Oh, I forgot about aliases. Those can only reside in a autoexec.cfg I think.

rj, I use this:

alias screenshot_on "r_drawviewmodel 0;crosshair 0;viewsize 120;fov 100;showtime 0;showdate 0;showfps 0;bind q screenshot_off"

alias screenshot_off "r_drawviewmodel 1;crosshair 1;viewsize 100;fov 90;showtime 1;showdate 1;showfps 1;bind q screenshot_on"

bind q screenshot_on 
That's good to know.....very unique. 
Statusbar Position 
OK...I found a way to have the statusbar show but now the problem is it shows at the bottom and pushes the screen up the width of the bar, so in effect I have lost screen real estate for the game equal to the width of the bar. My normal resolution is 1440x900 but I'm not getting the full 900px due to the statusbar position 
[Quote]Then you can also use scr_sbaralpha 0.99 (instead of 1) to get it to sit 'in' the view rather than below it, which imo feels nicer.[\Quote]

With scr_sbaralpha I get no postioning. Are you sure that's not related to transparency? 
it is transparency, but any value between 0 & 0.99 shouldn't 'push the screen up' as you put it. only 1 should do that. as far as i remember anyway, can't check atm as i've just reinstalled windows 
Wrong's Fitzquake doing it. I'm testing about 4 different ones.Actually Quakespasm has held number one spot so far. 
You Should Check Out.. 
the RMQ engine from the latest demo release (in the news on this site still). it's basically a modified quakespasm; i prefer it because of the coloured fx lighting and contrast slider (next to brightness.. really improves the look a la darkplaces) 
Travail-rhythmic Clipping Sound 
As the title states I get a rhythmic clipping sound when first starting Travail (only) in Quakespasm. Like...1,2,3,4,5,6 pause 7. It disappears usually after teleporting. It's on both channels and as I turn I can hear it more prevalent from the direction I am turned. Using Linux OSS.
Also this is not using the Travail soundtrack.
It's also not playing demos and the website says there are new demos and my console reads "demos in loop". 
Re:RMQ Engine 
Experiencing the same statusbar problem with that engine too.
I'm linking to a screen of the problem. Look to the right and left of the statusbar. I have fullscreen and my full resolution of 1440 x 900 set and also viewsize "100.000000". This appears in Fitzquake and it's derivatives. 
Re: Travail 
Which quakespasm version? I can't reproduce the clicks using the svn rev. 401. About demos not playing: It's Steven's design not to play demos automatically when the engine starts. Just enter "demos" on the game's console. About travail's soundtrack: You can use it using the latest svn (place them under travail/music/ and rename the tracks properly so they look like trackXX.mp3) 
quakespasm-0.85.3...the noise first starts stepping off the teleporter and stops when stepping on the stairs. (new game). It usually exhibits itself again on every level at the entry point like this. 
Re: Travail 
Ehmm... You are not referring to the sound from the broken light on your left which is the map's own design, are you??? 
Record, Vorbis, Upload. 
Re: Record, Vorbis, Upload. 
We already added support for ogg/vorbis, mp3 and wave music playback. Otherwise I can't understand. (this may not be my best day..) 
Electric Bill Too High 
@szo...How many broken lights do you figure are in the game? It's a hoot...but it could be possible you solved that mystery. 
Re: How Many Broken Lights Do You Figure Are In The Game 
Calm down.

I was trying to suggest that jtarin simply records the audio, encodes it in a suitable format and shares it since that would be the easiest way to hear his problem. 
Custodial Duties 
@Spirit...Excellent suggestion! I think we might have an answer now though...with the broken lights. It seems maintenance in Travail is not as as one would think.The Scrags are slackers. 
.. sorry. As I said, not a very good day for me ;)
As for the problem, as far as I can see there is no problem, just the annoying bzztt sound from the broken lamps in the map ;) 
Still Problem With Statusbar 
Experiencing the same statusbar problem with that engine too.
I'm linking to a screen of the problem. Look to the right and left of the statusbar. I have fullscreen and my full resolution of 1440 x 900 set and also viewsize "100.000000". This appears in Fitzquake and it's derivatives. 
Link's Broken 
Link Fixed 
Mouse Movement Is Broken With 0.85.3 On X86_64 Debian 5.0 
I compiled quakespasm 0.85.3 from source on my x86_64 Debian Linux 5.0 box. It works great except for the mouse; even with free look enabled and mouse speed set to the minimum possible slider setting, my mouse is unusable - any movement causes the player camera to point straight down and wildly spin in circles. I have to use the keyboard to move the player camera up and down.

My Debian install has libsdl version 1.2.13-2. 
I noticed that the RMQ engine has an widescreen fov option, yet Quakespasm does not. Can this be added in the next version? 
Quakespasm 0.85.4 
New version 0.85.4 is out. 
The "replacement" audio track support is incompatible with the existing Darkplaces implementation. It would be nice if you could either adjust to that or get in contact with LordHavoc to make DP support your way.

ericw's branch does this:
I've been using it every now and then and it worked well.

Minor nitpick about packaging: I really dislike generic filenames like README.txt. I know many use them. But imagine John Doe extracting straight into his Quake directory. For him, it should be quakespasm.txt or quakespasm.readme or something like that.

Great work! 
Awesome And Great Work = Honest, Might Look Ironic, Not Intended 
Spirit: Darkplaces Compatibility 
I believe what you're interested in is the music file directory which is <gamedir>/music in quakespasm, and darkplaces already supports that, so I'd like to understand your concern. OTOH, I am not interested in supporting multiple-alternative music file directories like dp which adds more complexity than it's actually worth. 
I've always thought that "sound/cdtracks" was a little bit of an odd choice, to be honest. "music" at least is standardised with Q3A and the like (so it's got a higher probability of being what players will expect to be able to use), plus it keeps background music tracks separated from in-game sounds in the directory tree. Which seems to me to make more sense.

I can understand the perspective of someone who may already have a bunch of files in the one and not wish to create a duplicate copy in the other (although you could just symlink one to the other). But overall I think the reasons for preferring "music" win out. 
I'm certainly not alone when I say I think most people paying attention to Quake engine development are really encouraged by what has been going on the last couple of years.

And Quakespasm has been a major force in making better engines and I love the sheer thought in the changelog.

Ironically, back in 2005 I did not at first see the beauty of FitzQuake but once I got into engine coding the impact first slowly and then as learned more *quickly* became uber-impressed.

And Metlslime really polishes up his work (maybe only Jozsef ... JoeQuake ... is in his league on the testing/polish thing ... btw JoeQuake is still in development).

This post is getting a bit wordy now, but the body of work that Metlslime, aguirRe, Tyrann and Sleepwalker produced has created a solid foundation for people like the Quakespasm team, MH, myself and others to play around with.

And the thing I think is particular neat about the Quakespasm team is the non-Quake centric experience of the team.

And it is important to not forget Spirit's public lobbying and encouragement of map community wants and the Remake Quake guys for the testing lab for experimental game play ideas.

Yeah, too wordy ... but needless to say, I prefer an engine modification environment of thriving ideas and implementation that RELATE TO REAL WORLD SINGLE PLAYER WANTS ... versus, say, the old days that focused on "neato" features.

I am not dismissing the importance or value of the wild and crazy days or their contribution as the backbone of some of the things we have today.

I'm just saying that important and relevant features that can be very hard work to address complex authentic multi-platform Quake user and mapper problems matter quite a bit and in the old days those appeared to be ignored.

Anyways, awesome release guys! 
OS X Builds 
Are forthcoming, still trying to iron out possible bugs in the PPC build. 
Didn't realise dp supports music/ too. Yeah, I like that directory better. Would be great if you would add support for any filenames to be supported and the "cd play" command.

Baker, you ought to prepare some random generator for that kind of recurring posts... ;) 
Yep, dp supports music/ already.

As for a console command, I didn't change "cd play" behavior, however I added the new "music" series of commands:

- music <filename> : Start playing the requested music file.
Example: music mymusic1
Notice that you don't type the file extension: The requested music will be searched with ogg, mp3, and then with a wav extension, automatically. If you do specify the file extension like "music mymusic1.wav", then it will honor your your wish and try only the given type (which is good for testing/comparing the same music in different formats and mappers can even use that feature.)
- music_stop : Stops the playing music.
- music_pause : Pauses the playing music
- music_resume: Resumes playing the music if it was paused
- music_loop 1: Makes the background music to loop (default behavior)
- music_loop 0: Makes the background music to play once and then stop

As for supporting any filename, I am not sure what is required, but the code supports and can handle multiple audio formats concurrently. The map-dictated music, i.e. the cd-music, is always searched by the order of searchpath priority, whereas the a music request from a "music" commond uses the music format preference order unless the file extension is specified.

If you are interested in support for multiple music directories as alternatives to each other, like "music" and "sound/cdtracks" thing of dp, no sir, that's not going to happen :) 
My perspective on engine development is mostly from the rather tame 2008 perspective.

I am genuinely pleased with how things have evolved since then.

Sure I get a bit excited about it and talk too much, but there is something to seeing a list of challenging problems one by one get knocked off.

Back in 2008, it seemed like too much to hope for.

Since 2008:

1. FitzQuake 666 protocol
2. Quakespasm guys solve problem caused by "disc".
3. Quakespasm guys solve x64 processor problem.
4. Texture dump in FitzQuake 0.85
5. MH writes new colored light tool
6. Willem does the multi-core vis tool.
7. Avirox writes QW version of true rotating brush. LH adds rotating brush support to hmap2.

And on and on and on ..

Yes, I am very pleased. 
Add support for mouse buttons 4 and 5

this probably means i'll never be able to use another engine now. well, until they add this too. 
Mouse 4 And 5 
Most actually do. 
news to me. 
It's very common. ProQuake, Qrack, DirectQ, JoeQuake, DarkPlaces, FTE to name a few all support a minimum of 5 mouse buttons and have done so for years. It's really only Fitz and Aguirre's that still only support 3. 
most of those crash on my machine and directq (as we've discussed) has pretty serious performance issues on my machine and darkplaces has performance issues for other reasons.

sor really only fitz and aguirre's that i've used. hence, news to me. :) 
I thought it was the DirectFitz port from here you were talking about. 
both, which is why i didn't make a big fuss over directfq. i just figured it was something linked with direct x 8 itself. 
Now I'm Really Confused... 
You're calling it "DirectFQ" but yet you say both? If you mean one of the engines available here: then yes, they're slow, but their intended audience is people who have trouble with OpenGL (speed was not an objective). If you mean the engine available here: then no, it's lightning-fast, and something else is making your 3D card perform worse than a low-end integrated Intel, which doesn't make sense. 
... And BTW ... 
The former use DX8, the latter uses DX9 which adds to my confusion... 
The Direct3D8.1 Wrapper ... 
Could produce faster engines than those initial ones in 2009. Which have performance issues for reasons that have been solved since then (flashes using video hardware gamma instead of just drawing an alpha-blended poly).

Case in point, the Direct3D8.1 wrapper version of ProQuake gets 80% of the performance of GL ProQuake (equivalent of stock GLQuake rendering).

And GL ProQuake gets 600 frames per second on some CPU + video card combinations *and* ProQuake's render is NOT as fast as FitzQuake's entirely rewritten renderer.

The DirectQ engine ... MH's main project ... can get 5000 FPS (no kidding) on id1 maps.

I do understand that people who are not active follower's of MH's work don't know how incredibly powerful his DX9 rendering engine is.

But ...

1. FitzQuake modification and experimentation is a bit fragmented right now. You've got a lot of different FitzQuake forks that "matter" including the RMQ Engine/Quakespasm and some things that FitzQuake could do natively in Windows like some of my experiments and mods. This is all good ... several independent laboratories sorting out the "good stuff". Maybe at some future point metlslime will decide on the features for FitzQuake 0.90 or even FitzQuake 1.0 ;)

2. No one is being stopped from single player goodness right now. Even though there may not be a single option, there are plenty of options that are quite similar to each other. So no urgency. 
both directfq and directq run slowly. since it's clearly not a programming problem, the problem lies with directx or hardware. but since i have no problems with normal opengl fq (or qs in this case), i don't want to invest time into finding out what's up.

i find proquake is a terrible engine. mainly because when it crashes, it screws up the gamma settings in windows and i have to run through colour calibration to get gamma back to normal. it also has that old really annoying bug that glquake has where each time you run it, it moves all the windows down and to the right so that eventually after a few starts, all your windows are cowering in the corner.
also, it doesn't have extra edicts (or i couldn't figure out how to get it working) so it doesn't load any of the maps i make. 
Speaking Of Other Engines 
since you guys seem to know all the 'big names' these days, you should post up a list of them somewhere. finding custom engines (and trying to test them, never knowing if they are abandoned or not) is really hard for me. you engine guys need to work on market penetration! :P 
Derailing Further... 
...but DirectQ currently gets maybe 2000 downloads per month. I reckon it's got market penetration. ;) 
ok then. 
I maintain ProQuake but wouldn't recommend it for single player over FitzQuake any day of the week.

Anyway, yes we are in a time of a bit of engine flux due to a great many authentic baseline improvements being littered all over the place.

But as long as someone is able to play single player releases with some preferred and quality engine, there is no emergency ... and in time all this will sort itself out.

I myself would prefer to live in a world with a lot of general interest experimentation that "matters" going on. And regardless of preference or not, it is, in fact, exactly what is happening ;) 
Wait What? 
did you guys really implement fog interpolation? or was that always there and i never knew?

cause it's pretty fucking cool. and also annoying because only a few weeks ago i wrote qc to handle fog interpolation with a complicated system to get ftos to output more than 1 decimal. :P 
it was always there :) 
queue "fuuuuuuu" on my part. :D 
Fog interpolation? I thought fog just kind of sat there statically. What is this fog interpolation? 
I believe it's that if fog changes colour it blends smoothly between the before and after colours over a period of time. 
Its only really decent when you control what the player is seeing and how they're moving. For example, sticking them inside a lift and blending it from a lot to none. 
little while ago, gb made a speed map and i mentioned being unable to load it in rmqengine. ("The application was unable to start correctly (0xc000007b). Click ok to close the application")
turns out, the SDL.dll included with 64bit quakespasm is what causes the error.

unfortunately, 64bit quakespasm can't run with the (i'm assuming?) 32bit SDL.dll that rmqengine uses.

just fyi, i guess. 
you can't mix a 32 bit app with a 64 bit library or vice versa 
sure, i mean, i guess that makes sense. the problem is there's no way to know since the file is named the same thing. 
try the InspectExe tool ( 
My sound is lagging hard in the new build,I was just wondering if anyone else is having an issue? 
After having gotten sick of some of the issues I had with Darkplaces (stuff not spawning properly, doors not working, items floating in mid air), I made the switch to Quakespasm and have been pretty happy.
Still having some issues, not sure whether it's due to my n00biness as someone that doesn't really understand Quake tech that well, or the engine itself.
Recently tried to play the map pack, Digs01 again, which worked fine on Darkplaces.
Water and teleporter graphics wont show up at all.
I know you can get around that problem in Travail with +r_oldwater 0 +r_waterquality 32, but I have no idea if there's any command line that will fix the issue I'm having with Digs01.
I fear this may effect some other map packs too, but I haven't tried much others yet.

Also, the NightJourney map pack (, just wont work once you try to start a new game. Minus some errors with stuff. Says something about missing Lava/md2 model (I think that's what it said, I ended up deleting Nightjourney in frustration because it wouldn't work anymore lol), which is odd because I never encountered that issue with Darkplaces 
hate to ask a question like this, but is r_wateralpha set to 0? that'd make it not show up. 
I just tried using +r_wateralpha 1 and it works fine, so indeed just n00biness on my part.
Odd that +r_oldwater and +r_wateralpha are the same thing, damn quake and interchangeable command lines :P
The +r_oldwater command line was the suggestion made on the Travail site which makes the alphas work properly. Why that is, I don't know, but it works for Travail.
Just calling it +r_wateralpha would have made more sense.

Anyway, thanks for the help, Necros (although the help was in a rather roundabout way lol) 
r_oldwater has nothing at all to do with alpha.
r_oldwater 1 uses the original method of making the water texture warp. turning the option off uses a more expensive, but much nicer looking warping effect.
r_waterquality controls how good the warp looks, when using r_oldwater 0. 
r_oldwater 0 fixes up bad texture alignment for liquid brush seams. And too much water alpha may make a teleporter disappear. 
The problem is that sine waves don't linearly interpolate. r_oldwater 0 doesn't actually fix it correctly: what it does do is reduce the problem to an extent that it's not really as noticeable, but the tradeoff is that it imposes limits on the maximum size you can use for external textures. Doing the warp per-pixel in a shader is the only real way to definitively fix it in the general case. 
I guess there might be a situation that r_oldwater 0 makes it not as noticeable, but I've seen only perfect results so far. No complaints. 
same here. it looks fantastic and very authentic. 
Weapon Models Position 
It would be awesome if we could get a cmd/cvar to change the weapon models position on screen back to the vanilla placement instead of the "Darkplaces style". I think the engine is great and this is my only complaint. 
Version 0.85.5 of QuakeSpasm is released.

Merry Christmas and a happy new year to all. 
Quakespasm 0.85.5 + @moGGimus 
>deathmatch and coop cvar "fix" of Quakespasm 0.85.5

Although for sure that does not change the behavior of id1 progs.dat nor Quoth nor any other single player mod I know of, I am somewhat certain that change breaks the idea of cvar guided behavior in QuakeC. Cvar behavior is decided by QuakeC.

Since aguirRe is no longer around, well, his primary goal was mod compatibility and had deep knowledge of even obscure mods. Which I don't have. It may be possible that this change breaks some obscure or even not so non-obscure mods ... like ones with a lot of settings.

Then again maybe not.

DarkPlaces style weapons vs. Quake style

I conducted a deep and thorough investigation of this issue during the summer for Engine X. Engine X has an almost entirely unrestricted ability to resize the Quake window in real time like any other windows application.

I discovered some severe liabilities with DarkPlaces/FitzQuake style gun placement being hopelessly flawed with certain aspect ratios.

At the moment some of the work in DirectQ has the best current solution which has an FOV-immune gun placement possibly inspired by Qrack (which seems to have got it from possibly a Phoenix or QER tutorial).

I say best current solution because there is an additional factor involving FOV y, that is generally not a source of concern if you correct for a 4:3 aspect ratio, which for sure Qrack does (but the code is slightly less clean than applying it to FitzQuake, which simplified the FOV calculations).

At the risk of making this too wordy, the 4:3 aspect ratio is not always correct because some mods have side-mounted weapons (not center of screen) which may or may not have been designed with a 4:3 aspect ratio in mind and without taking in account the proper aspect ratio for the appearance of side mounted weapons they can disappear off-screen when not also incorporating the intended mod aspect ratio (!!).

Too much information, perhaps. But a complete and accurate description of factors into the presentation of the view weapon model. 
Baker: Deathmatch And Coop 
Are there really any mods that actually expect both to set at the same time? 
Not My Area Of Expertise 
That's a better question for modders like at Inside3D. Most of the mods I've played either fall squarely into the traditional single player genre or into the deathmatch genre. There are all kinds of mods and most of them aren't really interesting to me

A cursory Google search indicates that this mod is an example of a coop/deathmatch hybrid that uses both cvars

My only interest in raising the issue is that really Quakespasm is the closest to an "all operating systems" "proper Quake". 
I see. That "inder siege" thing is a weird one at that. I certainly would like to keep quakespasm as you descried, i.e. "all operating systems" "proper quake", however there is no universal solution to the coop/deathmatch thing as far as I can see.

The "cvar behavior is decided by quakec" argument is incorrect, because some vars are really set by quakec, however some need not be and are decided by the server admin. (And there must have been a way the quakec of that mod would be written using only one of the cvars set and not both.) Hmph... If you have a solution, I'm all ears. 
This is all theoretical at this point anyway, in practice I can't name I've ever used that used both cvars simulatenously and I checked DMSP, SuperCoop and a couple of the "bots mods".

I guess the reason I had thought of this is lately in some other engines that are not commonly used I've spotted some very mod-unfriendly optimizations and I've had compatibility on my mind lately.

Needless to say, I think some of the ideas implemented in Quakespasm have been very forward-thinking and conscientiously implemented. I loved (and adopted, heh) the Quakespasm philosophy on search path priority. Ingenious! 
Re: Development 
Hmm, thought about this more, and I am convinced that that changed was unnecessary and reverted it in the svn as of rev.555:

While messing with this, noticed another related thing: see (search "Looks funny" on the page.) After this, not sure if the solution would affect anything..

As for the compliments for quakespasm: thanks! 
Re: "Looks Funny 'fix'" 
"Cvars "deathmatch" and "coop" not reset when loading a SinglePlayer game."

In function Host_Loadgame_f() of host_cmd.c, look for...
#ifdef QUAKE2
Cvar_SetValue ("deathmatch", 0);
Cvar_SetValue ("coop", 0);
Cvar_SetValue ("teamplay", 0);

DarkPlaces certainly doesn't have that "fix". DarkPlaces can save multiplayer games!

One of the biggest annoyances in coop ... let's say two people are playing, say, Travail or some single player deal that absolutely cannot be played non-stop in a reasonable period of time ...

How do you save and continue that game?

Well ... you don't. Because you can't. 
Re: "Looks Funny 'fix'" 
Well, that's not an answer but random sidetracking.

FWIW, hexen2 does reset those cvars when beginning to load because it also can save net games and it actually saves those vars along so they are restored to their intended states. Therefore hexen2 is immune to that funniness whereas quake is not. I don't know how dp handles the situation. 
I thought about bringing up that.

Quake's save game system is intended to save the state of the server.

And as you, it doesn't because it does not save the cvars. And this creates a real mess. Since server-side cvars belong to the QuakeC modder, any given one could be used or abused in a mod. Some mods use cvars in unexpected ways or use them for "inter-level storage" or for hacks and so forth.

Any attempt to "solve" the problem is likely to break something, any attempt to alter the behavior is likely to break something.

One idea is to make and/or propose a save game 1.10 format or just do it. Some people might say "your engine save game files cannot be read by <my favorite quake engine>", but that is mighty uncommon. [Can save files fail in other engines gracefully based on version? I have not checked ...]

Although I have absorbed quite a bit of information in 5 years of paying attention to these kinds of things, my level of experience on the technical aspects of these matters is way below a metlslime, FrikaC, Necros, Spike, MH, leileilol type of 15-year expert. 
Something To Consider ... For Real ... 
One of the more fun aspects of engine development is the freedom to fix/correct/enhance/play around without regard to exact compatibility.

DarkPlaces is an example of an engine that doesn't worry about breaking things versus, say, FitzQuake which is so conservative as to require typing +mlook in the console for mouse look.

This isn't the golden heyday of Quake and most of the mods that would get broke by "fixing" stuff probably rarely get played.

JoeQuake did this by stating that the engine was intended for use with id1 Quake and the 2 mission packs.

If you want to stick with the mainstream use of engines like id1, Quoth, Warpspasm, Mission Packs and DMSP/Frikbot kind of stuff ... do it.

An engine being developed is more important than a few oddball mods from 14 years ago that no one uses. Besides, that's what bug reports are for.

I might have too much influence from aguirRe and Spirit, aguirRe was very big on compatibility and assisted me a lot when I started engine coding and more or less kept me from breaking standard behavior on accident. 
Save Games... 
...It's quite possible that RMQ is going to require an extended save game format shortly. One issue we've definitely encountered is use of "stuffcmd" to set some cvars and other things (like v_cshift) which are not being retained across sessions (or are being retained when they shouldn't be if the player changes or reloads the map). That's probably something more appropriate for a fuller discussion on I3D but I think it would be a good idea to at least co-ordinate efforts as this is a common enough problem with mods in general. 
can get around that easily with unsaved variables which you can use to force a cshift check on loading maps.
for loading new games, just put a catch all in putClientInServer or something.
in an older mod (which i lost) i was storing cshift in a .vector and .float on the player (rgb + intensity).
this allowed me to blend multiple colour shifts together and then use normalize on the rgb vector to keep things for washing out. 
One of the things I have been working on with the "game state" is the end of the game state.

v_cshift obviously as a cvar does not reset upon the end of a map or when the client does "disconnect" or a QuakeC error or a client error that causes a disconnect state by error ("model xyz.mdl not found").

Have also been working on what cvars may be sent to the client. Well, actually not what ones that may be "sent" ... but rather ones that the client will acknowledge that either a server or demo may alter and the mechanism to reseting these upon "disconnect".

This is to finish a far more complete concept of "gamedir switching". 
Mac OS X Release 
I have updated the Mac OS X release of QuakeSpasm to 0.85.5. The binary works on Mac OS X 10.4 and up on 32bit and 64bit Intel and 32bit PPC systems.

Download here: 
Shambler's Lightning Not Lerped 
In QuakeSpasm 0.85.5 for Windows, Shambler's lightning animation is not lerped (interpolated, smoothed). It's the only thing that's not smooth, even if you clear the "r_nolerp_list" cvar. 
That's intentional, QS doesn't interpolate when an entity goes into a muzzleflash frame. 
Version 0.85.6 of QuakeSpasm is released.

Happy new year to all. 
Few Bugs In QS 
QS v0.85.6, WinXP:

- if you Alt+Tab out of game, MWHEELUP and MWHEELDOWN cease to function. also, gamma resets to zero but that's a classic OpenGL issue, I believe

- if the zoom function (default key: F11) is used, mouse sensitivity resets

(but still the best engine :D) 
the F11 zoom behavior is a bug in default.cfg isn't it? 
yeah, iirc, the f11 is just a basic alias that has a present sensitivity setting. you need to overwrite that yourself to match your original mouse sensitivity. 
It will sound noobish, but where exactly is default.cfg located? Can't find it in any of Quake's directories, is it in a PAK file? 
Is in a PAK file, yeah. And it is an old bug from 1996; the zoom aliases eventually reset sensitivity to 3 (IIRC) and because default.cfg is forced on you your only real option is to put aliases into your autoexec that override these (does QuakeSpasm exec quake.rc or the 3 .cfg file? Can't remeber right now, but quake.rc is another potential source of evil). 
there's nothing wrong with quake.rc;
quake.rc just execs the config files, nothing more.

anyway, what you want to do is open up your own config.cfg file and add this to the end (or anywhere, really...)

// zoom
alias zoom_in "sensitivity 2;fov 90;wait;fov 70;wait;fov 50;wait;fov 30;wait;fov 10;wait;fov 5;bind F11 zoom_out"
alias zoom_out "sensitivity 4;fov 5;wait;fov 10;wait;fov 30;wait;fov 50;wait;fov 70;wait;fov 90;bind F11 zoom_in; sensitivity 3"
bind F11 zoom_in

and change the sensitivity values appropriately. 
Hmm.. is it possible to have back the playtime in status bar without recompiling the engine? 
Mods can and do contain a custom quake.rc that sets cvars and issues commands itself (e.g if a mod wanted to force water alpha it might add "r_wateralpha 0.4" to it's quake.rc after exec'ing the configs). 
right, it's there to provide a way to add in custom commands without messing with autoexec and config.cfg.
i did that myself with ne_ruins. i enforced developer 0 by running a config file after stuffcmds, for example, because in the past, players had tendency to play with developer mode on and then complain about console spam. :P 
Nothin To Do With, But 
AguirRe had a set of commands built in to pause rewind and FF demos.. haven't got around to asking him the how yet. 
Demo Navigation 
JoeQuake has demo pause, rewind, fast forward.

Demo pause is an easy engine modification. Likewise, so is fast forward will more or less changes the timing of a frame similar to how host_framerate does or the FitzQuake host_timescale cvar does.

Demo rewind ... and I haven't looked at this code to think about it in 5 months or so (I was trying to get interpolation to work right in reverse. And I did (or at least so close the couple of remaining flaws would never be casually noticed). At least with everything except dynamic lights fade timing.) ...

But if memory serves correctly, it builds a stack of locations that point to the demo read positions of the previous demo frames within the demo. So to play in reverse, instead of going forward it picks the previous location from the array and uses that. And if there is no previous location, you are at the start of the demo.

You also have to create an extra "client time" storage unit because cl.time is still important for things like sounds ... you cannot play sounds in reverse so they still need to end after X seconds and only a "forward-only" time instance can do that. In fact, this is also true of particle animations and some other things. But there is also the "demo neutral time" that can go backwards and this should be used for reversible events like animation interpolation, movement interpolation, the display of the clock if you press TAB to see the true time in the demo, etc.

Also, by looking at the current demo read position and comparing against the length of the demo file, you can estimate the percent of demo playback to show a demo progress bar (!!!). 
Start the engine with "-fitz" option restores playtime in statusbar, among a few other things 
I never understood why the game time display was removed from QS. It's fairly useful, unlike the skill display. This would be better off as a console setting instead of a command line switch.

aguirRe's demo script was an alias config that had the cursor keys increase or decrease host_framerate by by 0.1 steps. No rewind, only fast forward and slow motion. 
I ported JoeQuake's demo rewind code a while back. It was ... "fun".

I think that Fitz's host_timescale is an infinitely more sensible option than host_framerate for controlling demo speed, but of course it needs engine support. 
Some textures are still fighting a bit on certain maps, although gl_zfix is enabled. But this is noticeable only if they are viewed from the distance. Can gl_farclip fix this if it's set to a ridiculous level, or parhaps some other gl_ trick? 
A high value of gl_farclip will make it worse as it reduces your z-buffer precision; ideally setting it low will help more (there is, of course, a tradeoff in that).

z-fighting is really a mapping problem, and it should be fixed in the map and not by the engine.

The traditional "fix" (using polygon offset) sucks because (a) the z-buffer is non-linear so offset factors will have different effects at different depths, and (b) the OpenGL spec allows polygon offset to be implementation-dependent, so the same offset factor may have different effects on different hardware. 
Demo Control 
I haven't requested this (yet) but with Peg's RMQ demo's it'd be very useful. There's lots, and the level length is 30 minutes average.

And yeah, z-fighting is bad level building. 
What are the engines that can play and rec demos with reloads and map changes except DP? 
well... technically all of them.

save a game
die somewhere
type disconnect
type record demo
load a game

same for level transitions.
change level
type disconnect
type record demo
load the game and continue playing

this is extremely helpful when sending in beta demos! :) 
yeah... this is extremely awkward, hence I'm looking for engines that can do it seamlessly 
Any Engine Can IF ... 
Engine tutorial: Playback demos recorded across map changes. (Ridiculously easy). 
I haven't requested this (yet) but with Peg's RMQ demo's it'd be very useful. There's lots, and the level length is 30 minutes average.

Oh, you've already had this available for years. cl_demospeed; set to negative numbers to rewind; it fucks with the motion blur though so you may wish to disable that. 
Demoplay With Map Changes 
just added support for this to quakespasm:
... in the svn repo now, will be part of next version 
Does It Also Work With Reloading? And After Dying 
There's a way to fix demos recorded across map changes, but it only works for protocol 15 and 10002. With BJP's convdem tool, simply append a short newly recorded demo snipped to the end of the existing one (merge) and the post-mapchange recording will be shown fully. 
Negke: Die/reload Demo 
.. yes it does: tested with this one: 
That's a really useful feature, .exe please? 
Tried It 
Works on map change and map restart(after death) but doesn't work on loading a save. 
Demorecording, Loading A Save 
Host_Loadgame_f() normally does a CL_Disconnect(), therefore loading a save stops the recording as very much expected. 
Same for me, "Host_EndGame: Server disconnected". 
as I said, that is the normal course of things, and also is out of the scope of the fix I applied which touches playback code and not recording code. you guys really want to record demos by loading saves while in the middle of recording?? that can be tricky, I guess. (have anyone else implemented such a thing?) 
I like doing that. Make sharing or recording playthroughs much easier if you just record and forget. 
Record Demos By Loading Saves While In The Middle Of Recording 
DP has it, but it uses different format\protocol 
I Would Really Like That Too 
i.e. demo recording continues until an explicit "stop" command 
Quake 2 Style Notarget 
Is it possible to have a Quake 2 style invisibility in QuakeSpasm? Explanation: If you enable the notarget in Quake 2 and shoot a monster, the other monsters in range don't react. 
Re: Notarget 
notarget behavior is controlled by the progs (QuakeC), not by the engine. 
Mac OS X User Map/quakespasm Issue 
Spirit has been patiently helping me out, but whenever I try to run the 'arcanum' user map from 'quaddicted', it just boots up the original Quake.

I have dragged the contents of the 'arcanum' zip into the 'drake290111' folder.
This, in turn is contained within a main folder called 'Quake', sitting on my desktop.
The 'Quakespasm' engine exec is inside this main folder as well.
As is the id1 folder.

I double click the exec and I am prompted to enter a command into the command line parameter box.
I was told to type this:

"-game drake290111+map arcstart -heapsize 128000"

Whenever enter this, it just takes me to the main quake screen. I begin play, and it is just the introduction, followed by the slipgate complex etc.

I'm trying hard to get this to work, can anyone help?


this was probably just a typo, but there should be a space between 'drake290111' and '+map' 
oh also, if you can load the game up and then, as soon as it's done loading, type 'condump'

there should be a condump.txt file in your /quake/ folder. check to see if there are any errors down near the bottom you might have missed, or, if worst comes to worst, maybe post the last 20-30 lines here. 
oops sorry, there should be a condump.txt file in your /quake/drake290111/ folder. :P 
Mac OS X User Map/quakespasm Issue 
Cheers for getting back to me, necros, much appreciated!
I'm feeling exasperated!

I have made a space where you said.
I have also performed a condump, and I have some info. This is reprinted below:

execing quake.rc
execing default.cfg
execing config.cfg
execing autoexec.cfg
Unknown command "cl_itembobheight"
Unknown command "set"
Unknown command "set"
Unknown command "set"
0 demo(s) in loop
Unknown command "set"
(the above line repeats another 34 times, then)
Unknown command "1="
Unknown command "2="
Unknown command "set"
(The above line repeats another 16 times, then)
3 demo(s) in loop

What could this mean?

Ok Yeah 
someone who uses the mac version will have to chime in...

the engine is receiving some commands that it doesn't recognize... that might be overloading the buffer so that it doesn't even see your -game and +map commands or something.
are you running the executable directly or some kind of batch file (whatever the mac equivalent)?

cl_itembobheight sounds like a command for another engine, definitely, as quakespasm/fitzquake don't have that. 

I think most of those unknown commands are coming from the autoexec.cfg file in my id1 folder.

set debris 1
set kickdebris 0
set pushback 0
pushbacks // adjust force with below cvars
set pushbackshot1 60
set pushbackshot2 75


I have been running Dark places up until now, and the id1 folder was put together by someone who compiled lots of mods from the QuakeOne forum. It was called the "Epsilon Build", but it used a recent DP engine.

I'm still new to all this. I only started getting into all this mod/config/.ent file stuff about a week ago.. 
I'm responsible for the Mac build. I suggest you start with a clean Quake install. At least delete all .cfg files from your id1 folder (make a backup copy first) and see if it runs then. 
Probably more to it, but you could have tried to just start Quakespasm normally, and then type in the console:
game drake290111
map arcstart
@ SleepwalkR 
Cheers for getting back to me, SleepwalkR,

I was running Quake initially as the Quake 106 shareware version, but upgraded to the official version later, so I do have the official PAK1.PAK.

I have made a backup of the ID1 folder, and all that is in this current I am using are the PAK0.PAk & PAK1.PAK files, no .cfg files in there.

It still just loads the original Quake. 
Did you try negke's suggestion to start the game from the console? Do you still get the condump messages? 
@ Negke: 
It worked!

I bypassed the command line parameters box (leaving it 'blank') and launched the Quakespasm exec, then typed game drake290111 (then pressed the enter key).
The next line in tmap arcstart -hhe console says:
"game" changed to "drake290111"

Then I typed map arcstart (then pressed enter).

So I take it you don't have to use " & - symbols?

When I try placing these symbols into the console, it rejects them.

I tried typing heapsize 128000 on a seperate line, but was told "unknown command".
I tried having it at the end of the map arcstart line (map arcstart -heapsize 128000) , and it seemed to let it past (I assume).

Have I typed this correctly? Can the heapsize command be typed on its own, or does it have to be included as part of another sentence?

For a beginner such as myself, I was getting confused with entering " & - symbols into the console, not realizing that you don't have to type them. 
@ Negke: 
In the 3rd/4th sentence, it should have said "The next line in the console says:" 
QuakeSpasm has a higher heapsize per default, so you should be fine. 
A Misunderstanding On Your Part 
What you tried was to enter command line switches (with - and +) in the console, which of course doesn't work. They are supposed to be used when launching the engine. Gamedir and map can we changed in the console, but heapsize cannot.

I don't know how it works on OSX, but usually you would open an execute prompt in the OS and run the game with the command line "quakespasm.exe -heapsize 128000 -game drake290111 +map arcstart". May not be called .exe there but you'll get the idea. 
oooooh, did you paste to the launcher box including the quotes? that might explain it.

this should work:
-game drake290111 +map arcstart

-game is a special command line parameter. originally you could not select the game (mod) to load when quake was already running. only later some engines added support for using "game xyz" in the console. "map" on the other hand is a command. you can pass commands to an engine on startup with a + while in the console you just type their string.

please never ever use mods/packs that alter your id1. you'll end up with problems and in many cases you will play some fancy bling-bling that does not have much to do with the original game. you might experience maps and mods much different from how they were intended to be. 
Oh Right 
I didn't realize this was about the Quake Injector. 
I think it isn't. But on OS X, QuakeSpasm has a fancy launcher that allows you to enter the command line parameters and set the resolution. 
It is not about the Quake Injector. drake is not installable through it. I should probably fix that but then there would be a mod in the map listing, oh the horrors, oh the possibilities of hatred! 
Hi Hannes,

-game drake290111 +map arcstart has worked like a charm!
it now skips the main Quake screen and takes me straight to the Arcanum intro map.

Many thanks, all!

Sweet! Then it were the quotes. I should have thought of that. Have fun! 
@ Spirit 
I suppose these are are all little things that could be added to the FAQ on the main Quad site, so newcomers don't suffer psychotic breaks trying to figure out things they've never had any experience with! 
Have fun, and if you find any bugs related to QuakeSpasm, post them here! 
Plenty 'o' Fun! 
I'm lovin' it!

Nice intro with the axe wielding zombie stuff, nice touch.

I was discussing having ogg files being triggered by certain maps in Quake, and if I understand correctly, you can have a completely unique track to be mapped for all 32 maps in Quake.

It seems that every map is binded to a certain audio track (10 track, 2 to 11).

e1m1 always triggers "8" in the cdtracks folder
e1m2 always triggers "6".

I have opened up e1m1's .ent file and changed the number from "sounds" "8" to, say, "sounds" "2", but it never triggers the track02 file in the cdtracks folder.

Any ideas? 
Quakespasm does not support .ent files. 
Actually ... 
0.85.5 ..... Added support for loading external entity files, controlled by new cvar 'external_ents' 
My Mistake! 
Sorry Hannes,

I meant to say this is when I am running Quake with DP.

Can Quakespasm handle more than 10 custom audio tracks? 
> Can Quakespasm handle more than 10 custom audio tracks?

I don't think that any engine would have any such limitation. So yes, quakespasm plays map-dictated music, be that track2 or track22 or whatever, as long as your disc possess that track or you have a proper rip of it. 
Cdtracks Folder 

It's just that whenever I have tried to make e1m1's .ent file trigger track02 in the cdtracks folder, it never works. it always triggers track06.
The .ent file is written as "sounds" "6", so I have tried to change the "6" to a "2", so it should trigger track02. but it still keeps triggering track06 ("6").

Is it something to do with my .ent files map files?
I'm finding this really hard to solve. 
Extern_ents Cvar? 
Do you have this set to 1 *BEFORE* you load your map?

If not, Quakespasm will not be loading an external ent file at all. You should change the map name for E1M1 to something like "My Slipgate Complex" to prove to yourself visually that the external ent file you made is being loaded.

I guess I am saying, you are saying the problem is soundtracks but do you have conclusive proof your external ent files are loading at all? 
My Mistake! 
Hey Baker,

I went slightly off-topic (being a Quakespasm forum!).

The .ent file/cdtrack/audio file issue was something that has been plaguing me with Dark Places.

Obviously I don't wish to start a long discussion here about DP, but if you could point me in the right direction of advise me, that would be great!

No Problem But ... 
You'll need to ask in another thread. This is already confusing the hell out of several people including me by posting a DP question in a Quakespasm engine thread. 
Point Taken.. 
Obviously I do not wish to 'confuse the hell' out of anyone, as that would be malicious! lol!

I think it's just a testimony to how confused I'm getting with different "engines"/"mods"/".ent's"/"bsp's"/console commands" etc etc.

We were all "new" to this world, at some stage.

I'm sure i'll get to figure it all out in time!


On A Brighter & Less 'confusing' Note.. 
Quakespasm is working nicely with the quaddicted 'Arcanum' map.
No obvious bugs to report!

With the knowledge I learned from others earlier in this thread, I managed to get the 'Quoth' Quaddicted user map up and running.
I'm happy to say this is working fine so far with my Mac.

These maps will keep me busy for a while.
After that, I will come bck and ask for advice on installing the '5rivers' & 'Nehahra' maps.
I have attempted a quite a few launches with the above user maps using QS, but no dice.
Nehahra looks slightly more complex than 5rivers.

It may sound simple to some, but for newcomers, this world of mods & engines can be quite me! 
oh yes! that's why we have the Quake Injector. you just need to have java installed. openjdk works from what I know. downside is that it is only maps, and mods that stay fairly close to the original Quake, well, if you consider that a downside. Drake is currently not included which is why arcanum is not supported either.

I am not sure how to best structurise a console/parameter guide, especially since my most beloved engine has not yet been publicly released. if someone wants to write one quaddicted is open for you. Quakespasm and DirectQ are currently the "supported" engines. 
Sounds Lke A Good Idea 
I won't be able to use it. I can't upgrade to Java 6 on my 10,5,8 Mac, I only have Java 5.

Is there an older version of QI that would work on Java 5?

Are you saying I should write up a tutorial/walkthrough that can help Mac newcomers understand how to install maps?
I could do that based on my experience.

Sounds like a cool idea!

Givin' back some love!! 
Zersto&#776;rer Problem 
I received this shocking message when trying to install Zersto&#776;rer:

"You must have the registered version to use modified games"

I say shocking, as I have the official PAK files.

I am sure that I have the correct folder structure for this type of mod installation:

Zersto&#776;rer (this is the main root folder sitting on my desktop).

Inside it:

1 x ID1 folder (with the PAK0.PAK & PAK1.PAK files)
1 x Quakespasm engine
1 x zer folder

This is standard manual installation, as far as I know.

I found the 'Zersto&#776;rer' 1.1 patch files, and replaced the 'PROGS.DAT'& 'QWPROGS.DAT' files with the new lower-case ones from the patch.

Still nothing.

It still thinks the correct ID1 PAK isn't there.
I have 17 Quaddicted mods & maps all working fine, so I know that there is nothing wrong with my PAKs.

I heard that Mac/Linux are case-sensitive operating systems, and most of the files in the 'zer' folder are in higher case. Is this the problem?
I tried renaming them all in lower-case, but still no go.

I even tried placing the ID1 folder inside the 'zer' folder (which breaks with the convention of all the other 17 mods I have successfully installed).

I'm completely out of ideas!

Any advice?


Please check the thread at QuakeOne you did on Mac OS X Quake.

I'll help you to the final resolution of your problem AND I probably already posted what you needed in the last post in that thread that I don't believe you saw (it was like just a couple of days ago.

Plus it'll keep what is really a mod installation issue not related to Quakespasm out of this thread.

Quakespasm is a pretty awesome engine and it is really nice to see it let people on non-Windows platforms experience "true single player Quake" the way it is meant to be played. 
I should have used the Quaddicted forum, in retrospect.
Trust me, i'm gradually getting there!

I did see your post, and I did reply. I have been using that formula flawlessly for the last 17 mods I got from Quaddicted.

I'll continue this over @ the DP OS x thread.


I wish QS would stop spamming the console with all the "FindFile: blahblag.pcx" messages. 
yeah what is that?? if it's just looking for external images, it should be putting out errors unless there IS an image in the first place. 
it shouldn't be 
I was wondering how to enable vsync.

I've been looking around, but nothing comes up ('vid_wait' or 'vid_wait_override') are commands I have seen, but they are nor clear enough for me to understand..

Any ideas?


in the windows version, it's in the video options menu. 
But beware - some gfx cards on some platforms don't support app controlled vsync under OpenGL and expect you to set it via their control panel. 
Quakespasm is detecting vsync capability because it probably checking for that GL_swap_control extension, but needs to check for GL_ARB_sync for the Mac at least with the modern Macbook Pros

[That's kind of a fiasco and not fair to the developer. There shouldn't be several different ways to detect sync capability. On Windows even sometimes you have to check WGL extensions instead of the GL extensions. That's just wrong.] 
Well, whenever I run a user mod/map in QS, the Quake video options menu lists vsync as 'n/a'.

Is there away to enable it? 
Not without the developers making a change to Quakespasm. 
VSync Continued 
GL_ARB_sync is not related to vsync. Apparently that is something else (sync multiple GPUs). 
so basically what you wrote above is all wrong, yeah? If you find out how to handle vsync on OS X, let me know and I'll add it to the mac builds.

AFAIK, OS X has a different architecture than other OSs when it comes to swapping the buffers. So whether you can use VSync also depends on how the window / gl view are created on OS X. At least, that's what I remember - might be wrong or different now. 
SDL Can Do It Since 1.2.10 
But I think the extension check is unnecessary, at least on OS X. 
The Fruitz of Dojo port has had vid_vsync for ages although the cvar name is vid_wait.

void VID_SetWait (UInt32 theState)
const long params = theState;

// set theState to 1 to enable, to 0 to disable VBL syncing.
[gGLContext makeCurrentContext];
if(CGLSetParameter (CGLGetCurrentContext (), kCGLCPSwapInterval, ¶ms) == CGDisplayNoErr)
gGLVideoWait = vid_wait.value;
if (theState == 0)
Con_Printf ("video wait successfully disabled!\n");
Con_Printf ("video wait successfully enabled!\n");
vid_wait.value = gGLVideoWait;
Con_Printf ("Error while trying to change video wait!\n");

And the part that calls that function:

void GL_EndRendering (void)
// set the gamma if fullscreen:
if (gVidDisplayFullscreen == YES)
VID_SetGamma ();
CGLFlushDrawable ([gGLContext cglContext]);//CGLGetCurrentContext ());
// if minimized, render inside the Dock!
GL_RenderInsideDock ();

// check if video_wait changed:
if(vid_wait.value != gGLVideoWait)
VID_SetWait ((UInt32) vid_wait.value);
Of Course With SDL ... 
All the Core Graphics stuff is done by SDL, but that is how Fruitz of Dojo Quake does it ... 
Maybe my memory is wrong or I'm mixing things up. I guess I'll have to see whether the SDL way actually works at all, in that case I'll just remove the extension check. 
I wish QS would stop spamming the console with all the "FindFile: blahblag.pcx" messages

Chase_active 1 
It seems that qs has the chase cam bug that older engines have. With chase_active 1 set, if the camera 'hits' a wall, you can partially see through the wall. I think there was a fix for this on inside3d. 
Chase Cam Fixes 
Of the various options, if you want an essentially 100% fix as easily as possible, this one by MH is the easiest to implement:

There is a 95-99% fix by R00k that is even easier to implement, but then you'll get driven insane if you notice even a single weird situation that it fails ... particularly stepping backwards at an angle.

The MH fix does not take entities into consideration. This means doors and platforms and such. More "sophisticated" maps of the times where you turn a wall into a func_wall to make it transparent (FitzQuake .alpha support) or in the case of Remake Quake (alpha texture support, like Half-Life ... fence textures per se) the MH fix won't take func_walls into consideration because those are entities, not the "static unchanging world". 
Link Fail ... Attempt 2 
Yeah, our chase cam is broken. 
My second post in that thread does do entities, with the exception of statics (it wouldn't be hugely difficult to add statics to it either).

It's definitely worth following the subsequent discussion in it as there's valuable info and experimentation there from quite a few others. 
Macbook Pro "Delete Key" 
On at least the current Macbook Pros, there is a delete key where the backspace key would be.

And it works like the backspace key. If you hold "FN" and press the backspace key, it works like the delete key.

But it doesn't work right in Quakespasm. If I go to customize controls and try it bind it to a key, it says "Backspace."

But in the console it doesn't do anything.

The backspace key works right in Open Arena (ioQuake3) and in my modified ProQuake which uses the Fruitz of Dojo input code.

Oddly enough, the SleepWalkr RMQ Engine build doesn't have this problem. But Quakespasm 0.85.6 OS X does.

I'm just making a note of this here so it is recorded. I might incidentally bump into the nature of this issue and post it here. 
Does Not Appear To Be SDL Issue 
Here is the bad code:

case key_console:
if ((event.key.keysym.unicode != 0) || (modstate & KMOD_SHIFT))
#if defined(__QNX__)
if ((sym == SDLK_BACKSPACE) || (sym == SDLK_RETURN))
break; /* S.A: fixes QNX weirdness */
#endif /* __QNX__ */
if ((event.key.keysym.unicode & 0xFF80) == 0)
sym = event.key.keysym.unicode & 0x7F; <----------- Baker
/* else: it's an international character */
/* printf("You pressed %s (%d) (%c)\n", SDL_GetKeyName(sym), sym, sym);*/

It is turning a sym = 8 (backspace) into sym = 127 (delete)

That only occurs for case keyconsole.

If I change #if defined(__QNX__) to #if defined(__QNX__) || defined(__APPLE__) I no longer have this issue.

Am I the only Mac Quakespam user whose backspace key does not work correctly in the console with 0.85.6 ? 
I Get The Same Bug 
whether pressing the mac Delete key on its own, or Fn+Delete, both act as "forward-delete" in the quakespam 0.85.6 console… i.e. they act like the PC delete key. 
That Is On OS 10.7.2, Macbook 5,2. 
Same Here 
Does anyone know how that code got in there? 
If I change #if defined(__QNX__) to #if defined(__QNX__) || defined(__APPLE__) I no longer have this issue.
Thanks Baker.
Oz and Sander put some effort into enabling unicode chars, but i suppose OS X needs more work. Natchurallllyyy 
Baker: ioquake3 has a special handling of 127 in that unicode portion of the code: in sdl_input.c, find this:

if (down && keysym->unicode && !(keysym->unicode & 0xFF00))
unsigned char ch = (unsigned char)keysym->unicode & 0xFF;
switch (ch)
case 127: // ASCII delete
if (*key != K_DEL)
// ctrl-h
*buf = CTRL('h');

So, if I change the code around line 363 to the following, does it work OK on osx?

case key_message:
case key_console:
if ((event.key.keysym.unicode != 0) || (modstate & KMOD_SHIFT))
if ((event.key.keysym.unicode & 0xFF80) == 0)
int c = event.key.keysym.unicode & 0x7F;
if (c == 127 && sym != SDLK_DELETE)
sym = 8; /* CTRL-h */
else sym = c;
/* else: it's an international character */
/* printf("You pressed %s (%d) (%c)\n", SDL_GetKeyName(sym), sym, sym);*/

(Steve: this also removes the qnx special handling of yours: make sure it doesn't break anything.) 
> Does anyone know how that code got in there?
Take some time to read SDL_keyboard.h 
Do you guys intend to improve the MP experience too? Because this could - at least for us Unix folks - be the engine to end them all.
I saw that you increased the particle size (texturescale var set to 1.27 i think, can't check atm, am @work) which is not so great for MP, would like to see a cvar for this.
Beside that, I checked out the source and added pq_needrl & friends as well as .loc support and other little things, is there interest in this? 
Re: Multiplayer 
How does texturescalefactor, which is about drawing the particles and doesn't seem to have anything to do with net traffic, can not be so good with multiplayer?

As for additional features suggested, we can review and possibly merge patches if you submit them to us through our tracker on our project page. 
Particles In MP 
I think a large part of the particles problem is that the MP community likes to run with high values of host_maxfps (in order to get smoother movement). Because particles are primarily fillrate-bound, lots of particles many more times per second will have a disproportionately higher impact on fillrate (esp when squeezing a 64x64 non-mipmapped particle texture into tiny screenspace areas). 
so are mipmaps actually a performance gain rather than just a (subjective) quality gain? I could mipmap the particles pretty easily if that is the case. 
I never understood that either. I always thought, logically, it should just be a visual improvement but for some reason it factors into performance as well. Isn't it just interpolating across the texture, regardless of the polygon size on the screen? Why do mips matter for performance? 
Re: Multiplayer 
No, for me it's not about FPS in this case. They just get too big and block view more then necessary. With lots of rockets and explosions it really gets annoying, I tried it. Doesn't matter or may even be a visual enhancement in SP that's why I suggest to have a cvar for it (going from 1 up).
I'd like to see quakespasm to stick to the proquake standards for MP.

Sorry that I didn't make that clear in the original post. 
Ok, patches uploaded to project homepage. 
This more or less says it:

Summary: reduced memory bandwidth and improved cache utilization. 
Cache efficiency, OK, I guess I can see that ... 
Cheers LeopolD. 
Keyboard Layouts 
Something that I find slightly annoying (in some other engines, too) is that, even though the US layout is used, the console key sticks to the rules of my QWERTZ layout. It has ^ which, along with ´ and `, doesn't print the symbol right away, but instead requires another key press - space or vowel - because it's supposed to be used for accented letter like in French, e.g. â and é. So in QS, and also Q3/QL, for example, this requires me to press the backspace key twice everytime I open the console in order to delete the ^. More otfen than not I forget to do it and have to retype the whole string of commands because of it. 
The console thing happens to me in Q4 too.

I'm also getting a case where I hit the toggleconsole key in QuakeSpasm and as soon as I start typing the console goes away - I need to hit it a second time to bring it back again. Definitely a case of a second ` being cached somewhere as Alt-Tabbing away from the engine to something that has a text editor or text box will bring the ` key with it as the first key in the editing area.

A case can be made for clearing all input state when transitioning between values of key_dest.

A minor niggle but having scr_showfps on should automatically force the tileclear areas to be redrawn each frame. This is an old carryover from Fitz. I'm dubious about the value of skipping this draw anyway.

And +mlook should be enabled by default (set in_mlook.state |= 1 on startup should be all that's needed). 
There is something weird with autoexec.cfg files. Install and try to start a coop server eg like this:
./quakespasm -dedicated -game bastion +deathmatch 0 +coop 1 +teamplay 1 +map bastion

> deathmatch
"deathmatch" is "1.000000"

and all the other cvars were ignored too. It works fine if I delete bastion/autoexec.cfg. That file is setting completely unrelated cvars.

Minor issue 2:
If I load a -dedicated it meshes mdl files and searches for .lit files. Seems unnecessary. 
also weird is that if you remove the autoexec.cfg the console gets spammed with warnings:
static light with incorrect attenuation at: '-281.0 1959.0 -316.0'
light with wait != 2 at: '-281.0 1959.0 -316.0'
static light with incorrect attenuation at: '-280.0 1960.0 -252.0'
light with wait != 2 at: '-280.0 1960.0 -252.0'
static light with incorrect attenuation at: ' 71.0 1959.0 -316.0'
light with wait != 2 at: ' 71.0 1959.0 -316.0'
static light with incorrect attenuation at: ' 72.0 1960.0 -252.0'
light with wait != 2 at: ' 72.0 1960.0 -252.0'
static light with incorrect attenuation at: '1176.0 1728.0 -312.0'
light with wait != 2 at: '1176.0 1728.0 -312.0'
static light with incorrect attenuation at: '1216.0 2064.0 -56.0'
light with wait != 2 at: '1216.0 2064.0 -56.0'
PR_AllocStringSlots: realloc'ing for 768 slots
static light with incorrect attenuation at: '-392.0 1856.0 -280.0'
light with wait != 2 at: '-392.0 1856.0 -280.0'
static light with incorrect attenuation at: '-392.0 1856.0 -128.0'

i guess this is kinn's progs? but why doesn't that show up with the autoexec? 
That only happens if you have developer 1 on.

And yes, it's a load of shit in my progs that i should have removed (there's a ton of other stupid crap that goes on in my maps with developer 1 as well tbh).

No idea why the autoexec affects that though... 
.. from that bastion mod doesn't have a newline at the end of the file, and quake's original Cmd_InsertText() didn't think about such a case whereas the qw version has it fixed. I fixed it in the svn as of rev.639: 
damn, that's evil. thanks for this amazingly fast fix! 
While I Remember ... Gamma On Lose/Gain Focus 
On OS X at least, a nicety would be ...

1) .. if Quakespasm is in a window (not fullscreen)
2) And I switch to another application
3) Quakespasm should restore the system normal gamma on "lose focus" and then restore the game normal gamma setting on "gain focus". 
Quakespasm doesn't seem to flush sound names between maps.

If you load up one map with many sounds and then load up another map with many sounds, the engine will crash with "S_FindName: out of sfx_t"

this was inherited from FQ085. 
make install does
cp quakespasm /usr/local/games/quake

Shouldn't that be cp quakespasm /usr/local/games/quake/ instead? 
Anyways, SOMEONE just made an Archlinux AUR package

Probably really ugly. 
Sound name flush, DESTDIR/trailing slash and mlook enabled by default would be good, but not much time at the moment. Patches ?

I'm curious about LeopolD multiplayer stuff too. (The format is a little wrong though. Individual file patches are normally concatenated together to form meaningful groups, but they'll get looked at sometime). 
I will give mlook, always run (!) and the trailing slash a try. 
always run and trailing slash were simple and clean.

But mlook seems to be evil. I also thought about making some better key defaults (right mouse to jump for example) so newbies get a modern keymap but then realised that this is config land. I gave up. 
What I did was add a cvar called freelook, then every check just becomes "if ((in_mlook.state & 1) || freelook.value)". Reason for this cvar name is that precedent is set in both Q2 and Q3A so it's expected behaviour for players. 
Yeah - some of these config options can be hassles.

Not keen on changing the always run default myself.
freelook.... hmmm. Maybe we can live with the mlook hassle. It reminds people of how things *used* to be, laugh.
Slash is applied. 
Out Of Sfx_t 
Maybe the solution for this is adopting the S_BeginRegistration/S_EndRegistration/s_registration_sequence stuff of q2 into q1. I'll try making a patch, possibly this evening. 
Out Of Sfx_t, #2 
it would be good if I had some testcase content for it, though. 
I think just setting num_sfx to 0 in Host_ClearMemory is all you need. I've done this in C++ with an std::vector<sfx_t *> which is NULLed then cleared from Host_ClearMemory, but of course that's not an option here. 
Freelook Cvar Sounds Nice. 

I also thought about making some better key defaults (right mouse to jump for example) so newbies get a modern keymap but then realised that this is config land. I gave up.

that sounds like a good idea. I think the main thing that needs updating is moving the movement keys to WASD.

I forget which file the actual defaults are in, but if quakespasm provided a replacement config file that had a higher search-path precedence than the originals in id1/pak[0/1].pak, but lower than everything else, it should work ok.. (?)

re: autorun, does anyone play without autorun? i guess changing the default is approaching a fine line between "good defaults", and "screwing with the game too much", although my initial reaction is having it on is a good default. 
Other things that need changing are -heapsize and the max_edicts cvar. -heapsize needs to be replaced with proper virtual memory, and max_edicts shouldn't exist at all - both of them are loading work onto the player that should really be handled automatically by the engine. 
Patch Format 
Well, yeah, I went from file to file because I had made some other changes as well that don't have anything to do with the MP or don't work at all.
However you should be able to do a
$ cat *patch > big_patch
and apply that since you will need all of them anyway.

My wishlist:
1) independent FPS for single player - going from 600 and more FPS in MP to forced 72 FPS in single player just to prevent elevators from fekking up on a CRT running @120hz is not a nice experience.
2) gl_contrast would be really nice.
3) a well working demo menu.

Most wished and hoped for of course is independent FPS:) 
Keyboard Setup 
Is there any way to force a keyboard layout? I don't like the console key being a couple of keys left of backspace and would prefer the setting that Fitzquake uses, which seems to force a US layout. Also, Quakespasm has some problems with the console flickering for some reason. I suspect that it's related to the Japanese input program in windows, which uses the same key as the console, and is a pretty horrible piece of shit anyway...

Lately I really realised just how much I hate Windows 7. 
if gl_texturemode setting was saved automatically or available in graphics options I would be extra happy. It can be added to a command line shortcut or config file pretty easy of course :) 
(gl_texturemode in options)++
is a command, but could be re-implemented as a cvar... or they could just hack it into the config like vid_restart and +mlook get added. 
already implemented as a cvar with a callback in the svn repo. 
Console Key 
you can always use shift+esc combination for console 
Higher Sound Quality 

Is it possible to increase the native sound rate from 11khz to 44khz? I couldn't find a command line or console variable. Also I've always found it bizzare how the weapon doesn't sit on the HUD like software Quake, is it possible to fix this in GL or is that a fault of Id's programming with the GL code? 
Is it possible to enable 'Friendly Fire' in Coop or is that only a DMFlag? Also is it possible to have items respawn as it can be a hassle on some maps,

Many thanks! 
Friendly Fire 
Friendly fire is possible, set "teamplay 1" on the server and then make sure to wear the same color pants, "color x y" where y has to be the same number for both/all of you.

If you just raise the playback rate to 44khz, which some engines can, but then keep the standard sounds, most enginges won't interpolate and the result will sound terrible.

There are replacement sound packs, and some of them even faithful to the original, but I can't find an active link to one at the moment. 
Replacement Sound Pack 
Thanks for your sound advice Mandel :)

I recall seeing a specific sound pack years ago but I can't recall the exact name, it's similiar to 'Mindcrime' but he was the author of the Nehahra project. 
this one:

but that link doesn't work, at least not here. 
it sucks too. and is full of copyright violating if I understand the laws correctly.

ericw did some great work with interpolation ( ), I hope his changes will get merged into Quakespasm soon. 
Cheats And Demo Recording 
Howdy once again folks,

Is their a cvar to disable cheating online? Although in my case 'Noclip' came in handy when scripts decided to break or the map wasn't entirely coop friendly, secondly does Quake support demos over multiple levels like Doom? I replayed my Contract Revoked coop demo but after exiting the first map it just loads random images from each sequential level and dies. 
not many engines support demos that span multiple levels.
this is easily worked around, however, by:
-stopping the recording before loading the next level
then, after the new level has loaded
-type "disconnect"
-type "record newdemo"

you will have a second demo that continues from the first. 
@Necros Fixing That Is Trivial In The Engine 
There are 2 ways:

1. The "DarkPlaces" way. I wrote a 3 line tutorial on how that works.

2. szo's more thorough way. Also discussed in that thread. Which is actually "design correct" from an engine design standpoint, but not completely obvious to someone not familiar with the inside of the Quake engine.

Engines that support playback of a demo recorded over multiple maps:

1. Quakespasm
2. DarkPlaces
3. Modern ProQuake 
Engine Compatability 
If Quakespasm is true then why did it splutter and crash yesterday? :o 
You Might Considering Posting Your Demo 
I'm thinking it is unlikely the Quakespasm team would add the multi-map playback feature without testing it.

It could be something the mod does on level load or a 100 other things or something occurs that the engine wasn't expecting.

If you try to play back your demo in an engine without multi-map playback, the engine doesn't crash. It just displays a blank screen. 
If the demo is created right, every engine can playback across map changes. So the focus should be more on "multi-map recording".
There used to be a fix that sometimes worked for protocol 15 demos: appending (joining) an additional demo snippet to the existing (multi-map) one with BJP's convdem would fix it for playback. However, last time I tried I couldn't get that to work (demo recorded with QS). 
Was probably just eliminating the "reconnect" command crammed into the demo. 
RE: Engine Compatability 
Cross-level demo playback support is in the svn repository and not in an official release yet. Until we make a new release, just compile your binary from the svn and it should work. 
I think the current build (exe) does not have that feature. not sure what version it is. 
Reload Before Posting 
can one easily cross compile Quakespasm (without codeblocks)? 
Builds From SVN 
Yes, cross-compiling is actually very easy. I just did that, here are win32 and win64 builds from current svn: 
Contract Revoked Coop Demo 
Here is the malfunctioning demo file in question:

Inform me whether you can get it working correctly and what method was implemented. 
RE: Contract Revoked Coop Demo 
yes it works just fine, although it would have been better if you had told that it is a 35mb demo. The ultra scientific method to play it is already explained: The latest official 0.85.6 version doesn't support cross-level demo playback, so either build the code from svn, or download a prebuilt package for which I gave links just above, i.e. win32 and win64 versions. 
I grabbed the new build and it seems to still have no brightness.
Reading some of the forum posts I found a patched SDL lib that may fix it but had no luck.
If in fact I ran the lib correctly by dropping it in the quake dir
[quote]bluntz@bluntz-desktop:~$ cd quake
bluntz@bluntz-desktop:~/quake$ ./quakespasm export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
Command line: ./quakespasm export LD_LIBRARY_PATH=.:
Found SDL version 1.2.14
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.85.6 (c) Ozkan Sezer, Stevenaaus
Playing registered version.
Console initialized.
UDP Initialized
Exe: 14:03:52 Dec 31 2011
64.0 megabyte heap
Video mode 1280x1024x32 initialized
FOUND: ARB_multitexture
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
Warning: vertical sync not supported (swap interval is -1.) Make sure you don't have vertical sync disabled in your driver settings.
FOUND: EXT_texture_filter_anisotropic

Sound Initialization
SDL audio spec : 11025 Hz, 128 samples, 2 channels
SDL audio driver: pulse, 8192 bytes buffer
Audio: 16 bit, stereo, 11025 Hz
SDL detected 0 CD-ROM drives

========= Quake Initialized =========

The slider had no effect but the client was usable.
This client seems to about the best option for us Linux Quakers.
I hope someone else could please help with this one small issue that stands in our way.:eek: 
That Should Be 
like this?
bluntz@bluntz-desktop:~/quake$ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./quakespasm
Command line: ./quakespasm
Found SDL version 1.2.14
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.85.6 (c) Ozkan Sezer, Stevenaaus
Playing registered version.
Console initialized.
UDP Initialized
Exe: 14:03:52 Dec 31 2011
64.0 megabyte heap
Video mode 1280x1024x32 initialized
FOUND: ARB_multitexture
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
Warning: vertical sync not supported (swap interval is -1.) Make sure you don't have vertical sync disabled in your driver settings.
FOUND: EXT_texture_filter_anisotropic

Sound Initialization
SDL audio spec : 11025 Hz, 128 samples, 2 channels
SDL audio driver: pulse, 8192 bytes buffer
Audio: 16 bit, stereo, 11025 Hz
SDL detected 1 CD-ROM drive
CDAudio initialized (SDL, using /dev/scd0)
CDAudio_Init: No CD in drive

========= Quake Initialized ========= 
I do not remember having any issues until I switched video cards from Nvidia to this Ati 6850.
Also I am not sure if I did not compile the GLX build as I seldom run SDL versions of anything if I have a choice.
Has anyone else built the GLX client ????? 
Version 0.85.7 of QuakeSpasm is released:

* Added support for cross-level demo playback
* gl_texturemode is reimplemented as a cvar with a callback and the
setting is automatically saved to the config
* Fixed execution of external files without a newline at the end
* Reduced memory usage during reloading of textures
* Fixed compilation on GNU/kFreeBSD (Debian bug #657793)
* Fixed backspace key on Mac OS X
* Disable mouse acceleration in Mac OS X
* Worked around recursive calling of the anisotropic filter callback
* Console word wrap and long input line fixes
* Verified correct compilation by clang (using v3.0)
* Several other small changes mostly invisible to the end-user 
Thanks, Good Job 
Will cross-level demos recorded with QS work with other engines, too (provided the protocol is right), or does this release only enable proper playback? 
Cross-level Demos 
if the engine in question knows how to handle the "reconnect" stufftext, than they are able to playback. So, I guess the answer to your last question is yes, we enabled proper playback, although I don't know what else would be expected of us to do. 
ericw did some great work with interpolation
Our main priority is reliable playback, and his patch seems to have issues. Perhaps they can be resolved ? Anyway, posting here would be best 
Nice to see the project keeping its momentum, will dl asap! 
pretty cool that you are so quick to make changes. n1 :)

S_FindName: out of sfx_t is still there though. :( 
Out Of Sfx_t 
yeah I forgot doing that. Most possibly will be fixed in next release along with Eric's new sound resampler. 
it's cool, i only wanted to mention it to keep you aware of it. :) 
can you provide some test content so that I can test solutions to the "out of sfx_t" issue? 
isn't this a case of just not clearing out precached sound names between map loads?

also, i don't know what you need exactly. do you need actual sounds? my gut tells me you could just precache the same sound with different filenames and it'd work fine.
i hesitate because it would take an hour to assemble all the sound files needed to test it with the actual maps.

what i'm doing is i load up a map that precaches 465 sounds.
then i load up a map that precaches 164 sounds.
this causes the error.

while some sounds used are the same (player sounds or whatever) other sounds are not (ambience, mostly, but also monsters).

so while maybe 60~ sounds are shared, and don't need to take up a spot on the list, the others are new and need to be added.

the error comes from S_FindName:
if (num_sfx == MAX_SFX)
Sys_Error ("S_FindName: out of sfx_t");

i believe all that is needed is to do something like this to reproduce it:

precache MAX_SFX - 1 sounds directly from qc and then have your map precache one sound.
then load a map that precaches another sound that hasn't been precached yet and it should cause the error. 
btw: just using soundlist to count how many sounds are being loaded (i have to quit the engine each time and load up the different maps to avoid the crash). 
you reported the error, so I assumed that you have a testcase (some mapset+progs or whatever) already, which would make my life easier. apparently I assumed too much. 
yeah, i don't usually bug test stuff myself and only find problems when i run into them during normal use.

i'll see what i can do but it'll be big (it's more than 512 unique sounds, after all).
maybe i can find a batch program to convert everything to 11khz 8bit or something. 
Should be possible to lower the define of MAX_SFX for testing purposes. Bring it down to within range of 2 id1 maps for example, and see if you can trigger the error that way. 
Also Beware... 
Static and local sounds (including those caused by menu navigation) will also go into your sfx_t array, so mind that you don't do anything to break those... 
RE: Sfx_t Bewarenesses 
ideas crossing my mind are adopting quake2 style sound registration and adding flags like SFX_PERSIST to preserve those static and local sounds. The solution also has to make sure that all sounds are cleared upon gamedir changes while the engine is alive, which it doesn't as it is now. Hmmm... 
Quake2 Style Sound Registration 
I like that idea. The Q2 code also solves some messy problems like restarting the sound system in mid-game. Ideally sounds should be treated the same way as textures for a very large part - a lot of the same concepts apply. 
Is gamma fixed in the new release? 
Do You Mean With Linux ? 
No. I think thats an SDL/XOrg issue (see webpage).
I've added that to our readme. 
Xorg even seems to stomp a custom gamma setting..
bluntz@bluntz-desktop:~/quake$ ./quakespasm & xgamma -d :0.0 -gamma 5
[1] 3103
-> Red 1.000, Green 1.000, Blue 1.000
Command line: ./quakespasm
Found SDL version 1.2.14
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.85.7 (c) Ozkan Sezer, Stevenaaus
Playing registered version.
Console initialized.
UDP Initialized
Exe: 16:40:36 Mar 13 2012
64.0 megabyte heap
<- Red 5.000, Green 5.000, Blue 5.000
bluntz@bluntz-desktop:~/quake$ Video mode 1280x960x32 initialized
FOUND: ARB_multitexture
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
Warning: vertical sync not supported (swap interval is -1.) Make sure you don't have vertical sync disabled in your driver settings.
FOUND: EXT_texture_filter_anisotropic

Sound Initialization
SDL audio spec : 11025 Hz, 128 samples, 2 channels
SDL audio driver: pulse, 8192 bytes buffer
Audio: 16 bit, stereo, 11025 Hz
SDL detected 1 CD-ROM drive
CDAudio initialized (SDL, using /dev/cdrom)
CDAudio_Init: No CD in drive

========= Quake Initialized =========

If anyone else is able to correct the brightness on linux would you please give an example command line that works for you? Nothing posted has worked for me and I really do not want to try changing out the SDL lib systemwide. 
Some Missing Features 
I just installed QuakeSpasm today, on my Mac mini 2010 (OS X 10.6.8), and tested it for a few hours. It's working very well, but I have a few comments about it and suggestions to improve the engine :

1. Currently, there is no FSAA (antialiasing) option. The GLQuake app (from Fruitz Of Dojo) has it and it's a great feature. Why not QuakeSpasm too ?

2. We can't put QuakeSpasm to the background, using command-H, like what we can do with GLQuake (FoD version) or Quake 3. This is highly desirable. Currently, we have to quit the app just to read our emails or to come here.

3. I noticed a frequent video glitch in QuakeSpasm, like a screen redraw jerkiness. I suspect this is because of the absence of any vertical synchro option. This is highly desirable too, since it's a bit painfull on the eyes.

And by the way : thanks a LOT to support that venerable good'old game. I believe that even by today's standards, Quake1 and Quake3 are still the best games around, even after all these years ! 
2. We can't put QuakeSpasm to the background, using command-H, like what we can do with GLQuake (FoD version) or Quake 3. This is highly desirable. Currently, we have to quit the app just to read our emails or to come here.

even on windows tabbing out of the engine produces generally bad behaviour from not having mouse control to the engine just crashing.

it's something that i think would be nice to have, if you get the chance. 
even on windows tabbing out of the engine produces generally bad behaviour from not having mouse control to the engine just crashing

Hmmm. That was not a known issue to me.

Barnak's suggetsions sound reasonable, and Ericw has sent a quick AA Patch but it has bugs. Oz is pretty cluey with AA, so maybe it'll appear soon. 
ok, so i go to check out what i was doing to create the problems... and nothing happens. :P
i think maybe that was in an earlier version and i got paranoid about tabbing out of the engine that i never noticed it got fixed.
thanks for that, then. :) 
I tested a new built of QuakeSpasm from Ericw with 4x FSAA, and your ne_ruins MOD is causing huge screen redraw problems. It's related to FSAA and I suspect it's also related to the large hi-res background picture used in your MOD (cloudy sky).

The same QuakeSpasm built with 4x FSAA is working great on all the other maps I tested yet. I didn't noticed any drop in frame rate yet.

I'll test the app on the Honey stuff later today... 
I re-tested the app with "sky" set to 0 (default Q1 style sky box) and the video problem is still the same (actually, it's a bit more persistant).

Again, it's clearly related to FSAA, but I didn't experienced the bug on any other map yet. 
take it up with the quakespasm team, i have no clue what's wrong!
stevenaaus mentioned that the aa thing has bugs. 
Yeah It's My Fault... 
I am working on the (currently buggy) aa patch and sent Barnak the custom build. we're trying to debug it by email but i'm not totally sure what is wrong. 
Damm, that Darkplaces has a nice chase cam. HoT's works flawlessly, but view is obscured by a huge player model when your back is to wall. With darkplaces, the model just slides away, or maybe the camera is moved slightly forward of player ?. Proquake (1.30?) has a nice view, but go into start map , to the corner immediate left of normal skill teleport, and view is totally obscured. FitzPlus v2 gets obscured too, and a little hard to see differences, though i suppose they exist. 
Custom Textures 
I'm having problems with custom textures for the HUD (menus, console, etc). They aren't working yet, while textures replacements for the walls, floor, ceilings, items, etc, are all working.

For example, suppose you have a texture called "NUM_2.tga" to change some of the HUD elements, where do you put it in the id1 folder ? What is the directory structure for the HUD and console textures ?

Of course, I'm using QuakeSpasm... 
try /id1/gfx? 
FitzQuake Supports Only 
Replacement textures for the maps. Nothing else. Not mdl models, charset, HUD, etc.

I don't believe this has changed in Quakespasm. 
quakespasm does do mdl replacement.
the textures go in /progs/ with the format: modelname.mdl_#framenum#.tga 
Glad to see they are using the DarkPlaces replacement texture naming convention. I'd like to see that as the "standard" naming convention because the other way of doing it is very kludgy.

(Engine wise, adding external texture support for sbar pics and menu items is a bit of a pain.) 
The menus and the weapons textures replacements don't work.

I've created a "progs" and a "gfx" folder inside the "id1" directory, and added the textures (from pk3 packages found on the Quake Retexturing Project web site). It doesn't show while in the game.

For example, there's a texture called "nail.mdl_0.tga" to change the nail gun. I also tried "nail.mdl_#0#.tga". Doesn't show in QuakeSpasm.

What am I doing wrong ? 
Model Textures Go In Id1/progs Folder 
@Necros ... 
Are you sure about external model texture support? I'm not seeing that in the Quakespasm change log.

/Too lazy to actually check myself but eventually I will. 
oh my... i had rmqe in my gui loader and not qs.
sorry. :S 
Aaargh ! 
Damn ! So no weapons and hud replacements in QuakeSpasm ?

O well, ... 
i still play with all the original textures and i like to disable texture filtering, so fitzquake and quakespasm are perfect for me.
but quakespasm isn't really an eye candy engine. i think you would be better served with another, fancier, one. 
Quakespasm is pure eye candy. and if it means that eye poop is not supported then yay! 
DarkPlaces Standard For MDLs 
Should be picked up universally if you're going to support this at all. Other ways aren't just kludgy, they're flat-out broken. Check out progs/s_light.mdl and progs/s_light.spr in your ID1 pak0.pak - if you have progs/s_light.tga, which of these is the texture for? 
Then I'm wondering why textures replacement is supported for all the floors, walls, ceillings, etc, in QuakeSpasm, while the weapons and hud textures aren't.

This is weird ! 
They are handled completely different in the code/engine. 
QuakeSpasm Vs Fitzquake Vs DarkPlaces 
I tried Fitzquake and DarkPlaces and I prefer QuickSpasm.

Fitzquake is almost identical to Fitzquake, I don't see much differences.

What are your opinions on Fitzquake ?

DarkPlaces is fat, heavy, and sloooow ! The frame rate is very low for what it does.

I don't like its rendering style. There are three slide bars for the gamma and brightness, and I was unable to get the map looking right.

The weapons textures replacement is working in DarkPlaces, but it isn't that great after all. 
I meant :

Fitzquake is almost identical to QuakeSpasm, I don't see much differences. 
Quakespasm is based on Fitzquake. The differences are mostly subtle and under the hood. It's now slightly more versatile than Fitz085 and more frequently updated.

Darkplaces is indeed slow and cluttered with features (as well as 'unfeatures'). Unless you're a sucker for over-the-top eye candy or intend to play/create advanced mods, I would not recommend it (for regular Q1SP). 
i would use fitzquake, except it exhibits the multicore timing bug for me.
otoh, like neg says, qs is updated often, while fq only has sporadic updates (and that's not a dig at you, metl :))

as for DP, it breaks standard quake functionality in a few spots (tracelines in particular) which is incredibly annoying, almost requiring you to make two seperate progs.
that said, DP isn't horrible. it's all those absurd texture packs and OTT particle packs that make it seem that way. it does require a more powerful machine, but it also has some great stuff in it to. of course, i'm probably the only person who runs with nearest neighbour texture filtering and q3 water shaders. (the reflection/refraction effects are nearest neighbour too!) 
@Spirit Mostly 
I wouldn't be negative towards an engine feature like external texture support just because it gets used in a manner you find tasteless.

A lot of single player maps are bad, but that doesn't make mapping bad nor the idea of people learning mapping bad. 
Long Live QuakSpasm ! 
Ok then, it's all clear to me now.

I'm sticking to QuakeSpasm.

I hope there will be an update to add FSAA and vertical sych support, and the Command-H feature of OS X. Custom textures support for the HUD and menus would be appreciated too ! (I don't care anymore about the weapons texture replacement...) 
Just force FSAA and v-sync in the nvidia/ati control tab. 
There is no nvidia/ati control tab on OS X. It's an app thing. 
On linux you can do it with
nvidia-settings --query=fsaa --verbose
to get FSAA modes, then
__GL_FSAA_MODE=12 quakespasm
But it doesnt seem to work/do anything with OS X. 
Gamma is working now at least it is on Squeeze.
However new bugs have cropped up in the newest build for me.I cant connect to a server ,it says connection accepted but just sits there.
Also if I try starting Single player I get this
bluntz@debian:~/quake$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
bluntz@debian:~/quake$ ./quakespasm -fullscreen
Command line: ./quakespasm -fullscreen
Found SDL version 1.2.13
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.85.7 (c) Ozkan Sezer, Stevenaaus
Playing registered version.
Console initialized.
UDP Initialized
Exe: 16:40:36 Mar 13 2012
64.0 megabyte heap
Video mode 1280x1024x32 initialized
FOUND: ARB_multitexture
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
Warning: vertical sync not supported (SDL_GL_GetAttribute failed). Make sure you don't have vertical sync disabled in your driver settings.
FOUND: EXT_texture_filter_anisotropic

Sound Initialization
SDL audio spec : 11025 Hz, 256 samples, 2 channels
SDL audio driver: dsp, 16384 bytes buffer
Audio: 16 bit, stereo, 11025 Hz
SDL detected 1 CD-ROM drive
CDAudio initialized (SDL, using /dev/cdrom)
CDAudio_Init: No CD in drive

========= Quake Initialized =========

execing quake.rc
execing default.cfg
execing config.cfg
execing autoexec.cfg
No spawn function for:

classname trigger_voteexit
model *7
spawnflags 1.0
target e2
message E2 The Realm of Black Magic
map e2m1
No spawn function for:

classname trigger_voteexit
model *8
spawnflags 1.0
target e3
message E3 The Netherworld
map e3m1
No spawn function for:

classname trigger_voteexit
model *9
spawnflags 1.0
target e1
message E1 Dimension of the Doomed
map e1m1
No spawn function for:

classname trigger_voteexit
model *17
spawnflags 1.0
target e4
message E4 The Elder World
map e4m1
No spawn function for:

classname trigger_voteexit
model *24
spawnflags 1.0
target dm
message The Deathmatch Arenas
map dm1
No spawn function for:

classname trigger_voteexit
model *27
spawnflags 1.0
target ctf1
message CTF Episode One
map ctf1
No spawn function for:

classname trigger_voteexit
model *34
spawnflags 1.0
target ctf2
message CTF Episode Two
map ctf9
No spawn function for:

origin '416.0 2856.0 -144.0'
angles ' 0.0 90.0 0.0'
classname info_vote_destination
targetname e1
No spawn function for:

origin '992.0 2856.0 -144.0'
angles ' 0.0 90.0 0.0'
classname info_vote_destination
targetname e2
No spawn function for:

origin '416.0 3224.0 -144.0'
angles ' 0.0 270.0 0.0'
classname info_vote_destination
targetname e3
No spawn function for:

origin '992.0 3224.0 -144.0'
angles ' 0.0 270.0 0.0'
classname info_vote_destination
targetname e4
No spawn function for:

origin '768.0 2880.0 -304.0'
angles ' 0.0 90.0 0.0'
classname info_vote_destination
targetname ctf1
No spawn function for:

origin '768.0 3200.0 -304.0'
angles ' 0.0 270.0 0.0'
classname info_vote_destination
targetname ctf2
No spawn function for:

origin '1112.0 3040.0 -144.0'
angles ' 0.0 180.0 0.0'
classname info_vote_destination
targetname dm

3 demo(s) in loop


Using protocol 666
Couldn't find a cdrip for track 4
test entered the game
Client test removed
No spawn function for:

origin ' 81.0 1024.0 64.0'
classname place_model
model progs/beam1.mdl
No spawn function for:

origin ' 81.0 1024.0 64.0'
angles ' 37.4 -180.0 0.0'
classname item_luz
speed 400.0
Can't find function rain_think
Host_Error: ED_ParseEdict: parse error
Shutting down SDL sound 
you put some shit in your id1...

did that server work earlier? 
no spawn function for: xxx

means the map has an entity with a classname that the progs.dat doesn't have a function for.
that is to say, you are missing the progs.dat/mod for this map. 
Gamma Fixed 
Thanks folks
I have a modified dm2 with ent files in the maps folder.
I was using my maps folder from my SMC modded DP installation.

And yes the Gamma is working now. 
I have not yet been able to connect to a mp game.
It just sits at the console.Saying connection accepted. 
Re: Server 
Had the same problem. You have to make sure that your router leaves the source port untouched. 
Success ! 
Got it to connect finally.
Runs great!The only things I do not like is it seems it does not support the chat function switches like location %l and such.
Also the chasecam is very choppy. 
is there any way to stop entities flickering when there are many being displayed at once? command line switch or something maybe? 
Sound Crackle 
Tried QS for first time today (Win64). Anyone else have sound crackle issues? 
Uhm, By The Way 
The "can't find aaaa.pcx" messages are gone, but the corresponding tga warnings are still spamming the console. 
Well, i don't know much about it, but i suppose they're occasionally useful error messages. 
Text Overflow Error 
I return once more :D

This time with a conundrum concerning one of my old favourite multiplayer mods - CoCoT's infamous 'Ultimate Quad Capture 1.4'! It can be found at Mod Database as the current new site is being renovated.

When accessing the menu to configure game settings, Quakespasm displays a repeat error message in the top left hand corner and some of the text gets cut off in the menu.

In the example screenshot, 10 game modes are meant to be displayed yet only 8 appear. You can still select the 10 with the appropriate key but their isn't any indication at all.

I never had this problem in Fitzquake, could it be a corrupt/odd config file?

Many thanks! 
that also happens in the menus in my rpg mod. same error message and not all the centerprint text is displayed. 
it's using the overloaded centerprint builtin, if that's any help. 
I suspect that you won't be very happy with the answer, but the problem is that there's been an overflow in the function PF_Varsting.


Oh, fine then. In the regular quake code PF_Varstring uses a standard c function called strcat to combine the list of strings passed to centerprint into a buffer. strcat is a a very classic c function, and so offers no error protection. If you give it strings which are too long then it will happily overflow the buffer with them.

The standard engine code has a buffer which can hold 255 characters, but just blindly assumes that you wouldn't pass it strings that combine to a higher character count. Evidently the menu in CoCoT's mod exceeds this limit. In regular engines this overflows the buffer, which works as far as the menu is concerned but might overwrite something important in memory.

Evidently Quakespasm uses a safer function for combining strings or does some extra manual checks. The upshot is that your string gets truncated, as the error message has told you. It's hard to fault Quakespasm for fixing a bug that could potentially crash the program.

I suppose that Quakespasm could increase the size of the buffer somewhat to accomodate the mod (which has evidently been getting away with breaking the rules in other engines). It does seem best to recommend that you don't pass more than 255 characters total into centerprint, lest one day it causes memory corruption or a general protection fault. 
interesting that is actually a bug. also interesting, i tested the rpg mod quite extensively in FQ and never once experienced a crash or any kind of memory corruption. 
FQ might not have crashed because of the way the compiler used to make it into an exe reserved the static buffer used in PF_VarString(). Different brand of compilers and even different versions of the same compiler has every right to adjust such things to their liking. So, FQ never crashed is *purely* by luck. What we do in qs is not trusting our level of luck. 
does this have anything to do with needing to use -zone 2048 to prevent crashes? i recall someone on inside3d mentioning that quakespasm allocates strings differently than other engines. 
No, nothing related to -zone, at all. 
Adding Features 
Can I request that IPlog be added for Identify please.
It would be swell to know who I am playing against. 
look at their nick name, anything else is creepy. people should have a right to anonymity through pseudonyms. 
Re: Text Overflow Error 
PF_VarString's buffer has been increased somewhat in the svn repo, fixing UQC's menu. 
QS : Any New Version Soon ? 
Are there any news about a new version of QuakeSpasm on OS X ?

I'm looking for a full support for FSAA, Vertical sychro screen redraw, and the ability to put the game into background using Command-H (as in Quake3). 
Hmmm - We need a new OS X dev. SleepwalkR and I are both busy with other things. 
Support Features Please 
Baker has a new Fitz build and I am hoping to get some of the improvements added for my Linux client.
"Oh yeah, remember your post about talk macros or view interpolations (shaky cam) ... ask for them to add SUPPORTS_TALK_MACROS, SUPPORTS_LEGIT_PING_SCOREBOARD, SUPPORTS_VIEW_ANGLES_INTERPOLATION."
I have had some help with the LOC file support now working.I hope there are more improvements you can use from baker's update though. 
step 1: share your own changes/work back to the community.

I never saw SUPPORTS_ flags before, is that new? where does that come from?

those examples look terribly named to my "alphabetical order should equal logical grouping" mind. 
That's just something baker added in the fitzquake mk. 5 source code to make his changes easier to find. 
What is this Bad "cue " chuck length (#) warning and why does it appear every time a map is loaded? 
Bad "cue " Chuck Length 
When a *.wav file is parsed, it looks for the "cue " chunk, if it finds it then it progresses to find a loopstart position. A bad cue chunk in the file is a chunk that reports its size as negative or going past the whole size of the *.wav file. Without such checks I added there, the engine may very well segfault (i.e. crash, which was the case with, IIRC, arwop mod or something.)
The print is done only in developer mode so it doesn't appear in usual game play. 
PF_VarString: Overflow 
Is there anyway to override the centerprint string truncation or suppress the PF_VarString: overflow console message? 
Even if there was it would be a bad idea to do it, because then your mod will potentially crash other engines by overflowing the buffer. 
Fitz Compatibility 
This works fine with the original Fitz0.85 engine and the new mark V engine. I know a few people who want to use Quakespasm instead of Fitz, so I am asking if this problem could be tweaked via a console command. I don't expect the default to change, I just want the option to override the (new) default used in this engine so I can offer my mod to a wider audience. 
PF_VarString: Overflow 
This is actually a bug fix kicking in. The buffer sizes for these functions could probably be increased but then you get into a war of attrition that I'm sure nobody wants. 
String Overflow 
I do think this situation is sad because without a way to fix this string overflow issue (still don't understand why a startup command line can't be added to allow longer strings) my mod simply won't work with Quakespasm.

I am sure someone is going to say 'Why don't you change your mod?" well, I use the centerprint function as a method for telling my background story and I don't want to delete it after all the effort I have put into creating it. 
is it possible to break the text into smaller chunks so players see a bit of it at a time?

I don't know what you're planning but that might work -- player walks along, sees some text, walks farther, hits another trigger that displays the next bit of text, etc. Or, it can all be triggered without the player moving, just on a delay for each section.

If none of those ideas work, you might be able to hijack the "end of episode" text mode, like maybe have a bsp that gives the player a rune and then ends immediately, causing the text to appear, then when the player hits enter it goes to your "real" bsp which has all the gameplay. 
The big problem with extending the string buffer size for PF_VarString is that it has knock-on effects in so many other places. You know the "you got 10 shells" message - that comes from PF_VarString. As does "this hall selects hard skill", "player exited the level" and so many other things.

So if you extend the PF_VarString buffer then you've got to go extend every other buffer that relies on it - including the network message buffers as PF_VarString result go over the network too. And they're restricted to 1400 bytes or you'll get packet fragmentation. Maybe for the purposes of your mod you don't particularly care about MP, but be certain that the QS guys do, and they're aiming for the general case.

So ask yourself: "is my mod really that awesome that I'm willing to break the rest of Quake for it?" 
As mentioned in msg #362, PF_VarString() buffer has been increased from 256 to 384 in the svn (i.e. the development version.) If even that much isn't enough for you then, well, what you're doing is utterly broken. 
Thanks :) Is there anyway to suppress the constant warning message to developer only? I am assuming the engine is truncating the string so does it need to be a constant warning message? 
The message is reminding that the content is misbehaving, so I guess it should be always on for truncation, but *maybe* we change the "exceeds standard limit of 255" warning (where there is no truncation yet) to developer mode. 
I don't mind if the string is truncated, I understand you want limits on the engine, but the console just constantly fills up with the same message over and over. Can the engine just display the message once or just produce a warning for developer mode and truncate the string? 
Quakespasm Grappling Hook Mod 
I found a couple of grappling hook mods, and tried them out, and they don't work. It doesn't crash the executable, but it doesn't throw any errors, either. As a matter of fact, there is no information I could provide to you guys regarding. Anybody have any clue how to get a grap mod working? 
If you want to help the Quakespasm guys, provide a direct link to a download of a mod that doesn't work with Quakespasm.

They don't know what mod doesn't work. But you do. Save the developers time by providing complete information. 
I just tried:
and it seems to work fine. Haha, brings back memories of trying this in '97 or so.

Put the pak0.pak in quake/grap109b, launch with "-game grap109b", and once in-game, press "1" (i.e. select your axe) twice to activate it. 
@ericw RE: Quakespasm Grappling Hook Mod 
I've been looking for the grap109b mod for some years now. It was one of my favorites and I couldn't remember the name of it. The mod works perfectly. Thanks for the link. 
NAT Issue On 0.85.7 Under Debian Squeeze 
I am having troubles with NAT and IP binding. I have tried to get quakespasm to bind to a specific IP address and it still shows as bound to The machine I have it running on as a dedicated is also my gateway, so it has multiple addresses and adapters. I really would like it to bind to my internal IP address, then I can port forward from the public IP to the internal. Is there a fix for this? Is this possible with the code as it exists right now?

Here is command line:
quakespasm -ip 192.168.x.x -dedicated 16 -game grappling +exec xxxxxxxx.cfg 
RE: NAT Issue On 0.85.7 Under Debian Squeeze 
Here's the client log output

Port 26000 UDP is assigned by me.
Port 60982 UDP is randomly assigned each time the program executes.

I see nothing in the documentation regarding a second UDP port being configured or configurable. If someone could clue me in, I'd be very grateful.

Thanks in advance. 
RE: NAT Issue On 0.85.7 Under Debian Squeeze 
Here's some more on the UDP port assigns:

I get where the 26000 is assigned, but why the other port number? Why is it random each time? 
Just compiled it on OpenBSD, runs fine, awesome.
However the Makefile failed at detecting the os, had to set it to OpenBSD by hand, after that everything was good:) 
Any thoughts about crashing on OS X 10.8?

Crash log: 
Hmmm - it can't find libltdl.7.dylib

It'd be better if we'd linked to libltdl.dylib. Try something like

sudo bash
cd /usr/lib
ln -s libltdl.dylib libltdl.7.dylib 
Actually, it seems libltdl is indirectly linked ... So maybe it's a mountain lion issue
Use "otool -L libmpg123.dylib" to follow the library dependancies 
Thanks for the reply. Making symlink didn't solve the problem (there are not any libltdl* files in /usr/lib/).

Here is an otool output:

@executable_path/../Resources/libmpg123.dylib (compatibility version 26.0.0, current version 26.0.0)
/usr/lib/libltdl.7.dylib (compatibility version 9.0.0, current version 9.2.0)
/usr/lib/libmx.A.dylib (compatibility version 1.0.0, current version 315.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1) 
Yes - it appears libltdl has changed or something... but can't sort it out for myself. Apple are getting pretty aggressive with their OS upgrades at the moment. Lion was the shortest lived OSX ever. ... I might stick with snow leopard till there's a reason to upgrade.

Perhaps try this ?
On 10.8 I solved this issue with:
brew install libtool
brew link libtool 
Thank you, now it is works.

Already had homebrew installed but didn't realize that I could install missing lib myself :) 
Version 0.85.8 of QuakeSpasm is released:

* Made Quake shareware 1.00 and 1.01 versions to be recognized properly.
* Fixed control-character handling in unicode mode. Keyboard input tweaks.
* Made the keypad keys to send separate key events in game mode.
* Text pasting support from OS clipboard to console. (Windows and Mac OS X.)
* Support for the Apple (Command) key on Mac OS X.
* Fixed increased (more than 32) dynamic lights.
* Music playback: Made sure that the file's channels count is supported.
* Support for Solaris.
* Switched to using libmad instead of libmpg123 for MP3 playback on Mac OS X.
* Better support for building the Mac OS X version using a makefile, support for cross-compiling on Linux.
* Fixed a minor intermissions glitch.
* Increased string buffer size from 256 to 384 for PF_VarString to work around broken mods such as UQC.
* Restored original behavior for Quake registered version detection.
* Minor demo recording/playback tweaks.
* Minor tweaks to the scale menu option.
* unbindall before loading stored bindings (configurable by new cvar cfg_unbindall, enabled by default.)
* New icon.
* Miscellaneous source code cleanups. 
And what about support for FSAA (antialiasing) on OS X ?

And what about the command-H option to switch the app into background, as in Quake3 ? 
I have searched google trying to figure out what this command does, but have found contradicting answers. I'm making a high quality config that will render quake to look the best that it possibly can. I know that it has to deal with perspective correction on player models, but I don't know which value will effect this change. I want the models to have maximum quality so what should gl_affinemodels be set as? 1 or 0? 
I Looked At The Code. 
Thank you very much czg. 
(Theoretically) enables or disables perspective-correct texturing for MDLs. Set to 1 to disable perspective-correction, 0 to enable it.

See for an example of what effect perspective-correct terturing can have.

So, enabling it (gl_affinemodels 0) can be better quality but at a performance loss; disabling it (gl_affinemodels 1) better performance but at a quality loss.

Important note coming up.

This is a HINT. That means you're telling the driver "this is the setting I'd prefer if you can do it but I'm not going to lose sleep over it if you can't"; as in - drivers are not obliged to obey hints; some may ignore them completely and give you performance or quality depending on their own internal settings (and possibly driver control panel settings).

See for more.

So for a preference for quality set it to 0, but don't depend on that having any effect and don't get annoyed or waste time figuring why it's not working if it doesn't work. 
Thanks! This release works for me on OS X 10.8 (the switch to libmad I guess?) 
@ericw RE: V0.85.8 
If you were unable to run the previous versions, then yes, possibly the switch from mpg123 to libmad helped you. I took care not to having any foreign dependency and packaged all needed libraries in the binary distribution. 
OS X Version 

why aren't there any antialiasing (FSAA) options ?

And what about the ability to put the app in background, as in Quake3, using command-H ? 
Once you ask ten times a glowing fairy appears, says ello guys, waves his fabulous magic-stick and those features will exist. 
I'm On Windows 
I don't get AA options on ANY engines, except for DP. Radeon FTF. 
Command-H backgrounding and FSAA support added to TODO list for the next release. 
Vsync Setting Is Behaving Strange 

i've noticed that i can disable vertical sync only via ingame menu, and it automatically resets to enabled every time i start the engine. quakespasm seems to ignore "vid_vsync 0" variable stored in autoexec.cfg as well as command "+vid_vsync 0" in bat file. still, i can turn off vsync during the game session via menu, it works until i close the program. i've checked config.cfg, cvar is set to 0 there, anyway autoexec and launch parameter should override it afaik

i'm currently using latest quakespasm release 0.85.8 for windows.

my sys specs:
windows 7 x64
amd phenom II quad-core processor
nvidia geforce gtx660 ti with the latest 306.23 drivers

i've checked setting in nvidia control panel as well, quakespasm is shurely allowed to control swap interval

thx to developers for great engine anyways =) 
NVIDIA Control Panel 
From their help text on vsync:

...turn Vertical sync on and off in the NVIDIA Control panel for OpenGL games... 
RE: NVIDIA Control Panel 
thx for answer.

so this behavior is purely a driver feature from NVIDIA, did i get it right? looks strange, because darkplaces, e.g., is opengl engine as well, but it seems to apply vsync cvar correctly on the startup. 
Re: Vsync Setting Is Behaving Strange 
That's a bug you found there. I just pushed a change to svn (r778) that should fix it. Can you test it and report the results? (My card doesn't support vsync toggling so I can't test it myself.) 
@ Svdijk 
would be glad to help, but unfortunately i'm not familiar with code compiling at all =( 
Raspberian (I guess from Debian actually) repo has some patches you guys might consider bug reports (linking and some minor hurd things): 
@ Svdijk: Vsync Bug 
nope, didn't work for me. everything is like before, had to use nv control panel to disable vsync permanently.
new console message appears on startup, however: "Cvar_Set: variable vid_vsync not found" 
Re: Vsync Bug 
That message appeared in r778 because of a sloppy mistake of mine, but it shouldn't be occurring in the updated r779 that I posted; did you try that second link? 
Re: Vsync Bug 
oops, missed the update somehow, my bad. but no, r779 hasn't solve the problem either. 
Re: Vsync Bug 
OK, one more:

If this doesn't fix it, is there anywhere off-forum where I can contact you so we can stop spamming this thread? 
Re: Vsync Bug 
all the same with this rev(
here, my postbox:
seraph[dot]divine[dot]sd[at sign]gmail[dot]com 
Trying to save in its ( gives me a segfault:

Built from SVN a while ago:
QuakeSpasm 0.85.9 (c) Ozkan Sezer, Stevenaaus
Exe: 12:41:37 Nov 14 2012
same here. Relevant portion of stack trace:

0 libsystem_kernel.dylib 0x00007fff895ad212 __pthread_kill + 10
1 libsystem_c.dylib 0x00007fff91413af4 pthread_kill + 90
2 libsystem_c.dylib 0x00007fff91457e9e __abort + 159
3 libsystem_c.dylib 0x00007fff9141971d __chk_fail + 35
4 libsystem_c.dylib 0x00007fff914198f8 __sprintf_chk + 201
5 net.sf.quakespasm.QuakeSpasm 0x000000010004e9da PR_UglyValueString + 170
6 net.sf.quakespasm.QuakeSpasm 0x000000010004f3e2 ED_WriteGlobals + 194
7 net.sf.quakespasm.QuakeSpasm 0x000000010004a0b9 Host_Savegame_f + 761
8 net.sf.quakespasm.QuakeSpasm 0x00000001000402b4 Cbuf_Execute + 196
9 net.sf.quakespasm.QuakeSpasm 0x0000000100044682 _Host_Frame + 82
10 net.sf.quakespasm.QuakeSpasm 0x000000010005dd85 SDL_main + 549 
@Spirit, @SleepwalkR 
Save crash should now be fixed in the svn as of rev. 791. 
What is your command line ?
Can't you save game at all ? I can't reproduce this. 
Ta Oz 
Interesting looking mod :) 
Not dependent on command line, depends on compiler. The crash was due to long global strings from the progs not fitting into an 256 chars long array (a stupid sprintf crash.) Grep your saves for "STORY_??" and see. 
Re: Traceline Crash When Using Player Lightning Hack 
You said it was a QC error in my dev progs, but it's definitely a bug in the Quakespasm code. I just tested my new map in several other mods (including ID1 1.01) and it's reproducable in all of them, albeit not at every instance of the hack. No other source ports have a problem with it.

I also noticed a slightly teleporter and monsterjump behavior in comparison to Fitz085. Monsters teleported into a monsterjump trigger that worked fine in Fitz would either be kind of pushed out of the teleport destination and miss the trigger, or not be pushed in the same way (speed/height). This may or may not have to do with the fact the jump triggers are point entities using the bounds of another ent. I didn't examine this behavior in detail, though, just adjusted the entities until it worked in both ports. 
Soundtrack Music Sounds Fuzzy/muffled? 
I'm wondering if this is a known issue or if there are some relevant console settings I could tweak.

I've ripped my Quake CD to OGG and MP3 forms. When the soundtrack files are played using DarkPlaces, Fitzquake Mark V, or DirectQ, they sound "right". With QuakeSpasm though they don't.

My usual test track is the first one ("Aftermath") that plays during the intro demo as well as on DM4. In the "DA NA NA - DA NA NA NA" hits, correct playback has some high frequencies in there that give those hits some prickly edges, but in QuakeSpasm they just sound kindy sludgey. 
Re: Soundtrack Music Sounds Fuzzy/muffled? 
That's because the tracks are downsampled to 11025 Hz by default. With "-sndspeed 44100" they'll sound as expected. 

I've also run across the sndspeed "controversy" in the Fitzquake Mark V thread now. 
+Some Features For Anyone Interested ... 
(Source only ..)

After making sure I was aware of all the Quakespasm changes, I carefully added a few Mark V features that I really miss when using Quakespasm on my Macs.

10 changed source files which go in Quake folder of Quakespasm source OR ... alternatively changes .diff file

The diff changes the version to "0.85.9" just so I could be certain that I was using the right one during testing.

Dynamic light speedup, record demo at any time, widescreen correction (as far as I know Quakespasm doesn't have this), and making the gun the same size regardless of the fov. 
...making the gun the same size regardless of the fov.

This. I guess this feature should be implemented in all engines currently active - at least as a cvar. Nice thought. 
Is That MH's Fix? 
Gun Size 

Usually does the trick... mine is set to this in the autoexec.cfg -

r_gunangle 2
r_viewmodelfov 110 
I have just tried the cvars you suggested in the latest QuakeSpasm... to no avail. They are sadly unrecognized. 
I Thought Maybe QS... 
may have been forked from Fitz or something. :-/ 
Please try the svn version: we might be releasing a 0.85.9 soon(ish). Source snapshot and pre-built binaries are temporarily at: 
I'll Do That 
I have to say, after reviewing your code changes in detail super-detailed review of Quakespasm changes, I think Quakespasm with all things considered is the best Quake engine ever top to bottom measured by platform interoperability, project structure, debugging and convenience. 
@szo ... 
I just looked over the changes between 8 and 9 and something MH would say goes like this:

You have IN_Activate and IN_Deactivate referenced everywhere, but really you should just check that in one place in the source once per frame.

Not that I've actually conquered this myself ... yet. Spike would recommend a Q3-like message queue (don't handle SDL messages immediately, queue them --- then handle once per frame --- so you have a single point of evaluation per frame and one place it happens).

In Mark V, this is a major goal to be in the late summer release. The way Quake handles input activation/deactivation is not good, case in point often in many engines if I ALT-TAB out and then back in, the brightness corrects and then it for some reason goes back to system normal (not what the Quake brightness option is set to).

If I can get a proper handle on this in the coming months --- after the feature is in a released Mark V for long enough to be considered road-tested -- I see if I can rework Quakespasm to use it. 
OMG Man. 
cheers for the patches Baker. 
Personally, I'm not very happy with our IN_Activate() & co being called from everywhere, either. It was done at some point during development of whichever version I can't remember, and it gradually got messier. It was partially adopted from uhexen2 but with more messiness. Needs addressing in newer versions, yes.

As for new version wrt your fov changes: I think they would not be needed anymore after the fov_adapt (Hor+) stuff, yes?

As for the demo changes: I know the idea is appealing, but I believe it needs a little more maturing? (esp. after reading the fog, etc. concerns in the code?) 
Well ... 
Both fog and skybox are hacks. They are read from worldspawn client-side [not via server svc] which violates client-server ideology.

Arguing against demo record in that context is like arguing against save games.

The issue is uncorrectable because to do it right, you would need the QuakeC source code to every map that uses a skybox to fix it. Except there are several dozens of closed source single player mods.

But Quakeworld has had demo record since 1996, ProQuake since 1999 and JoeQuake since 2003.

Do you tell people that want demo record --- and keep it mind that no demo record is recording that info, nor save games for that matter --- that because of design-flawed after-the-market implementations of fog/skybox [id Software's Quake didn't provide these, the after-the-market modification community did = all of us] that as a result you want to make it hard to record a demo?

Not that demos that record today in Quakespasm record skybox or fog -- because they don't.

I get your point and agree with it. Except we have to work with the world we've got, not the one we want.

How are the demos recorded in Quakespasm with say the "Necros savegame/loadgame trick alias" superior to the record at any time feature? They aren't.

So then the question just becomes user convenience.

But have you noticed an explosion of demo recordings lately? They are using Mark V.

I'm not trying to win an argument -- I view this with the same disappointed angle as you if you remember a discussion about mod cvars aren't recorded in Quake saves --- there isn't an absolute proper "win" to be had here.

Quake save games and demos are never going to record the entire server state. 
... has had demo record since ...
This sounds more like no other thing supports demo record, where you possibly mean ability to record after connect :)

I see your points, though. If Steve has no objections I can include the demo stuff in 0.85.9. 
OK then, applied the demo stuff at r847:

So, v0.85.9 will support demo recording after connecting to server.
Will upload a source snapshot and prepare test binaries later today. 
Demo With Reloads And Non-system, Gamma?? 
Is it possible to continue recording a demo after level change or a reload (and demo would actually play back after reload point)? I know DP allows that, any other (hw accelerated win32) engine?

And any (again hw accelerated win32) engine that has internal not system gamma controls (again besides DP)

Posting in a top engine thread, but its about any engine. 
Anything that uses stuffcmds cannot be saved into saved games, and will need special care for clients that record mid-game.
Saying that the fog is part of the map is just about the least hacky way to do it, and will work in all saved games or demos, so long as there's no stuffcmds.

Its for this reason that csqc was designed to avoid random writebyte etc use, depending upon entities and stats. Stats can be trivially regenerated by the server (because they're dependant upon some global or field, and mapped correctly in the worldspawn function). Ents are regenerated automatically via the same mechanism that covers pvs, which must be present anyway. The fact that 515 added tempentity hacks to dp which got popularized by xonotic is a disapointment that breaks saved games all too easily.

Yes, saved games and demos will never record the entire state, but the key thing is that they don't have to - so long as the mod abstains from stuffcmd (and similar extensions). The rest can be reproduced from the state that is preserved.
Which is how mvds and qtv work. Note that mvds allow you to switch perspective from one player to another on the fly, while qtv is capable of adding new spectators mid game, all without access to the original game state.

TLDR version: stuffcmd is evil and cannot be supported properly. Stats rock. 
More Stuff! 
stuffcmd is evil and cannot be supported properly.
What do you suggest that MOD creators use instead of stuffcmd? I know several MODs that use stuffcmd to change fog parameters for example, how else can the MOD issue console commands without the echo to the console? 
<quote>Is it possible to continue recording a demo after level change or a reload (and demo would actually play back after reload point)?</quote>

IIRC, QuakeSpasm has support for that since v0.85.7. 
Test Builds For New Version 

If nothing goes wrong, I guess I'll release this as v0.85.9. 
Random Btw Comment 
I don't know about others, but in my view the console and status bar alpha values that QS defaults to are way too transparent. I'd prefer 0.8 and 0.9 respectively - currently it's sometimes unnecessarily harder to read on bright or busy backgrounds. I also wonder why this is forced on by the engine while other things like the slow console speed remain unchanged. 
Test Build 
Works fine, didn't test much just tried insta/reload demo recording. 
I also wonder why this is forced on by the engine while other things like the slow console speed remain unchanged.

Should honestly just get rid of the console sliding imo... 
(should have been in quote tags) 
FSAA In OS X Version ? 
Is there an option to turn ON the FSAA, on the OS X version ? This is a must have ! 
And Command-H On OS X ? 
I forgot to ask about the command-H feature, on OS X. Can we put Quakespasm to background ? Another must have. 
Version 0.85.9 of QuakeSpasm is released:

* fixes for several undefined behaviors in C code (gcc-4.8 support.)
* implemented Hor+ style field of view (FOV) scaling, useful for
widescreen resolutions. configured by new cvar fov_adapt: set it to 1
and your fov will be scaled automatically according to the resolution.
enabled by default.
* adjusted string buffers for PR_ValueString and friends to fix crashes
with excessively long global strings seen in some rude mods.
* toned down warning messages from PF_VarString() a bit.
* fixed fitzquake's map existence check in changelevel (used to leak
file handles which would end up in a Sys_Error() due to consuming all
free handles if many maps reside not in pak files.)
* fixes/cleanups in chat mode handling. client no longer gets stuck in
chat mode upon disconnect.
* mouse grab/key_dest fixes and key cleanups.
* the "speedkey" now acts as "slowkey" when "always run" is on.
* support for demo recording after connection to server. (thanks to
Baker for a patch)
* corner case fixes in COM_Parse() for quoted strings and support for
C-style /*..*/ comments.
* changed lightmaps to GL_RGBA instead of GL_RGB.
* better parse for opengl extensions list (from quakeforge.)
* vsync saving/loading fixes.
* fixed pointfile loading.
* multiple cleanups in gl_vidsdl.c.
* Opus music decoding support (as an optional patch only.)
* several other minor fixes/cleanups. 
What About The OS X Vcersion ? 
So if I understand, there's still no FSAA and command-H features for the OS X version ? 
No, not yet, unfortunately. 
Then this update is useless to me...

You can send QS to the background by switching to windowed mode (Alt+Enter) - it's a bit clumsy, but it works. To release the mouse, hit Esc to go to the menu.

Regarding FSAA, If you have a high resolution screen, you can just run QS at its native resolution and everything will be pretty much as smooth as if you were running with FSAA. I run QS at the native res of my 27" iMac and I don't miss FSAA at all. 
Another release, nice!
Just downloaded it, will play some later 
Windows Performance 
I did a timedemo with the Win64 bit build out of curiosity and it did about 40 fps for demo1.dem.

I wondered if this was a Win64 issue, so I did a timedemo using Win32 Quakespasm. Again 40 fps.

Thinking this might be a sound issue, I started up again with -nosound. timedemo results were the same.

I get about 180 to 200 fps doing timedemo demo1 for other FitzQuake engines. And while SDL might be a factor, I've run DarkPlaces SDL before and it runs normal speed.

Could be compiler used for Windows builds? My Mac runs Quakespasm fine +++ @ 447 fps for timedemo demo1 
If It's Exactly 40fps 
That sounds like the framerate is capped somehow. 
I was rounding a bit. I had host_maxfps set to 999 and vsync off. 
I set gl_flashblend 1 and got 200 fps. 
Making The Gun A Normal Size 
In other engines you can make the gun visible by putting v_gunangle or r_viewmodelfov... any idea what the command is to do this for quakespasm? Right now it's hidden behind the status bar. 
i´ve no clue, running on QS either, that problem never occured... 
Makefile Origins 
I recently ran make on QuakeSpasm, Yamagi Quake2 and ioq3 and they all have such painless build processes. Literally 'make'

Does anyone know how QuakeSpasms Makefile was crafted? If by tool or by hand? 
Re: Makefile Origins 
It was originally based on/inspired from tyr-quake's makefile with some additional bits from uhexen2, and then updated/improved as needed. 
A Little Problem 
I don't know what causes this but I have noticed that age-old problem of screen tearing (whilst in presence of flickering/styled lights) reappeared under the latest version, 0.85.9. When I revert back to 0.85.8, things are smooth, no more tearing.

I managed to overcome this problem while I was still using FitzQuake two years ago, through these cvars:

host_maxfps "120" (actual refresh rate is 85Hz)
vid_vsync "1"

I am still using the same cvars and the same autoexec. Triple buffering is enabled through NVIDIA control panel, while vsync is left as "application controlled". Tried different rates for host_maxfps to no avail. I am clueless. I guess the two versions handle something differently than each other. Can anyone help me out? 
tearing is most noticable around dlights on account of them changing every single frame. a 'good' engine will tweak the dlights to only update at most 20 times a second, that'll reduce the hideousness of it.
vsync should kill all occurences of actual tearing, but dlights will still be able to produce epilepsy-inducing flickering...
if changing the maxfps value between different values above 85 actually changes your ingame fps rate (don't use timedemos, go by show_fps instead) then it implies that your driver/engine is completely ignoring your vsync preference for some reason. some engines might possibly need a vid_restart for it to take effect. Or maybe its just broken.
Just force vsync on in your driver control panel. :P 
Quakespasm - IPV6 Support Request 
I suppose this is the place to ask, but can ipv6 support be added to QuakeSpasm?

Other than that, this is a great Quake engine. Keep up the good work! 
Quakespasm Steam Easy Installer 

Untested since I don't have Quake via Steam. 
Save Game Problems 
I've got some problems with save games - missing runes. Is there any solution? 
Re: Quakespasm Steam Easy Installer 
FYI I tried out that installer. The system I tried it on has Steam installed at the default location, so I don't know if it finds non-default Steam installs automatically, but it works fine.

I also tried using it concurrently with the "ProQuake for Steam" and they both work (and uninstall) correctly without interfering with each other. 
One more bit of info about that:

There's a popular installer used by Steam-ers that dumps the DarkPlaces engine and libraries into the Steam folder. That has at least one DLL file that overlaps with QuakeSpasm's libraries (SDL.dll) and one with ProQuake's libraries (zlib1.dll).

I don't know if there's any mismatch in those DLLs between the different installers that would cause functional issues running any of the engines. But certainly using the QuakeSpasm or ProQuake uninstaller will remove a library that is used by DarkPlaces.

I don't know if you want to try anything cleverer to deal with that (like sticking engine+libraries in a subfolder and using -basedir to get at the data files). Maybe a warning in the README though. 
Thanks for the feedback on that and it gives me some insight on future improvement (see if the installer can be made to rollback a file overwritten). My main goal was to provide a method for the "barely computer literate" (and those people are not rare) to install Quakespasm. 
Enthusiasts like you --- yes I do know -- are the reason this game forges ahead. Credits to you and your diverse mindset. You may not think it matters -- and whether or not you think it does: it does. Sure, maybe others don't notice, but natural born winners have a spider-sense that notice others of our kind. 
Maybe Windows has something like LD_PRELOAD? Then you could just rename the DLL and load it specifically for each engine. 
I have sort of a self-deprecating arrogant sense of humor and I shouldn't be exercising that stupidity in someone's elses thread but rather limiting this bad taste humor to my own little corners.

@spirit: Windows has the "/DELAYLOAD:<blah.dll>" compile option at least with sources compiled in Visual Studio (the Quakespasm guys cross-compile on Linux so I don't know if that exists in their compiles) ... and ... unfortunately, as far as I know, the way Quakespasm and many engines are linked (the linker) the name of the .dll cannot be changed at run-time without a great deal of a code rewrite (although I think DarkPlaces goes full dynamic since it doesn't actually require any of the .dlls to run). DarkPlaces used to come with "non-standard" dlls, like the zlib1.dll wasn't the official zlib1.dll but some other one although I think that has been rectified in more recent times. Unsure about the other DLLs. 
Music Folder 
Dear developers of Quakespasm,
Is it possible to switch the music folder path to the convention used by darkplaces? i.e., from id1\music\track01.ogg to id1\sound\cdtracks\track001.ogg ?

Using unified conventions for replacement stuff will greatly improve daily playing life of those that like to keep more than one engine handy in the quake folder.

Thanks in advance.
Well, As I Am Already Here To Make Requests, Why Not? 
I would also like to ask for external ent support, as well as multiple game dir support, if they are not too hard to implement. Thanks. 
Unified conventions are indeed cool, but I think that the "music" folder pretty much is the convention now. DarkPlaces, QuakeSpasm, Fitzquake Mark V, and DirectQ will all play music files that are placed there.

(DarkPlaces will _also_ find music tracks if they are in sound/cdtracks ... that's fine, but probably you won't get all the other engines to adopt that behavior.) 
In other news: Baker, you are a good dude but also pretty confusing! 
Is it possible to switch the music folder path to the convention used by darkplaces? i.e., from id1\music\track01.ogg to id1\sound\cdtracks\track001.ogg ?
No, we won't do that. The 'music' directory is already supported by darkplaces and is a standart in later id games as well.

I would also like to ask for external ent support,
Quakespasm already supports external ent files for quite some time. 
Great To Know! 
Didn't know that DP can support the music folder convention QS is using.

Also great is the ent support. Didn't know it already exists.

Any chance of having multiple game dir support soon? 
also /sounds/cdtracks is a gross folder path... 
Like Necros Said Id1/sounds/cdtrack Is Gross 
And I'm glad Quakespasm won't support it.

@Johnny Law

> Baker, you are a good dude but also pretty confusing!

The first rule they teach you in journalism and mass communications is people can't look away from an exciting train wreck. But the important thing is I'm a train wreck for the benefit of Quake.

You may now return to discussing ... uh ... .ent files and cdtrack folders and other really ... erm ... appealing topics.

Quakespasm = the best thing since sliced-bread but I hope it adds some Mark V features tomorrow. Exit stage left; trips on stage prop but makes it look cool ... 
You can say you do not like it, but you cannot say it is gross: tastes are different in between people... so please... NIN is awesome ! 
I was referring to a specific nonsensical folder naming convention which happens to be gross from any logical engine coder's point of view. Which is an engine feature (i.e. within the scope of things I care about).

I never offered an opinion of the Quake soundtracks. Everyone has their own private gameplay preferences, no right or wrong to be found. 
No Right Or Wrong To Be Found 
junkie pro trent reznor would agree with that, so Do i. 
Quakespasm = the best thing since sliced-bread but I hope it adds some Mark V features...

Had a chance to browse your latest, and nicely surprised to see it was largely rebased on quakespasm with mark5 features added.

Having less and less time to spend on coding these days, it would take some time to pick and add new features... 
I believe in a "one-engine" approach to classic single player and was trying to make it easier to work with for you guys to grab features if you chose ;-)

I hear you on the lack of time thing --- me too. 
Linux Movement, Sound Problems 
with rev. 843, i'm noticing problems with movement; mainly jumping plats and getting stuck on inclines (demos of the problems at, and quakespasm isn't playing ambient sounds. I've only had these problems on 64-bit linux, 64 bit windows binaries worked fine. 
Hmmm - i can't reproduce this on my amd64 box, with either r843 or current (852). Is it some cvar issue ? Can you reproduce the problem with a clean install of id1/paks/configs etc. 
I don't know about others, but in my view the console and status bar alpha values that QS defaults to are way too transparent. I'd prefer 0.8 and 0.9 respectively - currently it's sometimes unnecessarily harder to read on bright or busy backgrounds. I also wonder why this is forced on by the engine while other things like the slow console speed remain unchanged.
I think you're talking about
scr_conalpha (cvar)
scr_conscale (cvar)
scr_conspeed (cvar) which are adjustable 
I Know. 
What I meant to say is cvars like these are something the user has to decide on, not something an engine should just default to arbitrarily. 
with a clean build (make clean and a clean id1/paks/configs) i now have ambient sounds, but i can still become stuck in slopes as in the demos i posted. 
Very Noob Question 
OK, so I just dloaded and installed QuakeSpasm 0.85.9 on OS X 10.8.4, where does it want the game data to be located? Launching the application fails because it can't find the game data and there is no obvious way to point it to a location. 
Quakespasm on Mac is same as Windows.

(your quake folder)\QUAKESPASM
(your quake folder)\id1\pak0.pak
(your quake folder)\id1\pak1.pak
I Tried 
I tried having the QuakeSpasm application in the /Quake folder and it didn't pick up the data, I tried moving the folder to /usr/local/games/quake, but still same problem, game client closes upon launch with a "couldn't load gfx,wad" error. 
And Now... 
... I got it to launch the game, but it weirds out in another way: I can launch a new singleplayer game just fine, but if I type "map start" in console, it can't actually find or load the map, same for any others like dm2, dm6, etc. What's going on? 
I Just Have 
my entire Quake folder in /Applications/Quake like so



It doesn't care about the case of the pak files. 

I tried moving the folder to /usr/local/games

Keep in mind OS X isn't Linux, particularly from an application usage perspective.

1. Right click on the desktop and make a folder called Quake
2. In that Quake folder, put Quakespasm.
3. In that Quake folder, make an id1 folder. Put pak0.pak and pak1.pak in there.
4. Run Quakespasm.

There are many other ways to get the job done, OS X is rather liberal like Windows and applications can live anywhere. Or you can do as SleepWalkR suggests. There isn't any one single way right or wrong here, but I think the /usr/local/games folder isn't going to work because OS X hides those kinds of folder from casual access. 
I Got It 
I got QuakeSpasm working fine now, I had picked up the /usr/local/games/quake idea from fodquake, which is supposedly THE qw client to use on OS X, which specifically expects that path. I guess I could just make a symlink from my current Quake folder location where I have QuakeSpasm working to that path, so that fodquake would work as well. 
Not Sure Why They Would Do That 
as it really goes against how OS X works usually. Applications go to /Applications. 
Ah, I had paths a bit confused, fodquake wants: /Library/Application Support/fodquake/id1: 
FOV-independant Viewmodels? 
Is there any chance FOV-locked viewmodels will be added/ported from FitzQuake Mark V?

I'd use just Mark V but it has a few issues (no fov_adapt cvar which bugs me and MP3 music seems to keep playing on level changes) 
By no fov_adapt cvar I mean that you can't seem to disable the effect. Normally the game view just gets shorter if you use a smaller viewsize but in FitzQuake Mark V it also zooms out too, which is something I'd like to prevent. QuakeSpasm lets you turn it off, at least. 
Also, any chance for a cvar to keep redrawing the HUD border tiles? I'm playing from Steam so that would keep the Steam notifications in the corner from staying on even after they go away.

Otherwise, great work on this port! I've been looking a long time for a simple GL port that lets you do independent HUD scaling for things like messages and the status bar and also generally keeps the software-mode feel. I think this is the one I'll stick with. 
Redrawing The Border Tiles Each Frame 
Setting the "gl_clear" cvar to "1" should do that. 
HUD Position 
How to center the HUD in Multiplayer? 
Lightning Shades Effect And Other Glows 
Using Quakespasm, is there a way to turn ON the nice GL glowing and lightning effects we sometimes see in modern Quake engines, as shown on Youtube ?

I'm especially interested in the ligthning gun rendering, which currently gives me an ugly pixelized effect (default, old lightning rendering). 
If you want super-pretty graphics I think you'll want to use Darkplaces instead of Quakespasm. QS I think strives for authenticity, while Darkplaces is kind of the rebel of the Q1 engines. 
Built binaries from SVN right now. On Linux.

Server where I lowercased all filenames:
quakespasm-svn -game atf -dedicated

Client where I forgot to do so (and thus QS wont be able to find the files):
quakespasm-svn -game atf +connect

Using protocol 666
Model progs/amr1.mdl not found
Couldn't find a cdrip for track 0
Segmentation fault (core dumped)
Quakespasm GL Options 
Then what are the rendering options in Quakespasm, for the lightning gun ? 
Like It Or Lump It 
gl_flashblend 1/0 
Flash Effects And Others... 
Thanks Spirit,

but what about other effects ? Is there a list of GL effect commands somewhere, which are working in Quakespasm ? 
For Different Cvars 
try cvarlist (I think)

This will give you a list of all the options to play with. 
Re: Bugreportish. 
Thanks Spirit, fixed at r877. 
Today Quakespasm stopped recording by itself after I did the "record demoname", "reload" procedure.

Completed demo
]record m2
recording to /home/hannes/.quakespasm/quoth/m2.dem.
Loading game from /home/hannes/.quakespasm/quoth/quick.sav...
Completed demo
Client SpiritQuaddict removed
Warning: 37166 marksurfaces exceeds standard limit of 32767.


Map Title
Using protocol 666

Exe: 19:57:59 Oct 12 2013

Haven't tried reproducing it. No idea what happened. 
'prolly a bad condition if (! 
A quickload is simply a game load and does a CL_Disconnect() which, in turn, stops a demo in recording which has always been that way. Had you died during game play and pressed your mouse button to respawn, that would allow your recording to continue because it doesn't disconnect from the server, which I think is the case you are confusing with. 
Ah, I see what the problem is. I forgot to "disconnect" before starting the record. In engines that do not support on the fly recording, this gives an error message. QS does support recording at any point though, so it started recording and then what you said happened.

Playback over deaths requires engine support and my capture engine does not support it so I am forced to make separate demos.

Great that QS lets you record at any time now! 
No Monsters CVar? 
Hello Folks! :o

Haven't been here for a year I think? Due to real life xD

Anyway I wanted to practice some speedrunning and grenade and rocket jumps at certain places in particular but how do I get rid of these infernal monsters! I saw their was a Nomonsters variable, I set it to '1' set Skill to '1' loaded up a map and.. Zee monsters are still there! D: 
not in standard quake. if you have the hypnotic mission pack, you can use impulse 205 to kill all the monsters in a level. 
Stolen Feature 
This feature was also stolen for Quoth - if you enter genocide in the console then all spawned monsters will die. 
I think quakespasm has a "sv_freezenonclients" that locks all monsters/entities in place, but they're still there in the map, and you can still collide with them. It makes it hard to move around because doors/etc. don't work with it on. 
also stops monsters from attacking (and it's easier to remember) 
Will that variable 'Impulse 205' only work in the Scourge of Armagon expansion I take it? Or can you trick Quakespasm into implementing it for native Quake? 
scourge (or quoth) only, sorry! 
Impulses Are Handled By Quakec, Not The Engine 
Weapon Position 
Any chance the weapon position can be fixed to reflect vanilla Quake? I hate how every weapon is cut off and how their position doesnt shift with y axis. 
Intel HD: R_dynamic Lag 
I just tried QuakeSpasm on my bro's cheap notebook (dual-core Celeron with Intel HD Graphics), and there's a good framerate drop whenever dynamic lights are displayed. Strangely, it doesn't happen in generic GLQuake, everything runs fluidly there. Any suggestions, modifying certain cvars perhaps? 
Do you mean the problem where in widescreen video modes, weapons are too positioned too low (you can only see the tip of the double-barrel shotgun above the HUD)?

This was a problem in most engines for a long time, but the QS devs put in a fix somewhat recently; it's fixed in 0.85.9 at least. Maybe you just need to update? 
MH's dynamic light speed up would solve that.

I patched up some version of Quakespasm 0.85.x with the speed up and sent it to one of the Quakespasm devs (szo?).

One of the devs said they didn't notice a speed difference. I explained it doesn't affect all hardware.

If the hardware in question runs Windows, you can load up FitzQuake Mark V and you'll see the frame rate doesn't drop in dynamic light situations that you experience in Quakespasm.

[@ericw ... doesn't have anything to do with widescreen -- some video cards/drivers don't multithread so if an engine is both rendering some and then uploads textures and renders more --- slows it down to a crawl --- or so I understand from Spike's wisdom explaining the situation. Either way, MH's solution neutralizes the issue.] 
Thin Gray Borders 
Yes, Fitz MkV solved the dynamic lights lag. However, there are thin (1-2 pixels wide) gray borders along the right and bottom edge of the screen in Fitz MkV, at any resolution. Any way to remove them? Graphics are Intel HD Graphics 2000. Also, is it normal that dynamic lights break through walls? 
Also, is it normal that dynamic lights break through walls?

Yes, shadows from dynamic lights didn't exist at the time Quake was made. If you want to fix that, you'd need to use an engine that supports real time lights like Darkplaces. 
Try using nomtex 
Is it possible to change the heapsize in Quakespasm?
I want to run the In The Shadows mod with it but it always crashes after a while. 
As with all engines, you can use the -heapsize command line argument to increase it. For example: quakespasm.exe -heapsize 128000 (by default, QS allocates 64MB). 
Oh, okay. There is nothing about this in the documentation about this. (Or I'm pretty much blind...) So I wasn't sure if this works.
Thanks. :) 
Quakespasm Demo Problems 
Another Question:

The Readme says, Quakespasm supports recording demos after launching a server. How does that work?
I want to record a demo inside the new Nyarlathotep map.
When I try "record demo demoname" (after starting the map) the game gives me some "Couldn't spawn server" message.

Something else: Is it possible to play a recorded demo and fly around in it while watching like with noclip? 
Oh Yeah ! 
>Something else: Is it possible to play a recorded demo and fly around
>in it while watching like with noclip?

That would be awesome. 
Surprise Recording 
Probably you'll just type "record ny_demo" while playing, and it'll start recording your demo. At least that's how it works in other engines. 
Re: Surprise Recording 
Yeah, this worked. Thanks. :) 
Something else: Is it possible to play a recorded demo and fly around in it while watching like with noclip?

The demo files only contain position information for the entities that the engine thinks the player can seem so this doesn't really work as well as you would like. Which is a shame. 
Dang It. 
Is there another way to record footage (mostly singleplayer) from different perspective, or even better with moving cameras?

And a little side-question:
Could the same thing be possible in Quake 4?
This would be awesome too... 
in the quakeworld community, mvd demos allow free-floating cameras, or freely switching perspective mid-demo.
It requires server support. 
Did something like this, adding a second client that followed the player around, recording from different positions (chase cam and fixed).

This was supported in AguirRe's engines, but also needed qc. 
I ported Spike's BSP2 patch for Fitzquake mark V to quakespasm. Tronyn's nyar2 and wicked seem to work. Only played a few minutes though.

It's on the patch tracker here: 
Now that's an advent calendar entry. 
I'll let oz know, hopefully he's fine with integrating this into the mainline. 
That is awesome news! :D 
What The Heck Is A .diff File? 
I can execute that! 
Having bsp2 support in QuakeSpasm (and in official top-of-tree Fitzquake MV for that matter) would be a true Christmas Miracle. 
diff points out difference in the written code.
New vs old version. By now, you have to compile it for yourself:(
Binaries anyone? 
awesome! sound resampling upgrade patch next please ;) 
onetruepurple: oh fucking what
onetruepurple: Host_Error: Mod_LoadLeafs: 34523 leafs exceeds limit of 32767.
ijed: yeah
ijed: thats the crash, if I remember rightly
ijed: it's not enough to just add the format
ijed: all limits need to be raised
ijed: didn't mention it on func
ijed: because wasnt sure
So What 
the patch doesn't work? 
Not For My Level 
Although the fix should be relatively simple.

All this engine strife should go away soon, there are a number of engines in the works now. 
And Then The Engine Wars Can Truly Begin... 
Updated The Patch 
ijed, your level works now :-)
I had to raise MAX_MAP_LEAFS (now 65535), and change the surface indices from unsigned shorts to unsigned ints in mnode_t. 
BSP2 Support Is In 
The patch is applied in teh svn repo as of rev.881. 
Cheers for this. Half-way through Something Wicked and it's going fine.

If no-one else puts up a windows binary, i will when i sort out my build environ. 
Dont think you beat me Oz... I was just doing some 'testing'. 
Now merge ericw's sound resampling! 
I Really 
like the vertex lighting code from reQuiem. And the light source code for rockets and grenades etc. Couple that with the nice corona effects from DirectQ and we're cooking with gas! Actually DQ has the best menu out of all the engines IMO, get that in there too x 
BSP2 Builds For Win32/64 And OSX 
Freshly built Win32, Win64 and OSX versions from svn r881: 
Nice One 
Thanks, guys.

A question: now that bsp2 support is in, would it be feasible and/or desirable to add support for protocol 999 (RMQ), however rudimentary? And how about 10002 and 10005, the ones from BJP's enhanced GLQuake. Perhaps there are even some others that only slightly derivate from the common standards. I presume DP protocol would be out of the question, though.

The reason is having an engine port that supports a wide(r) range of existing protocols would make demo playback (among other things) a lot more convenient for the general user. As it stands, the several different protocols create quite a bit of a mess, and only relatively few people know their way around it. You could say, another step towards a general purpose engine.

Not necessarily an actual feature request, more wishful thinking really. 
If you already have 666, 999 is a superset that gives support for .scale and extensions for coord+angle precision, so its likely going to be needed at some point in the future even if its not used by default.
DPP7 support has a lot of merit, but full compatibility with DP is a major undertaking, but then you don't need full compat for it to be useful.
Also needs mvd+qwd playback! :P

999 would be a good idea though, its the simplest way to get larger coords. 
Correction: BJP protocols are 10000-10002. 
Good Work! 
How about adding the dynamic lights fix from Mark V? 
Great Work 
Thanks szo & stevenaaus! 
Thanks a lot guys !

The OSX version works perfectly on my system. I'm finally able to play that freaking Wicked Mod ! 
you are supposed to checkout reQuiem, everyone! 
We'll Check Out ReQuiem 
when you fix the bloody widescreen! 
It's open source, and Spirit is not the author. 
Checked it. It's awesome. :) 
Re Protocols 
Protocol 999 sounds useful, but the others are deprecated and in my opinion should not be added. Maybe only for playback but recording in them should not be possible. Focusing/Forcing less is better!

Is there any reason to use aguirRe's engines anymore?

Could maps/mods hint to the engines about their needed capatibilities? I don't know how reQuiem detects what protocol to use but I am sure it is not flawless. It would be kinda bad if 666 or 999 are used when they are not actually needed. Backwards compatibility is nice! 
reQuiem does it the easy way, but in doing so can become desynced with respect to reliables vs unreliables. really it'll only work reliably where there's no packetloss.
and even then it only selects on a few features.
and even then, there's no guarentee that the client will support svc_version (which is not normally ever used)... 
Linux And Gamma 
For those where gamma is not working on linux boxen and the LD_LIBRARY_PATH hack doesn't work because they have a newer SDL, for me this one fixes gamma (with SDL 1.2.15):


then start quakespasm the usual way. 
I've added that to the subversion doco 
So what are the best bsp2 maps/mods ? 
Only BSP2 Releases I'm Aware Of 
wicked, nyar, rmqwinter11

The rmqwinter11 doesn't really work with the current Quakespasm build, though. Well, e2m1rq seemed to be playable for the few minutes I tested it, but e3m1rq failed to load with a max_edicts exceeded error. 
Yeah, LordHavoc made his own "BSP2" afaik and MH's is now referred to as "2PSB". So much for having standards :P 
The great thing about standards is that there are so many to choose from! 
Obligatory Xkcd 
I Laughed... 
and then I cried.

Actually the choice of engines is great, but the problem is that people are starting to develop maps for one engine only when really they should develop for like 3 or 4. I tested Deck in about 4 engines before I released it (and it did have various bugs in each, annoyingly, I developed the map mainly testing in Fitz to find that it was horrible broke in DirectQ so I spent days fixing that).
Some maps are impossible to develop cross-engine, like I imagine Nyar and socks latest Zendar would be due to their scope and features. But most "ordinary" maps should be tested in several engines. 
Obligatory Goatkcd 
Obligatory Not Safe For Work Warning 
"All this engine strife should go away soon, there are a number of engines in the works now."

Yes, more engines - complete with their own sets of bugs and idiosyncrasies - will definitely help. *eye roll* :P 
Don't Be A Drama Queen 
I was referring to the lack of a universally accepted BSP2 (+2PSB) supporting engine for the various maps either in production or already released.

In order to be universally accepted it will require having idiosyncrasies and bugs that do not offend the general user. 
Let me know when there's a universally accepted BSP29 supporting engine. :P 
Probably Regret Asking This 
what are the odds of getting quake 3 bsp support in a fitzquake-type engine?

I mean if we're going down the road of supporting bsp formats that standard engines can't run, I'd have thought people would be looking at that... 
Fair Enough 
Obviously q3 bsp involves a huge amount of work vs just a "limits raised" q1 bsp. 
I know there is a huge difference in the bsp output. Whenever I turn on showtris, it almost looks like QBSP just hacks brushes into pieces at random, whereas the Q3BSP splits things up intelligently and usually no more than necessary. 
With correct use of detail brushes, a q3bsp will tend to be triangulated pretty much the same as if it had been modelled perfectly in a 3d modelling app.

q1bsp r_drawflat 1 looks like someone dropped a stained glass window on the floor then assembled the pieces back together at random.

I'm just a bit of of a ocd 'sperg when it comes to neat triangulation of geometry :} 
The patchwork appearance of a q1 bsp is due to the qbsp splitting up faces to keep them below the 18*18 lightmap sample limit.
Many (gl) engines already bump that up to 256*256 (same as q3), but qbsps don't output for that raised limit by default.
also, q3bsp isn't so scared of overdraw, allowing it to avoid cutting out holes because of a brush sitting above. q1bsp compilers could also do the same, which would help reduce the cuts. engines should be okay with edges with a single side. might need to keep such edges axial though. 
another major argument against q3bsp, when bsp2 was discussed, was that most quake editors don't support it and mappers are generally unwilling to switch tools (unless it's Trenchbroom apparently.)

q3bsp offers so many improvements it's not even funny, and it can still be made to look just like quake. You'll need to drop in a few hint portals of course because q3 vis isn't as "tight" as q1 vis.

The possibility of baking models into the bsp (and have them lightmapped etc) instead of having them be entities is worth the price of admission alone.

Technology by itself isn't "evil", really, so I doubt q3bsp on its own would "kill quake".

but I guess otp is absolutely correct. :-> 
Looping Sound Fix 
I tracked down a bug in sound looping last night, which appears to have been in Quake since the source release. It causes an intermittent 'pop' when looping sounds wrap around - this has been driving me crazy for years!

This will have good synergy with my "audiophile resampling" patch when I finally dust that off and finish it 
Not Sure If Its Been Mentioned In This Thread 
... I did look through and didn't find anything.
RMQ works wonders for me
Whenever I load maps in Quakespasm, however, they almost invariably slow to a choppy crawly barely playable state.
Thus my apparently ungainly habit of not using Quakespasm, and instead using RMQ engine, to record demos and so forth.
I am a luddite. Keep that in mind.
And yes, I did use a big heap size. 
It Could Be A Setting Problem 
that RMQ has created that Quakespasm doesn't like.

Try running quakespasm on a clean install with no .cfg files to start with and then build your settings from there. 
Try r_dynamic 0 and if that solves your problem, move to Fitz Mark V which fixes that behavior. 
Are the exes compiled to include the ultimate patches? If so are they on the Quakespasm site?

I checked the changelogs but can't see anything mentioned. 
Sorry, I don't have an exe with the patch applied. The QS guys haven't had a chance to review the sound loop one yet. 
I have an engine to test on, although it's not 100% feature complete. 
but szo made windows and osx builds on dec 25 with my bsp2 patch (runs telefragged.bsp). They're here: 
Cool, Thanks To You Both 
Cool, Thanks To You Both 
Does my cross-compiled soundloop exe work ? 
It Does :) 
My mouse gets stuck if I alt-tab out of the engine to do a level hotfix. 
Hit Escape 
to open the menu. That should free the mouse. 
Will Give That A Try 
I enabled wheel mouse to scroll the console, so please document any nasty issues. 
Is still locked in top left corner if I alt-tab out, from the menu, console or otherwise. 
This Is On Windows, Right? 
Having to close the engine to do map fixes, I'm pretty happy with the engine. All features are in and working, everything looks crisp, and it's multi-platform.

Just thought I'd say that again. 
Would You Guys 
Be interested in implementing support for 'proper' rotatings code?

Essentially it's true collision on rotating objects, without dicking about with multiple entities all over the place.

We had it implemeted in RMQ and it works like a charm. Obviously a way to mark the pivot (info_notnull) is still needed, but the rest is just making the brushes and configuring them.

Basically takes the pain out of making rotating objects.

Haven't got time just now but I can dig out the specs if anyone is interested. 
Also, consider the dynamic light bottleneck fix! 
proper rotating objects 
Is anyone seriously going to say no? :) 
requires a custom progs.dat, naturally, like hiprotate does. 
I would point out, i don't think the word "proper" should be used here -- doesn't it just rotate the hulls? (Sure it makes the mapper's life easier but) collision hulls are not equal on all axes -- the player is taller than he is fat, so collision hulls have more height added than they do width. Probably the results are fine as long as you only rotate on the Z axis. But if you tip an object onto its side (like a drawbridge) it will look funny when you try to walk over it. 
Been playing around with the Rubicon2 entities and all that rotating stuff. Why is the texture alignment on, say a hatch that only opens 90 degrees, totally screwed?
and setting up those func_movewalls for collision is elaborate(to be honest a pain in the ass..)
Sorry for the wrong thread, just had to let it out:) 
the texture alignment on rotators is a compiler bug, i hope someone fixes that someday.

and yes, func_movewalls are annoying to set up. Though they don't really take that much time, it bothers me more how limited they are in functionality. 
oh, if you are asking about why the texture alignments are messed up in the .map files for rubicon2, that is to correct for the compiler bug. I had to make them look wrong in the editor so they would look right in the game. 
So this is at offset 0 0 0 i guess?
yes, my technique is to move the model so to 0 0 0, fix all the texture alignment, then (with texture lock disabled in the editor) move the brushes back to the correct location in the world. 
Center of model at map origin?
Or the lower left corner of the bbox put at origin? (Like when path_cornering?) 
lower left corner (i'm pretty sure) 
Will try out, thanks!

Is there a chance a compiler(like BJPs Tools)
could be fixed, so that this setup is irrelevant?

Just curious. 
But we're capable of improving what is there, the reason I'm asking.

Props go to Gb for writing the original qc frontend.

Easier for the mapper means we'll see more rotating things in maps, and I can't see how that could be bad (disclaimer).

I'll implement the code from RMQ in RRP for now.

If you don't build it, then it's not built. 
they're solid_bsp. 
It causes an intermittent 'pop' when looping sounds wrap around - this has been driving me crazy for years!

omg THANK YOU. I hated that pop! 
Ok - Since no-one's reported sound niggles, Eric's sound loop fix is committed.

ijed: [mouse] Is still locked in top left corner if I alt-tab out, from the menu, console or otherwise.

Hmm - i'll have to test it in windows sometime. It works acceptably for me on linux, but if it's broke on OSX/windows it may have to be reverted. My change was just a hack-and-see.

Re other changes - i can't say. I guess if people feel strongly, patches are welcome, but main focus is to fix things, not break them ;> 
Mouse / OSX 
I can't tab out of the engine, but I can put it into windowed (alt+enter) and then hit ESC to show the menu, which will release the mouse pointer. 
Well i guess we'll have to remove the hack.
Maybe there's some other SDL befuddlery to get it going... 
Another Request! 
How about a patch to remove the 4096 +/- limitation? 
Isn't that limit there to stop floating point hilarity with large world coordinates? 
Isn't that limit there to stop floating point hilarity with large world coordinates?

Sort of - the hardest limit on coordinates comes from the standard network protocol, where entity coordinates are sent as a 16 bit integer (so fixed precision at 1/8th of a unit). Even with a less bandwidth efficient netcode, server-side locations are recorded in floating point. Before you could make truly huge maps you'd need to consider upping that to doubles for precision of small movements (and then deal with how QC can't handle doubles). 
So it's not just an arbitrary limit then.

Ok, will make stuff fit instead. 
If Warp And Ne_ruins Fit 
Then everything can fit. 
Apart From 
My train line :*( 
if it wasn't for the 4096 limit, i'd probably still be making ne_ruins now... -_- 
You Mean You've Stopped?! 
still horrendously slow. the above suggestions (608, 609) did not seem to help. further suggestions? 
I mean Quakespasm. RMQ ran fine, before I deleted it. 
There occur no noticeable floating point related problems with 16,000 x 16,000 maps in my experience with RMQ protocol 999 or something equivalent.

The practical limit for map size is more that you have to find something to fill them with and keep it interesting, ie gameplay and details. This imposes a kind of natural limit. 
Well, you COULD (potentially) build entire episodes of Quake as one long continuous level. That could be ... interesting. 
This Is What I Mused Over... 
with my new id inspired episode I am doing.
It could easily be a single level with todays limits I think. :) 
ep1 easily fits in one map even if the map has a lot of extra areas.

the other episodes seem to have more detailed maps(?) and I found myself hitting limits trying to fit them into single maps.

I might revisit them at some point now that bsp2 is finally getting some traction in other engines. 
Takes Me Back To The 64 Player 
Quake 2 maps that id released.

Remember those? :) 
Now I'm thinking a coop run of quake where each player takes a different episode... 
What's The Point? 
ep1 easily fits in one map even if the map has a lot of extra areas.

The stumbling block would be Ziggurat Vertigo. E1M8 is hard coded in the game engine for reduced gravity. Otherwise I would think that it would be possible to do. I'm not sure why someone would want to do it though. 
could use a trigger to change gravity, I guess. 
Why bother?

Remakes don't work.

And yet we all love doing them :@ 
Fifth - What's the point of any of this? Quake is 18 years old. Anything that anyone does in it is purely for personal fun and enjoyment. 
Yeah but that doesn't sound fun :p 
Different strokes for different people. Why try and discourage discussion only because something isn't up your alley? That's lame. You don't need to "protect Quake" because no matter what anyone does, the content of that original CD will never change. There is nothing to lose by experimentation.

Let others have their idea of fun, you don't need to play it.

Why bother?

Because for some, overcoming technical problems and breaking new ground is fun. 
I wasn't trying to be mean spirited, though in hindsight maybe that's how it seems. I was just trying to understand how it would be fun. I thought the whole idea of co-op was working side-by-side to overcome each encounter. 
Ah, well, if you were talking about what I said, there is no real point. It was just a funny idea :-) 
Visedict Bump For BSP2 
I was beta-testing a BSP2 map that went over the 1024 MAX_VISEDICTS limit (just caused disappearing torches). Checking RMQEngine, they use 65536.

given that BSP2 maps can be so huge, could we bump MAX_VISEDICTS? I'd increase it at least 4x to be safe. 
Ok, in subversion.
Pls test your changes :) 
Thanks, That Did The Trick! 
on an unrelated note, I'm working on SDL2 support in Quakespasm (with #ifdef's, so you can build for SDL1.2 or SDL2). I have it basically working on my mac, just need to clean up a few things. I'll post it on the patch tracker when it's ready!

@FifthElephant, were you were saying Quakespasm doesn't work at all on your windows tablet? I wonder if SDL2 might help... I assume it uses some more up to date Windows API's than SDL1.2. 
please, add FSAA support for the Mac version.

We also need the command-H feature to put the app to background. 
SDL2 implements Cmd-H to hide, which is nice.
Adding FSAA is on my todo list.. I tried adding it a while ago but there were some problems with my patch. Sorry for taking so long :-( 
I Wonder... 
...Will Quakespasm get high quality sound support? 
What do you mean by that?

I am hoping for ericw's Sound Interpolator 2000 HD Plus to be merged. 
High Quality music and stuff... 
What Do You Mean By "High Quality"? 
The Quake soundtrack is pretty high quality in my opinion. 
AKA "Collect armor and hear a vase break down nearby" 
qs already supports 44khz sound playback (as does fq). not sure how much more 'high quality' you can get. 
It's Kinda Subjective.. 
but there are a few things that make quake mixing @ 44100hz sound worse than mixing at 11025.

One is sample cutoff. If you're holding down fire with the nailgun, you can
have the first part of the nail firing sound play, and have it cut off for another to start. The sample value will go from near 1.0 to near 0.0 in one sample, which sounds really nasty, like clipping. But if you're mixing at the deafult of 11025hz, the OS resampling it will literally smooth out the problem so it's not audible.

Another is clipping - it's really easy to get clipping, even at a low quake volume setting of 0.2 or 0.3. Somehow it's more offensive sounding when mixing at 44100. I guess it's another case of resampling smoothing over problems. (or put another way, 11025hz mixing = filtering out sound over around 5.5khz, so any glitches are kept out the more annoying high frequency ranges of our hearing?) So to get good results mixing at 44100, we probably need a compressor/soft clipper or something.

Finally, there's the actual resampler inside quake that uses nearest-neighbour resampling and gives everything that crunchy high-frequency sound if you run at 44100. Initially I was only aware of this problem and thought swapping in a fancy cubic resampler would fix everything, but it's not that simple. 
Some More FQ Mk V Features Maybe? 
Comparing Quakespasm to latest Fitzquake Mk V, here's what I am still missing:

- Sndspeed saved permanently in config.cfg
- .VIS support (saves a lot of disk space)
- HUD weapon rendering like in FQ Mk V
- Non-transparent teleporters on VISed maps

Another idea might be to be able to switch between "gl_nearest_mipmap_linear" and "gl_linear_mipmap_linear" filtering modes on-the-fly via a menu option for convenient on-demand switching.

Other than that, looking forward to the next release! :) 
Two Mission Pack Related Problems 
1. Statusbar shows wrong icons/values for the new Hipnotic/Rogue weapons

2. Buzzsaw traps in one of the mission packs are not interpolated

I use the the latest x64 QuakeSpasm (version 0.85.9) 
1. Did you use the -hipnotic / -rogue switch? 
I settled it, only the problem #2 remains. 
Which mission pack / episode is this in ? 
DoE (Rogue) mission pack. Map name is "Blood Sacrifice". There are three buzzsaws in a corridor, which go back and forth. They are the only thing that's not interpolated. 
I Havent Played That In Ages. 
Yes, and any other map where such buzzsaws are present. If they managed to lerp weapons and all the models in general, I believe they can do the same for the buzzsaws. 
The animation is probably interopolated. It's hard to tell with all the twitchings. Not that it would be of much use - said animation is not very lerp-friendly.

The movement _should_ be interpolated too, but it isn't. My guess is that the problem lies in the implementation of the buzzsaws, the way they function, but I could be wrong. 
Bad Guess 
But try r_lerpmodels 2 in case the buzzsaws are on the nolerp list? 
Correct, the buzzsaws themselves are interpolated - their movement isn't. When I said "buzzsaws are not interpolated" I actually referred to their movement.

Buzzsaws move on their exact designated routes (lines), they are not like enemies who can roam wherever they want. This is just my guess, as I don't know much about engines and editing. 

r_lerpmodels is already on 2, and the nolerp list is already empty. 
The buzzsaw doesn't actually move in the normal way. What it looks like (only from looking at the QC) is you make a func_train or something that the player can't see. Then you target the train with the buzzsaw. Every 0.1 seconds, the QC sets the origin of the buzzsaw to the targetted train. This is why it doesn't interpolate, because it's not supposed to-- the QC call is setorigin. 
That Would Make Sense 
I think because if it was one big buzz-saw which moved as part of its animation then the bounding box would be this massive impassable thing. 
So, no way of making it smooth? 
The problem lies with QC. The engine is working as intended. Here is a patch:

Just unzip pak1.pak into your .../quake/rogue directory. (next to the pak0.pak file) 
Works like a charm, thanks! 
there is a bug in fitzquake where monsters riding lifts don't interpolate motion correctly. I wonder if this is related to that.

AFAIK, the client-side interpolation doesn't care what method is used to update the entity origin, and it should work correctly, but obviously there are some holes in this based on the buzzsaw problem and the enemies on lifts problem.

So i'm not ruling out that this is an engine bug. 
There's Also A Bug In Fitzquake 
where certain textures look like absolute shit. Namely carch03, the red circle stain glass window seen in E1M5. Looks fine in DirectQ though. I have a feeling it's something to do with resolution of the texture. 
Fitz V

You're going to have to elaborate on that. 
Interp Question 
AFAIK, the client-side interpolation doesn't care what method is used to update the entity origin, and it should work correctly, but obviously there are some holes in this based on the buzzsaw problem and the enemies on lifts problem.

There must be limits to this though, like when monsters/players teleport? It would look weird if that was interpolated. Is it based on a maximum distance/threshold? 
It may be due to the solid and movetype settings:
self.solid = SOLID_TRIGGER;
self.movetype = MOVETYPE_FLY;

I believe I've had problems with interpolation when using SOLID before.

The code uses the stock path_corner functionality that monsters use, but instead of using a movetogoal (that would not work for vertical differences) there's a single think function that does:

dir = self.goalentity.origin - self.origin;
dir = normalize (dir);
dir = dir * self.speed;
setorigin (self, self.origin + dir);
self.angles_x = self.angles_x - 60;
self.avelocity_x = 60;

Note also that the frames are not actually use and that the model is rotated via code so interpolation for rotation shouldn't be a problem. 
This is what I mean.

DirectQ -

Fitz V -

Fitz is garbled. I think it's trying to stretch the texture somehow so both sides are the same length/width. There are lots of examples of this, pretty much all the door textures, the slipgate textures, a lot textures I used in q-deck.

People tend to revere Fitz but, as good as it is, it's still far from perfect. It's a shame Baker no longer works on it really. 
Texture Scaling 
That looks like the effect in stock glquake of resizing textures to be power-of-2 dimensions. Which is odd as fitzquake was one of the first engines I can remember addressing this problem, by padding the textures rather than scaling them. Unless I've misremembered and that was only performed on models and not on wall textures - or could it be that when you apply nearest neighbour render mode the fix gets reversed out somehow? 
Confirmed Re: Texture 
it does look effed up, in both FQ085 and QS 0.85.9 
needs support for GL_ARB_texture_non_power_of_two.
basically find the rounding code and bypass it if that's supported. no more uglyness.
directq, dp, fte should all support this, no idea about rmqe.

@Preach, the fitzquake padding hack thing only works on non-tiling surfaces, which means 'not on world'. 
fitzquake is using bilinear interpolation to upscale the texture, i think directq uses hardware support for non-power-of-2 textures. That support would be a good thing to add to a fitzquake branch. (See Spike's comment) 
yes, there is a distance limit that disables interpolation for one frame to catch teleports. From the code, it looks like 100 unit delta on any one axis will be considered a teleport. 
R_wateralpha Problem 
There is also a transparency problem in the latest QuakeSpasm. The screenshots below are taken with r_wateralpha 0.5, the map is E1M1. As you can see, the water is transparent only when you get really close to the waterline: 
Wow. I didn't know Fitz can't handle NPOT wall textures. This is kinda disappointing.

I've also noticed that it has some minor problems with UV coordinates. This can screw up pixel-precise detailing on model skins a bit. 
Re: 713 
This is not an engine issue, the original id maps do not have transparency visibility calculations, so the engine reads the map file and sees that there is nothing behind the water when you are on the other side of it. You will need to find the patch that either recompiles the maps with transparency, comes with maps already compiled or has .vis files (i think it's .vis?) that has new visibility calculations (fitzquake engines do not support that afaik, so this isn't an option if you want to use this engine, you will need replacement maps). 
What necros said, plus: if you want to fix this in a hacky way, set r_novis to 1. This will make your framerate worse on large maps, but will fix the visual issue. 
Are these UV problems different when compared to other engines? Does GLQuake do it wrong too? 
r_novis 1 works, but the moving brushes are not visible through the water. They show up only when you enter the water. Secret door in E1M2: 
Looks like GLQuake has the same problem. I made a few shots to illustrate.



GLQuake (Bengt Jardrup's build, but it was the same in vanilla):


Look at the weapon's clip. WinQuake and DirectQ shots represent the way it's supposed to look. 
Mark V supports .vis files 
I Broke QS Again! 
With a very odd error;

QUAKE ERROR: SZ_GetSpace: overflow without allow overflow set

Googling around, all I can get is this;

if (!buf->allowoverflow)
Sys_Error ("SZ_GetSpace: overflow without allowoverflow set");

Which is engine code and I think means "map is too big"

Most of the explanatory stuff I could find is either 404 or related to Quake2 config files being over 8k.

The map I'm working on is actually close to finished, I hoped to have the beta ready for tomorrow. Anyone on the QS team able to lend a hand?

It is a very big and complex map, but compiles in about 25 minutes and was last running in the engine this morning :[

The dropbox folder is updated with the broken bsp if anyone who already has the link to that wants to take a look. 
I Can Have A Look 
mind firing me the dropbox link? email's in my profile.

It seems to be a generic "buffer filled up" error, but it should be obvious from seeing the stack trace exactly what limit is being hit. 
We Tracked It Down 
There were more edicts than would fit in the signon buffer (in SV_CreateBaseline).

Bumping these constants fixed it:

-#define NET_MAXMESSAGE 32000 /* johnfitz -- was 8192 */
+#define NET_MAXMESSAGE 65536 /* johnfitz -- was 8192 */

-#define MAX_MSGLEN 32000 // max length of a reliable message //johnfitz -- was 8000
+#define MAX_MSGLEN 65536 // max length of a reliable message //johnfitz -- was 8000

I got the larger values from RMQEngine. Searching for uses of these constants, it looks safe to bump them; i.e. doesn't seem to break the protocol. 
Works Fine For Me! 
65k? owowowowow!

the actual limit is a bit lower than 65k due to header overhead of 8 bytes, so the protocol limit is actually 9 below that (ignoring limits not imposed by data types).

make sure you don't try sending a datagram that big. datagrams larger than 1448 bytes will always be problematic.
not that you have a choice, but whatever. 
ok, thanks for the info. Fyi the numbers for ijed's map are:

2130 edicts
32176 byte signon buffer 
ijed, is there no way to delay spawning some entities? That's the usual way of solving signon buffer problems. Either with delay spawn monsters or if you've got lots of map models or some such, you could spread out the setmodel() calls after 1 second a bit with random thinks so the engine doesn't have to do everything on the first frame. 
Yes, I need to look into that next. The qc is pretty standard and therefore not really optimized for this type of large map. I'll be putting in some random delays to spread the load before release. 
Committed. But i'm always weary of limits on 2^N. If there is an off by 1 error, they arent always easy to catch. (2^N)-1 is easier for me to take. I'm not much of a C guru, laugh. 
Lowered those to 64000 (see Spike's post #725.) I am not happy with this limit bump at all, but let's see how it will turn out.. 
Win32 Build

Sorry, but i still havent tested that wheelmouse hack on windows (rev 884). It is still in subversion, but if it has nasties it should be removed.

Come winter maybe i'll get the chance to play through some of tronyn's pre-quakespasm mods, which only ever crawled along on my boxes with darkplaces. 
]save pak0.pak
Saving game to /home/me/.quakespasm/id1/pak0.pak...

and on the next start:
QUAKE ERROR: ./id1/pak0.pak is not a packfile

Please always append .sav to savegames if the user-supplied name does not already end in .sav 
Imagine getting that stuffcmd'd from an evil server. :)

I guess it is an old original bug that most engines are vulnerable to. 
Never have thought such a way of shooting myself in the foot... 
I posted a few patches on:

The most substantial one is the brush model drawing rewrite to use the world drawing code. This should fix the problem necros mentioned in the screenshots thread, where large brush models kill fps. In the unreleased telefragged.bsp, the patch doubles my fps in one place, from 18 to 36. The downside is a divergence from the original fitzquake drawing code.

The other one that's interesting is the lightmap fix for mfx's map. It turns out the dimensions of the lightmap data for each surface are calculated via a fragile floating-point calculation (something like a dot product of vertex coords and texture coords). The engine and light compiler need to do the floating-point math exactly the same.. more so than C guarantees. If my understanding is correct, this affects all engines and all compilers. For anyone compiling a map compiler, make sure it's not using SSE2 floating point, which it probably is if you build a 64-bit executable! 
skip removal tools operate differently on brushmodels than world models, relying on the fact that engines draws them differently. If you don't traverse the Surfaces list on brushmodels, and instead use Marksurfaces, skipped polygons may end up getting drawn on brushmodels. Have you checked this in any maps with known skip textures on brushmodels? 
thanks for the warning - I left the loop over the model's surfaces in R_DrawBrushModel the same as before (just replaced the call to R_DrawSequentialPoly with a new R_ChainSurface), so that still works correctly, and just verified it in a test map. 
RE: Lol [the Save Issue] 
Fixed in the quakespasm svn repository as of rev. 902: 
Yeah - That Server Save Thing Is A Real Bomb 
Thanks Eric. You're a great hacker.
I committed the new keyboard bindings.
*Sorry* - but have reversed your weapon cycle order. Be thankful i didnt bind jump to right mouse. Oz can change it back if he wants, and apply the complicated patches whatever. 
QS Changes 
Hmmm - we're going to put the new default.cfg and the custom background image into a separate pak i think , for the next release.

Might change the background image too if i can find a decent new one.. suggestions ? They have to be 8-bit. 
Please No Unnecessary Stuff 
I'm much in favor of clean exe (and dll if required) releases. Additional files like paks or folders are clutter. 
RE: Please No Unnecessary Stuff 
I'm much in favor of clean exe (and dll if required) releases. Additional files like paks or folders are clutter.

id1/quakespasm.pak is purely optional, not required for operation. The real clutter was the way we used to violate the engine for content customizations, and now not. 
Was it really necessary to include that custom background image in the first place? I mean, it's nice and all, but still. 
FWIW: if an engine has custom content, I prefer that it squirrels it away in a custom directory, rather than id1. E.g. the approach used by super8, reQuiem, Qrack, ezQuake, etc. 
including stuff like an id1/*.pak infects other engines (having to take care with numbering paks is stupid). we really don't want quakespasm branding etc in other engines because users are already stupid enough.
custom/private gamedirs are indeed the way to go if you're trying to push custom stuff for a specific engine. 
including stuff like an id1/*.pak infects other engines (having to take care with numbering paks is stupid). we really don't want quakespasm branding etc in other engines because users are already stupid enough.
custom/private gamedirs are indeed the way to go if you're trying to push custom stuff for a specific engine.

I see. How about not using any subdir for it at all and loading directly from com_basedir and/or com_userdir? 
Append it to the end of the exe if you want to be fancy about it, like self extracting zips.
Shoving it in the basedir should be safe I guess, no worse than a dll.
Either way, you might need to come up with some cunning way to not break mod-specific (as opposed to engine-specific) conbacks etc, especially if its a tga. That's more of a general problem though. meh. 
Append it to the end of the exe if you want to be fancy about it, like self extracting zips.

We used to embed the pic by perversely violating the engine, and I managed to persuade Steve about using a pak, so no, I won't do that :)

Shoving it in the basedir should be safe I guess, no worse than a dll.

Yeah, easiest and non-infectious solution, IMO.

you might need to come up with some cunning way to not break mod-specific (as opposed to engine-specific) conbacks etc, especially if its a tga. That's more of a general problem though. meh.

The pak is loaded just and only after id1/pak0.pak, so any other mod with a customized conback or anything else are safe, those include the hipnotic and rogue mission packs. 
Screenshot Made In Xubuntu 
Someone over at quaddicted reported this: 
RE: Screenshot Made In Xubuntu 
Seems that the issue happens with screen widths that aren't a multiple of 4. Fixed in the quakespasm svn repository at rev 909:
Fix will be integrated in the next release, whenever that happens. 
Would it make sense to change the default sv_aim value to 1 in Quakespasm (to disable aim-assist)?

and maybe make it CVAR_ARCHIVE since most of the other control preferences are saved too? 
Maybe something along the lines of "if mouselook=on -> autoaim=off". 
Autoaim sucks. 
Please, add CVAR_ARCHIVE to gl_cshiftpercent
... and pretty much everything else. 
please let us "record demo", "load quick.sav" without stopping the demo record.

Fitz does it, DP does it, reQuiem does it. In fact I think it is possible in stock Quake engines too. 
Fitzquake Does It? 
there are features even i didn't know about :) 
Fitzquake does it but on my pc you have to hit the console button to make it work (otherwise it stays stuck) 
CD Tracks 
It seems everyone is doing something slightly different which is a headache for mod makers, because I wanted to switch music tracks during a map.

DP/FTE are using CD command, like for example:
(Music tracks can be several places)

QS is using a MUSIC command, like for example:
(Music tracks must exist in ID1/MUSIC)

Is it possible QS could have a CD command to match the other client engines? 
A Work Around For The Moment Could Be 
to use external ent file which I know is supported by DP and am pretty sure is also supported by FTE seeing how versatile an engine FTE is.

And the next step is to use bat files or other means to switch different ent files depending on the choice of engine. 
Rip Em To Wav Or Ogg? 
requiem uses "cd play X" too. 
cd play not cd loop?
incidentilly, fte has a 'music' command for compat with q3, which needs an extra argument to control/disable looping ("-" to disable).
so take your pick. :P

ent files won't help with music/named faketracks. they're technically limited to numbered tracks only, which are a pain however you look at it.
you need qc for anything else, which at least prevents the need for horrendous user intervention (which you just know would go horribly wrong).

I assume he's stuck on the step after that - the great thing about standards is that there are so many to choose from. 
I Meant 
Make another standard!

Play them from Qc... 
Yeah it's annoying, I always felt you should be able to use "cd play 4" in quakesapsm and have the track04.ogg play.

But, as ijed says, the right way for a mod to do it is with qc; this should work in DP and QS:

WriteByte (MSG_ALL, 2); // 2 is track number
WriteByte (MSG_ALL, 2); // 2 is track number

courtesy of Baker.

There's some useful info on how different engines handle soundtracks here:

In short, both QS and DP handle music in the form: moddirectory/music/track02.ogg 
Don't Use "cd Play" 
"cd play" doesn't save to a savegame file.

So if you use cd tracks for "mood music" and use "cd play", saving the game and reloading it you will notice it didn't preserve. 
And It Is Bad For Demo Replay Too 
If you start recording a demo AFTER a "cd play" and you play it back, it didn't happen.

In both cases using the SVC_CDTRACK does preserve.

Some QC ace here could easily write a bit of QuakeC to expose the correct method within a map. 
no. svc_cdtrack is not preserved in demos. I just checked markv. not preserved.
saved games are server-side. the server doesn't have a clue what the last svc was, and certainly doesn't have a way to update it without potentially bugging out mods.
even if it was saved/recorded, it would still be rewound.
also, sock did seem to explicitly say 'cd play' and not 'cd loop' - and svc_cdtrack doesn't support playing without looping, in which case cutting it short is probably the better choice over rewinding to start and then forcing it to inexplicably loop anyway. 
Quake Just Doesn't Have A Music System 
Even if every engine implemented emulation of the cd audio the same way, it wouldn't be a music system that can be counted on robustly in gameplay/gamecode at all. Trying to use in-world sound entities has even worse limitations.

It'd be nice to be able to just include a .dll in with a quake mod that adds its own locally contained SVCs and builtins. The issue of netcode being rendered permanently incompatible would go away, because id1 would still work like id1 and you have to run Quake with the same mod as other people joining your game or playing back your demo anyway. Then every tin-pot quake modder can gleefully create their own utterly incompatible music systems and particle systems and whatever else without everything immediately reverting to the usual argument about how it doesn't comply with the standards that nobody's upholding. 
Save Game Workaround 
It's possible to use a "nosave" variable to detect when a saved game has been loaded, and thus restore things after a save is loaded. No reason why you couldn't code your CD system into that. Of course, playing CDs always start the track over, but I doubt anyone was expecting the CD method to provide anything but a loop. 
Its fine, I have a QC solution already with background tracks and additional ambient stuff triggered on events. The downside is when the console is dropped, QC stops. I was wondering about the idea of looped background ambient tracks and found the console commands were different. Nothing to worry about, doing the QC route. 
Nosave Variable? 
Blogpost Coming Tomorrow! 
Pre-post Checking 
@Lunaran, it is a compiler option that can be useful for checking if a map has just loaded. Check the client.qc in the code I sent you a while ago. There is a good example in the playerprethink, playerpostthink functions. 
That's terrific.

How does stuff like this get added to literally all new qcc compilers without being documented or written down anywhere? 
QuakeSpasm On Mac 
So, I recently gave in and bought a Macbook Pro, and like any sane person would do, I have installed Quake on it. However, when I try and run Quakespasm, I just get an error with a load of garbage I don't understand.

Here's the crash log for anyone willing to check it out:

Mini rant:
Seriously, this whole Mac thing feels like it was a big mistake. I feel like less software works than either Windows or Linux Mint, and the default behaviour of some parts of the UI is just baffling. Maybe I'll understand the Mac way soon enough, or maybe I'll just figure out how to get Windows 7 installed first. The hardware is nice at least :)

Keyboard layout is driving me crazy too. Non-US layouts seem to have caps lock in an insane position (the Japanese one does at least). Keyboard also seems way laggier and has shorter/no input buffer compared to Windows, or perhaps that's just my imagination. 
You Are Probably Just Holding It Wrong 
grab a latte moccachino soy dry and sit on your fixie before trying again.

maybe SDL needs to be installed? 
It looks like you do have SDL (as part of the QuakeSpasm app) but the crash is happening during an SDL call.

I'm not super-optimistic about this helping, but one thing you could try is downloading the latest SDL 1.2.x for OS X from ... looks like the current version is 1.2.15, and the one you have in the QuakeSpasm app is 1.2.14. Then open up the QuakeSpasm app and replace the SDL files (at /Applications/Quake/ ).

However it seems like there may be more going on there that would require QuakeSpasm changes to adapt to. This thread on the OS X version of Mark of the Ninja seems to be dealing with the same sort of crash, and has some developer comments:

Also ioquake3: ioquake3:

Also this (and so forth and so on):

Googling about OS X Mavericks crashes in interpolate_table (or when calling SDL_GetGammaRamp / SDL_SetGammaRamp) should turn up more stuff, maybe there are specifics in there about what the exact issue is but I haven't seen that yet & have to leave for work now. :-) 
Thanks for the info.

I tried replacing SDL, but to no avail. I guess I'll have to wait for a fix :( 
I Get This Too, It's Annoying 
Do you have a copy of SDL.framework installed in /Library/Frameworks ? If so, try deleting it or moving it aside, this fixes the crash for me.

Otherwise, I can post a beta build that uses SDL2 and doesn't have this issue! 
Same Crash 
OSX 10.9 
Here's An Sdl2 Mac Build 
the sdl2 alpha fixes it. Thanks! 
SDL1 Crash 
Hmmm.. Tried out QS 0.85.9 (12 April 2013) and it works ok on my 10.9.2 box. I dont have 10.9.3

But Oz's latest dev version doesnt work on Lion or OS X 10.9.2 *without system SDL*. It seems to have a malformed dynamic lib path - the @rpath doesnt look familiar to me, and should probably be @executable_path

Dyld Error Message:
Library not loaded: @rpath/SDL.framework/Versions/A/SDL
Referenced from: /Users/USER/*/
Reason: image not found

Of course, the reported crash above has a different log. I dont have OS X 10.9.3 to test with 
SDL 2 Beta 
Starts ok on Lion and Mavericks. :) FPS on demo1 is similar ro SDL 1.

But god-damn it , i still have the fullscreen gamma bug on both. What a crock &^% 
@than, cool, glad it works for you!

@stevenaaus, what's the fullscreen gamma bug you get? The brightness slider wasn't working for me for a while, but I found out it was my screen dimming software (f.lux) - I just have to quit that and then the brightness slider works correctly.

The brightness control in SDL kind of sucks, it affects the whole monitor in windowed mode and clashes with things like f.lux. From what I've read the proper way, if recent OpenGL is available, is to use a FBO + fragment shader, but not sure how much work it would be. 
Mark V uses a rather simple mechanism to handle brightness that only affects the window and is entirely crossplatform.

Called once per frame right before GL_EndRendering ();

No more hardware gamma and all the hassles/complexities.

MH wrote the code and Reckless saved it and pointed it out to me a little over a year ago. 
brightness is additive, contrast is multiplicative, gamma is exponential.

the code you (baker) linked is contrast, not brightness as you claim, nor gamma as the code appears to claim. these things all have quite specific definitions. :s

both contrast and brightness can easily be rendered using the appropriate combiners stuff (potentially requiring multiple passes). actual gamma requires glsl or hardware gamma ramps.

all this stuff will have the effect of slowing down the game.
its worth spending the time to add support for fragment shaders, if only to also fix the uglyness of water and skies... 
Right When 
I'm monkeying with this from QC :D 
what's the fullscreen gamma bug you get?

When game runs in fullscreen, after a few seconds, or intermittantly, game goes quite dark. Longstanding and confusing thing.
Since it is seen to our SDL2 build too, maybe it is connected to our launcher ?

I think if i install and Quakespasm like on an ordinary Unix , there is no bug. 
Yeah sure except note the following ...

the code you (baker) linked is contrast, not brightness as you claim

The standard Quake brightness cvar is called "gamma" -- I wasn't about to change a cvar name everyone has used for 15 years ;)

And the function was named SCR_Brightness by MH so I kept the name, besides the slider bar is called "brightness."

Source thread:

(Looks like Reckless goes by Revelator now. 
Gamma bug.

Is a major reason why I ditched hardware gamma in Mark V. It stupidly affects Windows and OS X.

I wrote tons of code trying to catch the system event that mucks up the brightness in Windows after switching between fullscreen and windowed mode. There isn't one.

Thread has some interesting infos on the topic: 
SDL-1.2, Rpath And Crash 
The rpath thing is fixed in a later build+package, and there should be no crashes. Here:

Not sure about the gamaa issue, though. 
Something that's always bothered me: hide the crosshair while centerprint text is on screen. Otherwise it just looks awful with the big + jammed in the middle of a word.

I've tried doing this in qc with stuffcmd, and it works okay, except there's no way to remember what the user's original crosshair preference was if the map loads or the player f9's while text is on screen. I default to just assuming everyone wants it on, but I know someone's going to come out of the woodwork and complain if I do that.

It's a tiny bit of polish that should just always happen, and the proper place for it is at the engine level. 
Don't Draw Crosshair If Centerprint 
Don't draw crosshair if centerprint code. 
Spike pointed out some mods actually strategically display console text as a status indicator.

Like Quoth's flashlight indicator bar (example map = Ruined Nation) 
Add CSQC support to Quakespasm. 
Newer OSX Builds Using SDL1.2 
Crosshair With Text 
Sounds reasonable to move centerprints up 4 lines if crosshair ?? 
You probably want to head down in case the text is long... 
Command-Tab, Antialiasing ? 
Guys, please, could you add the FSAA (Antialiasing) option to the OS X version ?

and also the command-Tab feature (as in Quake3) to switch app, without having to quit Quakespasm. 
Hmmm - some messages shown with SCR_DrawNotifyString are just too big to mess with positionally. But simple cases such as E1 entryway (SCR_DrawCenterString) have been moved up one line for the crosshair

@Barnak Where is the relevant command-Tab code ? Maybe i'll go look for it.

OS X FSAA has been talked about somewhere else. Maybe SDL2 with OS X makes a simple implementation possible. 
Mark V has anti-aliasing (cvar = vid_multisample, set to 2, 4 or 8) --- if you are staring at edges you can tell the difference. But who is doing that during regular game play?

I'm not arguing for or against such a feature, just saying I haven't seen anyone even comment on the availability of the feature and I forgot it myself. 
Native Resolution 
Since quake doesn't use much resources, I play it in the native resolution of my monitor, and aliasing is not such a big problem. I'm sure it looks better with, but aliasing in quake hasn't really bothered me since winquake at 320x200. 
Anyone know how to make the engine look like this? shown here 
R_lightmap 1 
It's An Unknown Command For Me. 
Me Being Idiotic Again 
I had it figured out. 
You Can Bind It 
There are a lot of commands useful for testing maps that you can bind to a key in your autoexec.cfg file.


bind "m" "r_lightmap"
bind "f" "r_fullbright"
bind "g" "notarget"
bind "c" "noclip"

When you don't add a value, then it will toggle. Hit the key once and it turns it on, hit it again and it's off. Quick and easy. 
some of those you need to add the word "toggle" in there (the ones that are cvars and not commands) 
You're Right Of Course 
I thought that was correct because copied those right out of my autoexec file. I just now thought to check and for some reason I also had the correct commands in my config.cfg, which is why it was working.

bind "m" "toggle r_lightmap"
bind "f" "toggle r_fullbright"

Not sure why I had them mixed up like that, probably from experimenting when I was first trying to get it to work. 
Good Idea... 
Continuous Builds 
I set up a Jenkins server that automatically creates win32 builds from Quakespasm SVN:

Assuming this works, it should be the best way to help test QS development. Jenkins should automatically do a new build whenever someone commits a change in SVN (within an hour). There's even an RSS feed that should notify you when a new build is available.

The current build there, r935, has things like bsp2, non-power-of-two textures, part of mh's dynamic light speedup, shifting messages when the crosshair is present, new default keybindings in quakespasm.pak (WASD, mousewheel weapon switching, mouselook on).

Note that I have some patches which haven't been accepted into quakespasm SVN; for example, SDL2 support, improved audio resampler, some loading and rendering speedups. These aren't in the above build, but I'm planning to set up another project in Jenkins to build with these not-yet-accepted patches so you can test them too, if you're interested.

Also, making this produce OS X builds is on my todo list. 
This Is Kewl.. 
Thanks for your efforts eric, AND all you other guys! 
2 Thumbs Up 
looking forward to the sdl2 stuff, since the secret sdl2 haxx0r build I was given is the only one that runs on my mac. Everything "just works" on my windows box ;) 
Tinkering With The Sound Resampling Again 
if anyone's bored, i'd love help testing this build!

does it sound good?

leave "-sndspeed" at the default of 11025; it will actually output at 44100 but it does the filtering to 11025 internally. Mostly I'm interested in whether I have the filter set up right - is sound too soft/muffled, or just right? It is a bit less harsh sounding that windows' resampler, but I can tweak it.

the point of this is, if you use music, it will be mixed in at full quality (44100) :) 
I tried it on Win7. Seems like it's working to me:

I compared the test build to v0.85.9, either using "-sndspeed 44100" or not, loading directly into DM4 to hear the Quake theme music.

The test build's music was the same quality as the sndspeed 44100 music for 0.85.9, regardless of whether I specified sndspeed for the test build.

sndspeed did affect other sound effects on the test build. 
If there are nuances of the test build's sound I'll probably miss them, but I'll keep using it for a while to see if anything else occurs to me. :-) 
Actually (sorry to post-spam) I am noticing something. I turned the music off to check the in-game sounds more carefully for a bit.

I immediately noticed something when doing a sequence of: pick up LG ammo, pick up LG, pick up armor, lava-dive and discharge.

The initial sound attack, some of the high frequencies, and even the hiss noise at the end of some of the sounds is noticeably more muted in the test build compared to 0.85.9. I also checked the original GLQuake and yeah, 0.85.9 is more like the original.

I guess I'm kind of imprinted on the original sounds to the point that even missing the noise hiss is a little odd. 
Windows has a fixed output rate anyway, the engine should always match that to avoid any undesired resampling.
iirc its generally set to 48khz by default in vista+, while xp will avoid resampling if there's only one source (read: audio buffer), without saying what rate it'll resample to.

plus there's lots of ac98 chips out there that support only 48khz, so windows resampling is handy. 
Thanks Johnny 
That helps, and matches what I hear too. I'll try tweaking the filter to match the 0.58.9/Windows sound more closely and post another build here.

I understand having the sounds imprinted a certain way, so I do want to be very careful about changing this.

Hope the general idea is good. For me, never having owned quake on CD, it was a revelation to hear the full-quality music and -sndspeed 11025 sounds together. :-) 
Hmm Interesting 
I got the patch. . I never play with CD/music myself. 
Insidious Dynamic Light Bug 
Start Quakepspasm r939 with no gamedir.

In console type: map e1m1.

Then disconnect.

Type game zendar; map zendar.


(Quakespasm 0.85.9 + Mark V won't crash, but will say AllocBlock Full. FitzQuake 0.85 will crash. )

What I think is going on, all the cached brush models have been cleared (shells, nail boxes) and is using invalid data to generate lightmaps. 
... fix 
RE: Insidious Dynamic Light Bug 
Fixed differently:

Eric's build bot at should generate a new build soon. 
New Builds 
Freezes with red screen immediatly after start. No console or nothing. Had to alt+tab out.

Win7 on new Lenovo laptop. 
RE: Win32build 
Just tested both the win32 and win64 builds on win8.1/x64 (took and unzipped the zip, put in my id1 folder and ran). Both ran fine for me.. 
i get just a red screen, but i can hear the sg firing.. which relaxes me a bit:) No clue, seems the onboard gfx cant handle it..

Mac build is fine btw. 
OSX Build 
Played on e3m1 just fine on retina macbook with OSX 10.9.4 
OS X Features ? 
I tested the OS X version with Sock's Jam1 map. Everything looks fine.

But please guys, consider adding antialiasing (FSAA) and the command-Tab feature to switch to other apps without quiting Quakespasm (like Q3). That feature is most wanted ! 
@mfx, Red Screen 
No clue..

iirc, you are running fullscreen? if you do, and if you run it windowed instead of fullscreen, does it work? if it does, does changing to fullscreen from within the game work properly??

also, does an earlier qs, such as 0.85.9, work properly on the same setup? (if it does, we screwed up something...) 
previous build were fine, yeah. So i start fullscreen, immediate lockup in red. no change possible, though i can hear and use the menu and console.

windowed looks like this: 
@mfx, Red Screen 
I see. How about Eris's auto-build? from here: 
They All Worked So Far 
I have some special versions for german kb layouts from him. No problems til now, so i´m a bit confused to be honest. I overwrote all dlls and stuff with todays build, previous test builds still work, just todays not. 
So, to clarify, this particular one does not work:

... but this one does?

(RE: DLLS: Please use the dlls from our zips as they are.) 
Both don´t work.. 
To test a theory can you please:

- take the win32 build

- and replace quakespasm.exe in it from this:

... and see if it changes things? 
Moment Please 
Ok Szo 
all red over here. 
then I'm baffled.. (the test I gave you changed the gamma handling in gl_vidsdl.c to USE_GAMMA_RAMPS 1, hoping it were the culprit.)

Let's see if Eric, Steven or Sander comes up with an idea. 
RE: Win32build 
In the meantime, I'd like to hear others' experiences with win32 and win64 builds.

(FWIW, I re-tested both win32 and win64 builds on my win8.1/x64 laptop with on-board intel graphics and nvidia graphics, both still run ok with both intel and nvidia chosen as the 3d accelerator.) 
Hmm Weird 
couple ideas for mfx:

- just for a sanity check, could you try extracting the zip into an empty directory, and just add id1/pak0,1.pak, to rule out any issues with DLL interference
- try launching with "-notexturenpot"
- does the win64 one szo posted also give a red screen? 
tried suggested clean folder setup, won´t work:( stdout.txt says this:

Warning: multitexture not supported (extension not found)
Warning: texture_env_combine not supported
Warning: texture_env_add not supported
Warning: vertical sync not supported (SDL_GL_GetAttribute failed)
Warning: texture_filter_anisotropic not supported
Warning: texture_non_power_of_two not supported 
Won´t change the red output.. 
Running on 32-bit win7. 64bit build won´t start. 
Thx For Trying. One More 
Try launching with "-bpp 16", this will disable requesting a 24-bit depth buffer which was changed recently.

So in the clean folder setup you still get the red screen, or does it fail to start at all? The messages in stdout.txt suggest it's using software OpenGL :-/

Looks like that build I sent you for trying to fix the console key was from april 30. not much has changed since then besides the depth buffer thing, and the non-power-of-two support. 
still red, 16 bit request too. 
Here's another one to try:

this is r944 with a different SDL.dll, the one from "SDL-devel-1.2.15-mingw32.tar.gz"

Just to confirm, this is the one I sent in april, it still works? 
tried suggested clean folder setup, won´t work:( stdout.txt says this:

Warning: multitexture not supported (extension not found)
Warning: texture_env_combine not supported
Warning: texture_env_add not supported
Warning: vertical sync not supported (SDL_GL_GetAttribute failed)
Warning: texture_filter_anisotropic not supported
Warning: texture_non_power_of_two not supported

Are you sure that you have hardware accelerated opengl??? 
layoutfix works, still, r944 doesn´t.

szo: Are you sure that you have hardware accelerated opengl???

How can i check this? 
This is starting to sound like a joke...

layoutfix works, still, r944 doesn´t.

That 'layout fix' build seems to be from r913. Thas hasn't been any commits since r913 that would affect video. Eric, can you see arything otherwise?

szo: Are you sure that you have hardware accelerated opengl???

How can i check this?

If you can run any opengl games properly, then you have hw accelerated ogl.

What hardware and what driver is this anyway? 
Ok I´m Feeling A Bit Awkward Too. 
This happens only on the Lenovo thinkpad, all other HW i use makes no problem.

Onboard Gfx: Mobile Intel(R) 4 Series Express Chipset Family

Driver Version:


Oh, btw, this laptop has also problems with Fitz, FMKV, and DirectQ.
Darkplaces, requiem, Qbism, tyrquake and QuakeSpasm do work. 
gl_clear 0? 
OK then. Try and run quakespasm (r944, mine or Eric's, doesn't matter, and doesn't matter it gives a red screen) using a command line like
"quakespasm +gl_info"
... then exit, and see the generated stdout.txt file. What does it say about GL_VENDOR, GL_RENDERER and GL_EXTENSIONS? 
GL_VENDOR: Microsoft Corporation
GDI Generic 
is the problem, right? 
GDI Generic is the problem, right?

Correct: there is no hw-accelerated opengl driver.

Is your driver from micro$haft (I think it is, they usually don't provide ogl, but only dx), or from intel? I suggest you download from intel, who should provide proper ogl drivers. 
OpenGL version 2.1.0 - Build is supported, but its software emulated or..? I don´t get tbh.

Ok then, i´m checking out intels ogl drivers then. 
Looks like its solved, though i had intel drivers already. Updated them and no red screen anymore.
Thanks for your patience szo and eric! 
Next time test everything on the same system, you dummerle. 
On windows, what opengl driver to use is a registry entry (or at least it used to be) which possibly got deleted or whatever.. Anyways, glad to hear that it works now. 
good to hear it's fixed :-)

I wonder why that layoutfix build worked. The only difference I can think of is that I compiled the layoutfix build with mingw32 on windows, and the ones that gave a red screen were all compiled on linux. 
what, micro$shaft is detecting our build machines and sabotaging us now? 
joke aside, he said that 0.85.9 works too, and looking at it the 0.85.9-win32 version is compiled on the same linux machine using the same toolchain against the same crt and headers. baffled... 
Do these new builds include the BSP2 support that ericw added some time ago?

Here is a question about the status bar on multiplayer mode - is it possible to center it like on SP? Why is it on the left side in the first place (if intentional), seems counterproductive. 
New Builds (r947) 
Do these new builds include the BSP2 support that ericw added some time ago?


Here is a question about the status bar on multiplayer mode - is it possible to center it like on SP? Why is it on the left side in the first place (if intentional), seems counterproductive.

It is the fitzquake code as it was, we didn't change that. 
Music On OS X ? 
The music plays when I type music filename in the console, but it doesn't start automatically when I start a map. Is this normal ?

Also, it doesn't play the whole list. It's only looping the only filename I entered in the console.

How can I play the entire list without having to type the names ?

Be more verbose! Where are your files located. What are their filenames? What maps do you try? 
The Ramones 
The MP3 files are all loose inside the id1/music folder. Their names are like this :

BallsToTheWall.mp3 <--- okay, not the Ramones ! ;-)

When I launch QuakeSpasm, and start a map, the music isn't playing at all. I have to type "music Loudmouth" to play that track, and its playing in loop.

I would like to play the whole list automatically at the map launch. 
About Cmd+Tab when in fullscreen: It's simply not possible due to the way how SDL sets up full screen. It captures the entire screen, and there's no sane way to handle Cmd+Tab in this mode. The alternative is to switch to windows by hitting, I think, Alt+Enter. 
Just run a music player in the background. afaik there's no support for playing a playlist like that; you can do "music Loudmouth" to play a single track like you said, or rename them to track02.mp3, track03.mp3, etc., and they'll play based on each map's CD track setting.

SDL2 supports cmd+tab in fullscreen if you use the "fullscreen_desktop" mode. In Mac OS this makes fullscreen as a space (virtual desktop), and cmd+tab switches away from it. So QS should support that at some point. 
Interesting, good to know. 
Multiplayer status bar --- this was like that in gal quake and I assume win quake too, to make room for the top 4 players scores to the right. I didn't change it. 
I think a way to create a playlist is to write a text file, in which you put in words like "music Loudmouth", followed by words like "music Commando" in a new line, and so on. Save the text file, name it something like "playlist.txt". While in game, you simply type "exec playlist.txt", and it should be all good to go. 
how about following the pattern of the "startdemos" command, and chain the track names in a single command?

startdemos demo1 demo2 demo3 
After Some Testing 
I found that my "playlist.txt" method does not work, as only the beginning first music will be looped over and over, instead of hearing the whole list of music files.

With some scripting I still think it's possible, but I am no expert. 
Console And Hud Suggestion 
It could be great to change the hud icons and the console background to some high resolution, modern-like rendering. I think it's currently impossible with Quakespasm. Could this feature be added ?

Also, the text displayed in the console and in the game (messages) is crude, as in original Quake. Adding the option to change it to a nice highres antialiased version would be great.

Is that possible ? 
No Way 
QS must not turn into Qrack or the like. 
OSX 10.10 Report 
Hello, I just ran build 944 on OSX 10.10 Yosemite and found few glitches (I think I should test them on 10.9 as well):

1) if you start QS without selecting right resolution then game screen will be shifted, so it is impossible to see lower/upper (varies) part of the screen. Tried it with both native system resolution and scaled to 1440x900 and 1680x1050 (on retina 13", intel iris).

2) resolution change from game menu leads sometimes to black screen, sometimes to screen shift, even if you selected "right" (one that equals to the system's scale) resolution.

3) I see 2 vertical black lines on sides of the display when scale to largest possible resolution on my hardware (1680x1050) and start QS with 1650x1050 resolution from launcher's options. Is it possible to add 1680x1050 resolution to the launcher and the game?

Hope you'll understand my gibberish. 
I Can Confirm 2nd Issue 
RE: OSX 10.10 Report 
Does using the "-current" argument help? 
Metl wrote re Playlist
how about following the pattern of the "startdemos" command, and chain the track names in a single command?

Yah.. A music command like that sounds good. But is it trivial (haha - can i code it !) ?. I think the answer is no.

I implemented 'cd next' 'cd prev' commands, but it's a different thing with our music. Maybe this hack *cough* would work if we have a end-of-track semaphore somehow (see TODO). But Music playback is zeroed by level change anyway, so this needs addressing too.

static void BGM_Play_f (void)
- if (Cmd_Argc() == 2)
+ int last, i;
+ i = 1; last = Cmd_Argc();
+ if (last < 2)
- BGM_Play (Cmd_Argv(1));
- }
- else
- {
Con_Printf ("music <musicfile>n");
+ // We should probably do this properly by assembling a music_handler_t list
+ // and implementing , 'prev', 'next' commands
+ while (i < last)
+ {
+ BGM_Play (Cmd_Argv(i));
+ // TODO wait for track to end !
+ i++;
+ }
RE: RE: OSX 10.10 Report 
On 10.10 it does the trick, but not with 1680x1050 scaled resolution.

Also bugs 1 and 2 doesn't appear to be relevant on 10.9.4 
RE: RE: OSX 10.10 Report 
On 10.10 it does the trick,


but not with 1680x1050 scaled resolution.

Can you explain this?

Also bugs 1 and 2 doesn't appear to be relevant on 10.9.4

So this is a 10.10 thing. I'll possibly need to report this to SDL. 
RE: RE: OSX 10.10 Report 
I mean when I set display resolution to what OSX display options calls "looks like 1680x1050" then "-current" QS command line have no effect in 10.10 and screen get shifted, but if I choose "looks like 1440x900" or "best (retina)" everything is fine.

I'm not that good at english, so there is more on retina thing, if you're still confused: 
@ericwa (RE: RE: OSX 10.10 Report) 
Eric: As I understand it, SDL2 already has support for retina. Does your SDL2 port handle this? Is it even remotely possible to handle it in SDL1.2? 
Impulse12 Fix? 
hi all. are there any plans to implement this feature

> jdhack's automatic impulse 12 for non-supporting mods (Requiem sv_imp12hack)

from reQuiem/fitzquake mark v? it would be really nice i think. 
as far as I understand, the retina support in SDL2 is to allow you to use the full display resolution when in windowed mode; it's just a nicety for getting extra quality. In theory, I think SDL1.2 should still work fine on retina macbooks. There's some discussion on the support in SDL2 here:
I didn't try using that retina flag in my SDL2 patch yet.

I also get issue #1 reported by AAS if I don't specify a resolution in the launcher, on OS X 10.9.4 / 15" retina macbook. IIRC, it only happens when I'm using the laptop screen, not an external monitor. It doesn't happen all the time; I never got around to investigating it. 
aye, retina mode is just a setting to tell the system to get lost and stop lying. :)
note: also useful in windows, and in fact required to stop fullscreen bugs (at least in non-sdl versions anyway). :/ 
without having to scour through the source, could anyone working on quakespasm give a run down of what needs to be changed to compile on a 64 bit machine (i'm working on my own port to a different os, this is completely new to me); like any problems with pointers, etc. I'd really appreciate it. in the meantime i'll check out quakespasm's source though 
I think it already compiles on 64bit; at least the Mac version is universal, i.e., contains both a 32bit and a 64bit build. 
i'll have to look again. last time i compiled 'vanilla' quake on linux it built but there was no audio of video. damn x11. 
Sounds In QS 
While cleaning some of my folders, I've found a Quake sound folder containing sub-folders like "ogre", "player", "zombie", "misc", etc.

The sound files are all in .wav format and are of very good resolution. So I was wondering if I could use them in QS. If so, how ?

I guess that the "sound" folder should be placed inside the "id1" directory, but what should be the proper path ? And do QS recognizes such sounds ?

I've also found some high resolution textures ror the arors and other items, like "armor.mdl_0.tga", "s_light.spr_0.tga", "s_bubble.spr_0.tga", s_bubble.spr_1.tga" etc. Where should they be located ? 
You're porting vanilla glquake to a new 64-bit os? there are some tips here: 
Yep, create a "sound" directory in id1 and they will be used (so id1/sound/player/gib.wav, etc); should work on all engines.

The quake mixer runs at 11025Hz by default, your replacement sounds are probably higher, so to avoid having quakespasm downsample them, you may want to try "-sndspeed 44100". This will make the original sounds worse, though. 
thanks for the link. yes, i'm attempting to port quake to plan 9 (the 9front fork actually) for fun. 
so you can run it on a raspberry pi?
I´m exited! 
Apparently, it doesn't work well. The hires sounds are sounding low res in QS.

And what about the textures I was talking about ? 
i believe you need to put them into a pak file for the sounds to work. make a pak2.pak and then mirror the folder structure. 
Sounds Sucks 
Eww !

And how do I make a pak file on OS X ?

There should be an option in QS to friendly use custom sounds... 
this is how the quake engine works. in ID1, it will always favour pak files.
The alternative is to put the sounds in a mod folder and run with -game. 
@ Necros 
The sounds are now working great (and they're awesome), as a "sounds" mod.

But what if I want to play a normal mod ?

How can I turn the "sounds" mod into a pak (on OS X) ?

A long time ago, there was an application on OS 9 (depacker) to unpack packs on the Mac, but it doesn't work anymore on OS X without the Classic environment (Fuck You, Apple !). 
Sounds To Pack File 
Here's a link to the sounds set (about 22.1 MB, zipped), so one of you could turn it into a pack file : 
i believe quakespasm allows multiple mod directories, so you can just do -game soundMod -game actualMod.

note that the order that you put the mods in will affect what files are retained. the first mod will have it's files overridden by the second mod and so on.

make a shortcut to always start the game with your sound mod. 
Use (it's easy) and

You use Wine Bottler on the .exe and you can run it on your Mac.

It's pretty easy, although you may need to install X11 (I don't think that comes with Mavericks). 
@ Baker 
EWW ! Man, such complicated emulation stuff just to use an utility, it isn't for me. I'm trying to make my life simple.

Someone could convert the sound files I gave above to a pack and publish it back here ? 
Thanks Mate ! 
It's working great !

Thanks a lot !

I'm now wondering about the textures I talked above. Where should I put them ? 
QS doesn't support external model/sprite textures, afaik, just replacement textures for the bsp 
Plan 9 
If you can install SDL, -> Quakespasm should be easy as anything i would have thought ???
Just edit the Quake/Makefile and disable all the fancy sound stuff.

Otherwise ... TyrQuake ? 
it may be possible to play doom on 9front on the rpi, that was already ported. i'm doing this as an exercise for the 64 bit kernel. 
New Builds (0.85.10-r958) 
What Are The Differences For OS X ? 
Almost all of the changes are cross-platform, no osx-specific changes. Since you asked, here is a summary of changes since r947:
- speedup of tga and pcx external images
- further slight speedup for lightmap loading
- change sv_aim default value to 1 (i.e. turn off autoaim)
- add 'prev' and 'next' keywords to the 'cd' command
- work around a linux cdrom issue (playback might not start for a while after a stop).

You can follow the development history from 
Thanks Szo 
More R958 Changelog 
I guess I missed mentioning Eric's sound mixer (lowpass filter) work that went in: 
Finally! Nice! 
Thoughts X 2 
I looked through some of the Quakespasm changes and have 2 thoughts:

1) MAX_MSGLEN has been increased from 32000 to 64000. FitzQuake protocol 666 has a MAX_MSGLEN of 32768.

As I understand it, due to this change you aren't actually using protocol 666 any more, but have modified it and, as I understand it, it is now possible to record demos or host a server using protocol "666" that in isn't actually compatible with the standard.

[I could be wrong, but I don't think I am]

2) sv_aim 1 as a default makes playing with the keyboard really hard. Probably the reason id software didn't default it to 1. 
1) You're right, you can record demos that will be marked as protocol 666 but an engine with MAX_MSGLEN set to 32768 like Fitz 0.85 won't be able to play (but this would only happen in cases where Fitz wouldn't be able to load or run the map anyway.)

I can see the argument that MAX_MSGLEN should be considered as part of the protocol, but there's good precedent for bumping this limit without changing protocol numbers; DirectQ, Darkplaces, and RMQEngine all use 65536 regardless of protocol, and I think Fitz allows 32768 bytes messages even for protocol 15 (same kind of limit bump).

The background behind this is I wanted to support a map ijed is working on (bsp2); the snapshot I have has 2855 edicts at startup, which gives a 43392 bytes signon buffer.

2) That's also true. But I assume nearly everyone plays PC FPS's with mouselook, so it's a good default? QuakeSpasm (in the upcoming release) defaults to +mlook turned on, as long as you use the quakespasm.pak, which is why I wanted autoaim to default to off.

I figured anyone who wants to do a "1996 night" and play quake with keyboard aiming can look up the original default sv_aim 0.93 and enter that in the console.

An option would be something automatic where turning mlook on or off automatically updates sv_aim to 0.93 or 1; I think negke suggested this, and that could be a good option too. 
I feel like those sorts of limits are a grey area where they are not directly part of the protocol, but obviously affect which clients can handle what the server is sending them. 
Tronyn's Arcanum Broken ? 
WTF !?

Arcanum isn't working anymore. I'm getting an error message in the console after entering the last gate of the second map. Unable to play the third map. What gives ?

Anyone getting the same ? 
Seems To Work Here 
at least I can noclip to the exit trigger in arcanum2, and arcanum3 loads.

What's the error message? Are you using the build szo posted in #917? Can you try it in QS 0.85.9? Does it fail if you do "map arcanum3" in the console, or is arcanum2 the cause? 
check if using a large heapsize solves it like "-heapsize 256000" 
Ericw, I'm using -heapsize 480000. AFAIK, it should be enough.

The problem happens with all my versions of QS, and also when I try to load arcanum3 directly from the console. Here's the error message I got :

> can't find function monster_gremlin
> Host_error : ed_parseEdict : parse error

Here are the commands I'm using when I start QS :

-hipnotic -quoth -game arcstart +skill 3 +map arcanum3 -heapsize 480000 -zone 2048 -sndspeed 44100 
Oh My God 
delete the hipnotic and quoth stuff. 
-hipnotic -quoth ?? 

apparently, the commands "-hipnotic -quoth" are the culprits. Why ?

I now can start arcanum3 if I dont put -hipnotic -quoth at start. 
Why ? 
I thought that -hipnotic -quoth was usefull. I don't even remember what it's doing. 
they load different game directories and progs.
Which interferes very heavily. 
You only want to use -hipnotic, -quoth if the mod readme specifically requires them. Glad it was an easy fix. 
what is -hipnotic ?

And the last map of Arcanum sucks : it has lots of holes and rendering problems on some walls. 
hipnotic is the first missions pack (Scourge or Armagon). 
Transparent Lava (NOT !) 
Is there a way to make water transparent, but lava opaque ?

What are the commands for this ?

Real lava isn't trasparent. It doesn't even make any sense ! 
We did this in RMQ/e with different keys for telealpha, slimealpha, lavaalpha and wateralpha.

But it wasn't adopted by other engines. 
Not without map hackery. you could make a thin illusionary brush over lava and give it an alpha key of 1.0, but I assume your question is as a player. RMQEngine has separate alpha values for each liquid. 
Other Way Up 
you could make a thin illusionary brush over lava and give it an alpha key of 1.0,

Actually you don't need the alpha key to get a non-transparent brush. Also, you can put the illusionary a few units below the actual lava and get a dual layer effect on the ripple. 
Fitzquake 0.85 introduced an ambiguous feature that allows wateralpha to affect water-textured brush entities. Illusionaries too, I think. 
If It's In RMQ/e, Then Why Not In QS ? 
If there's an option to define different transparency effects for water, teleporters and lava in some engines, why not in Quakespasm too ?

Water should be transparent (at least partially), but lava SHOULD stay opaque. Also, the teleport field should be opaque.

I'm even getting some weird rendering artifacts/weirdness in QS when I look at some lava fields. It's so ugly that I think to make all water/lava opaque, because of this.

What is the command to define opaque water/lava/teleporters in QS, for ALL maps/mods ? 
Fitzquake 0.85 introduced an ambiguous feature that allows wateralpha to affect water-textured brush entities. Illusionaries too, I think.

Hm, didn't realize that, but I can confirm it works. However, if you set an explicit "alpha" key on the entity, that value is used regardless of r_wateralpha.

@Barnak, just set "r_wateralpha 1" if you want to make everything opaque.

I wouldn't be opposed to adding the r_slimealpha, r_lavaalpha, r_telealpha keys. It does have a small potential for visually breaking existing maps if the author includes an r_wateralpha setting in the map (in a config, or trigger_command, etc.) and expects it to set the alpha of slime, lava, and teleporters, not just water. Not sure if that is a realistic problem or not. 
What is the command to define opaque water/lava/teleporters in QS, for ALL maps/mods ?
because that is the original command from glquake. the engine doesn't really make much distinction between liquids (although it is aware of it), it's only in the qc that things like damage and slower movement speed are taken care of. 
May I suggest to add the options to add r_slimealpha, r_lavaalpha, r_telealpha to QS ?

I think this would improve a lot the rendering in Quake. Water as semi-transparent liquid, lava and teleporters fully opaque.

What is slimealpha ?

I currently use r_wateralpha 0.8, as a compromise for lava/teleporters and water. 
Backwards Compatibility 
I wouldn't be opposed to adding the r_slimealpha, r_lavaalpha, r_telealpha keys. It does have a small potential for visually breaking existing maps if the author includes an r_wateralpha setting in the map (in a config, or trigger_command, etc.) and expects it to set the alpha of slime, lava, and teleporters, not just water. Not sure if that is a realistic problem or not.

The way to make this backwards compatible is to say that when r_slimealpha etc are set to 0, slime transparency defaults to the value of r_wateralpha. Essentially these cvars become overrides for r_wateralpha, and ideally they'd work selectively, so if you're happy for slime to be as transparent as water you only need to set r_wateralpha and r_lavaalpha.

I'd also recommend that whoever implements this also adds support for worldspawn wateralpha/slimealpha/etc keys in the way fog works now, so that the new de-facto standard that is created incorporates two good ideas at once. 
r_skyfog too? 
Doesn't FQmk5 have a cvar for an ignore-wateralpha list? You have to put texture names in it manually, which is dumbish, but there it is.

and please, _worldspawn keys for this shit. I miss when the primo engine port was being developed by an actual mapper, who gave us control over what our maps looked like and left everything else alone, instead of cvars for everybody to twiddle, so debugging new content became a hopeless crapshoot. 
And What About Gibbs Staying On The Floor ? 
Currently, the gibbs and dead bodies are smoothly fading away or slowly moving under the ground to reduce the impact on frame rate and memory (I guess). On modern computers, I don't think this is a concern anymore.

So is there a way to tell Quake to leave all the gibbs and body parts there ? If not, it would be cool to have a new option about this.

I love to see the mess I do on a map, especially at the end.

What do you think ? 
And Frame Rate Counter ? 
Is there a frame rate counter in Quake1 (I suspect there isn't) ?
Probably no so usefull (the frame rate appears to be very high on my old 2009 Mac mini).

So a few options I would like to see in QS, that could improve the game or the user interface :

1. FSAA (antialiasing). I think ericw once add a good piece of code to add this (I have an old experimental version of Quakespasm OS X with FSAA, from him).

2. Gibbs and dead bodies staying on the floor.

3. Independant transparency control of water, lava, teleporters.

4. Frame rate counter.

5. A better looking icon on OS X ? I think it's currently too thin, especially on the OS X Dock.

6. An option to make the Shamblers serve beer, instead of electrical discharges. 
Preach, thanks, that sounds good. I tried implementing the cvars and worldspawn keys, and seems to work.

I guess I should use underscores for the worldspawn keys, like "_wateralpha"? "fog" and "sky" don't, but they've been around forever.

mfx, supporting "_skyfog" as a worldspawn key sounds good, and it's trivial to do.

The straightforward way of implementing all of these worldspawn keys is to just set the cvar whenever the map is loaded (whether from playing a demo, dying, or starting it normally). Setting the corresponding cvar will mean they persist for the rest of the quake session, unlike "sky" and "fog" which are cleared whenever a map is loaded. Does that sound like a problem?

The only real workaround is e.g. turning r_skyfog into a command like "fog", where the value gets reset to its default (0.5 for r_skyfog) whenever a map loads. I wouldn't want to change r_wateralpha like this since it's been a cvar since glquake.

Also, quakespasm has archived r_wateralpha in config.cfg since 2011 or so. I'm not really a fan of this, because it means maps that use trigger_command to set r_wateralpha (or the yet-to-be-added _wateralpha key) cause the last value used to stick across launches of quake. r_skyfog is not archived though, and the r_slime/tele/lavaalpha cvars wouldn't be archived either. I would be tempted to stop archiving r_wateralpha in config.cfg, not sure how the other QS devs feel though.

Lunaran, yeah, hopefully adding support for these worldspawn keys is a step in the right direction.

Barnak, re: gib removal, it's probably the Quoth mod doing that. IIRC, it's not configurable by the player. You can get the fps counter with "scr_showfps 1". FSAA is on my todo list. 
could there be a _cvars key that simply accepts a semicolon separated list (that does not get archived)? 
No Texan Style approach to feature addition. 
Gibs And Bodies 
Gibs always disappear after 10-20 seconds. It's standard Quake behavior set in QC. The corpse removal in this case is most likely from Quoth, indeed. I hate how the mod defaults to this instead of being opt-in. Neither should be overriden by the engine. 
All Your Gibs Belong To Us 
So there's no way to prevent the gibs and dead bodies to disappear and make them stay on the ground ? (so we can eat'em later) 
Quakespasm.pak File 
What's in that quakespasm.pak file ? What are the differences if I remove it ?

The readme doesn't say much about this :

>Quakespasm content customization moved from engine-embedded
> into a new optional quakespasm.pak file. 
Music List 
Maybe another feature request : a command to list all music files.

I can't remember all the music file names I placed into the music directory.

Currently, we can browse the map directory with TAB. Maybe something similar could be usefull for music ? Or at least a music list command ? 
hopefully adding support for these worldspawn keys is a step in the right direction.

Agreed, and thank you! Still, if only one engine out of a half dozen implements it, or if they all implement it different ways, it's still effectively unusable.

I really don't want to just say "this mod requires this engine" because everyone has their own choice based on personal preference, or based on what engine they can even run (because they're on a Mac or whatever), so that isn't an option either. That limits level designers and modders to the subset of features that are global enough to be effectively standard, which at this point is a _fog key and an .alpha key and not much else.

I explored using stuffcmds to switch the skybox during gameplay, so the player could go underground and emerge somewhere with a different backdrop, or to simulate lightning flashing during a storm. Research immediately revealed that not all popular engines have a console command to change the skybox, and the ones that do don't use the same command. The idea survived about five minutes.

Recent QS changes have even made me back off on stuff that would have been possible in stock Quake. I'm now greatly constrained in how I print text to the screen and how much (any more than 384 characters and apparently I'm creating a "rude mod," to quote the QS readme), and I've given up on having a custom demo or set of demos to play at the main menu because someone contributing to QS decided that the startdemos command in quake.rc should just be ignored, for no other reason than he prefers it that way. These are rather disheartening precedents.

So, yeah, _skyfog and _whateveralpha keyvalues would be nice! but unless we can convince Baker, LordHavoc, et al to implement the same things the same way, from the perspective of a mapper there's not much point. :( 
Random Map Command 
I have hundreds of nice custom maps inside my id1/maps folder. Very often, I simply don't know which one to play, and would like to be surprised.

So a "randommap" command could load some randomly selected map from the whole list. The player would then be surprised each time he calls "randommap" from the console. A keyboard shortcut could even be assigned to the command.

Wouldn't that be great ?

I'm not a programmer, so I don't know if this could be done for QS.

What do you think, Quake Gods ? 
_wateralpha Sounds Pretty Safe 
I can't really see how people would implement _wateralpha differently, it's a much safer bet than fog ever was for being consistent. It's also one of those gracefully degrading features like skyboxes - your map doesn't stop being playable if the water is off. That means there's a nice path to adoption, you get a "recommended engine" not a "required engine".

Suggesting people should bundle it with the newer features is a bit of a risk, but hopefully the one will carry the other... 
Let's Get That Rolling Stone Gathering Moss a base that belongs to us. 
recommend "wateralpha" instead of "_wateralpha" since keys with an underscore are intended for the compile tools, not the engine (engine is supposed to ignore them) 
thanks for the pointer metl.

Thinking a bit more on it, these worldspawn keys should really behave the same as the existing "fog" and "sky" ones, not persisting beyond the map they're used in.

so maybe something like this:

Worldspawn keys:
slimealpha, etc.

If set, the provided value is used for the duration of the map instead of the r_ cvar. Does not change the values of the corresponding r_ cvars.

r_slimealpha, etc.

Gets/sets the fallback values used in maps that don't specify a value in worldspawn (i.e. unchanged from current behaviour). If the current map is overriding "wateralpha" with a worldspawn key, and you query "r_wateralpha" from the console, you get the fallback value, not the current map's worldspawn value.

The only missing use case here is: you've overridden some of these values in worldspawn, are playing the map, and want to check / tweak the values in the console. The cvars won't work because they get/set the fallback value that would be used if you weren't using the worldspawn key.

Idea: a set of commands:
slimealpha, etc.

These print the current settings (whether coming from the cvars or worldspawn keys), and let you change the settings for the duration of the current map. They never change the corresponding cvars. i.e. same principle as the "sky" and "fog" commands. 
I can't really see how people would implement _wateralpha differently


FQmkV exempts liquids beginning with *tele from wateralpha, and provides the unique keyword "r_texprefix_tele" to override or disable it.

There's the inconsistency brought up for Barnak earlier, where some engines will apply wateralpha to bmodels with liquid textures on them and some won't, making it harder to use the func_illusionary trick to get around undesirable wateralpha settings in the first place.

To make sure that engines which "fixed" the behavior still give you the desired original-quake behavior, you have to forcibly set alpha 1 on those func_illusionaries, which causes back to front sorting issues in all engines. (This is visible on the lava in my jam2 map.)

If there are cvars I can poke from progs.dat, do I have to worry about them being archived in the cfg, or not? Does the player's cvar setting override the worldspawn key or vice versa? How are the infamous not-water liquids found and handled?

If you don't see how the quake community can implement something inconsistently, you're underestimating their ingenuity. :) 
Another Feature Request 
How about a fix for flickering entity as well?

Its where large bmodels end up spread across multiple leafs and go invisible depending on where the player is stood.

The bmodel doesn't even have to be that big - just an oddly shaped leaf or bmodel can do it. 
recommend "wateralpha" instead of "_wateralpha" since keys with an underscore are intended for the compile tools, not the engine (engine is supposed to ignore them)

The intent here was to make it so that it doesn't throw up errors in engines that don't support the key, since they're already trained to ignore it : - ). I know the original intent was for tools, but it can serve a second purpose for things the engine understands but is hiding from the QC and third for hiding QC fields from those pesky mappers 
Dead Simple 
Coders: the bug in #965 is fixed by increasing MAX_ENT_LEAFS in progs.h 
hexen2 ignores r_wateralpha on lava.
but it uses r_wateralpha as a general transparency value on other things like transparent projectiles etc..

when you have refraction/defraction effects, wateralpha is a nasty kludge that is often best ignored completely.

leading underscore means that mods can't see it, but that other engines won't spam like crazy leading you to think the map is buggy.
no underscore is an actual entity field. probably not desirable but at least qc can see it. and then someone thinks that changing it in code should work too. and then we get people complaining that it doesn't work and all the programmers bitch about it.
really, engines should probably support both, and mappers should use an underscore.

tweaking cvars randomly from gamecode for anything except menus is evil, and WILL glitch one day, one time... AND THEN THE USERS COMPUTER WILL BLOW UP AND THEY'LL SUE YOU! so don't poke cvars, mmkay?

I've taken to making empty cvars mean 'default setting'. if r_lavaalpha is empty, FTE uses r_wateralpha instead. I'd say if r_wateralpha is empty, use the map's _wateralpha key instead, or 1 if not present. or something. Meh, I dunno. Lots of ways to try to get it to be automatic and most of them will conflict with what you think should be the standard. And all of them useful in some way where the others are not.
All I can say is that in an engine with shaders, you can ignore the cvars completely and live in bliss because of it. Cvars have their place, but generally its better to just make the content define how it looks instead of the user tweaking random things because the map's readme says to do so, and breaking other things in the process. Yay shaders. And needing extensions (over q3 compat) to actually get the water looking reasonable. Bah. There's a flaw to everything.

The great thing about standards is that there are so many to choose from.

K, I'll shut up now.

Fitz 0.85 was a standard. QS as a fork should adhere to it. 
A Brief History Of R_wateralpha 
if r_lavaalpha is empty, FTE uses r_wateralpha instead.
This sounds like the best thing to do

I'd say if r_wateralpha is empty, use the map's _wateralpha key instead, or 1 if not present. or something.
This sounds okay too, so long as you don't archive r_wateralpha. I suppose there are three ways to treat the interaction between prior values of r_wateralpha and the _wateralpha key

1. Any prior setting of r_wateralpha wins - bad if you archive or if people set r_wateralpha in autoexec.cfg, but ok for people running the map fresh otherwise.

2. _wateralpha is a temporary override of r_wateralpha, effective just for the duration of that map. Removes the ability for players to adjust the wateralpha once they load the map - which might be good or bad I guess

3. _wateralpha effectively sets r_wateralpha, so the value persists. By far the easiest way to do it, and consistent with how QC mod-based wateralpha works, but when compared to the alternatives seems quite disruptive... 
4. at map load, check for _wateralpha and use it, otherwise use r_wateralpha. But do not update the value of r_wateralpha. If user changes r_wateralpha while the map is running, override the map's value. When user quits the game, r_wateralpha will be saved, but since it was never set by the map value, it retains the last user-specified value. 
That Sounds Pretty Solid, Metl 
and a bit more elegant than my idea in #963

Spike, I agree the content should dictate looks. I understand in q3 the water alpha would in the shader, so basically a property of the texture itself. So from that point of view, _wateralpha in worldspawn could be seen as a workaround for lack of shaders in vanilla q1 bsp. 
in fte I have some cvar latching feature. if the server tries changing a cvar, the client tracks the user's desired setting and resets it to that at map end (it also reverts to it if the server tries to set the default, so fov works with sniper scopes).
hurrah for strategies to ignore mods, while not ignoring them at the same time.
configs _never_ get the server's value, they only get the desired value written.

for other engines, you can probably get away with just changing r_wateralpha.value directly if the key is present, and unconditionally reparse the cvar's string for the next map.
its probably just 3 lines of code (assuming fog/sky parsing already). doesn't really help with mods that try to take control of it though... so nothing new is broken by it, hurrah, but also not fixed.
cheesy hacks rock... 
(I know the discussion's moved on to agreeing on an implementation, which is <3, but I want to justify my rants. there's generally two classes of engine, from a mapper's point of view:

> the fitz/baker/spasm quakes for people who want the game to look mostly like Quake always did, but run well on modern systems and be generally improved from a functional standpoint, and which add only simple/graceful features that don't detract from a 'classic' feel when mappers use them well (skybox, fog, colored lightmaps)
> the fte/dp/fuh/etc quakes for players who want to override as much of the original content as possible with normal/specular high-res content packs, new water and chrome shaders, and dynamic disco lights, such that I'm never going to get them to look at a map I made the way I made it anyway

obviously it's only the first category that I'm interested in supporting because it's only users of the first category that are fully interested in what I'm making, and because I can't account for all of said disco shaders anyway I couldn't support them consistently if I tried.

that's why my hackles go up when the anything-goes, a-programmer-thought-this-would-be-fun-to-add mentality of the second group begins to leak into the first, because it threatens the reliable consistency fitzquake has provided for so long.

intermission over) 
I'm Not Angry, Just Disappointed 
That you didn't lead that post with "And Now, The Intermission" so I could imagine crackly phonograph music while reading it. 
Guns Don't Kill People... 
Neither do engines...

FTE/DP are actually pretty nice to play Quake in, it's just that a lot of players are not blessed with taste and restraint. That is not the fault of the engine... even Fitzquake allows the loading of external textures, thus letting users plaster your level with images of Goofy if they so desire.

Both DP and FTE can look pretty decent for standard Quake (I guess someone will scream "PARTICLES!" now, well, go and make a faithful particlefont then) if you leave the realtime lighting disabled. These engines are perfectly capable of displaying lightmaps and not much else, you know.

They can be even nicer for modding. Why not create a fancy menu (with all the OMGbling removed) for your next map pack? Doesn't affect the faithfulness of the level one bit. How about pretty loading screens for your humungous masterpiece map that give people a foretaste of what's to come? Same. And no player will ever know how many engine extensions you use in your QC, because things like tracebox() are 100% behind-the-scenes.

Bigger maps? Rotating entities with proper collision? Terrain with texture blending? Mesh collision? Rotating dynamic lights? Stereo sound? Scriptable particle system? True type fonts? Splitscreen?

Doesn't sound like evil incarnate to me, but what do I know. I'm just a poor sinner. 
i never develop mods for dp because the engine always breaks my code. 
i need to remember to log in..... :P 
These engines are perfectly capable of displaying lightmaps and not much else, you know.

every engine claims that it degrades to a perfect simulacrum of vanilla Quake, but they all look a little queer when they do, and more importantly, they're all inconsistent about how they do it. try exploiting any small quirk in Quake engine behavior for a positive effect and you'll quickly find most engines have either broken it or "fixed" it.

And no player will ever know how many engine extensions you use in your QC

They will if they use an engine that doesn't support them. To take advantage of any of them, or any of the rest of these silly features, I'd have to require one engine over another. There is no quicker way to make people upset and stop them from playing your mod in the first place.

Bigger maps? Rotating entities with proper collision? Terrain with texture blending? Mesh collision? Rotating dynamic lights? Stereo sound? Scriptable particle system? True type fonts? Splitscreen?

Because if I felt like I needed any of that stuff, I wouldn't be mapping for Quake. Not everyone thinks that Quake is "missing" next-gen features. When engines do add them, the collective effect both on their own codebases and on the community is that it makes it harder to create content that doesn't use them.

Doesn't sound like evil incarnate to me, but what do I know. I'm just a poor sinner.

Please re-read my earlier examples until you understand that I'm not trying to take your eye candy away from you, I'm just trying to prevent collective action on the part of seemingly deaf engine hobbyists, and the broken inconsistent 'standards' they unintentionally push on users, from taking far simpler little things away from the people who are actually still trying to make content for this game. 
What exactly is your beef here? Your posts read like you're trying to defend something, but it seems like you're arguing everything you can in order to do so, obscuring the point that you're actually trying to make.

Fact of the matter is that 'perfect simulacrum of vanilla Quake' is a really really wooly definition.
In terms of visuals, this generally means software rendering. except they use linear filtering...
In terms of networking+gamecode, this generally means OMGYOUGOTOWNED.
In terms of console commands, this generally means: what do you mean I have to set port BEFORE connect? why does reconnect not work? argh!
I'd be curious what you think looks a little queer with fte's 'fps_preset normal' setting, maybe I can improve it for you (and any other potential users that don't use some other setting instead).

The great thing about QC extensions is that they stop modders from going insane. strcat will greatly reduce the complexity of certain things for instance...
The fact that there are still engines that do not support this basic feature is completely absurd. It is really no wonder that you have to resort to the hacks that depend on those bugs that got fixed.
Oh noes! it won't work in dos/win/glquake! Who even still uses those anyway?

'next'-gen features are often fun, but yes, they're not quake. however, bigger maps is more quake!
rotating bsps were used in hipnotic, was that not quake? the fact that the code is much simpler to produce and doesn't require hacks is surely a good thing?

who, exactly, do you consider deaf? why do you believe this to be the case?
considering this part is an engine topic, would you mind creating a rant topic on inside3d where there tends to be more modders around that might actually *see* your point of view?
The fact of the matter is that a few posts in the middle of a topic on a specific engine can _EASILY_ be overlooked by pretty much everyone (except maybe that engine's author). Help out and give everyone xray specs, and maybe the 'blindness' issue will deminish slightly! :)
In other news, baker was asking for some test mods (to see if things are broken, I assume) on inside3d. You may wish to help out and give him some suggestions, or perhaps some specific testcases for the things that irk you. 
Fitzquake Mk V Features (reloaded) 
Any chance to get any of the features I requested back on 2014/02/05 (see above) implemented?

I'd at least like to see support for .vis files added since all my downloaded mods have been optimized for utilizing this feature from Fitzquake Mk V. Much better than having the original non-vised maps and improved vised maps in the same directories. 
I posted a proposal for the worldspawn keys, which is borrowing metl's idea in #971, on inside3d, along with a prototype implementation in QS (w/ win32 binary): 
I'll add whatever gets decided upon after it runs the course of the normal feedback loop and a map release by a veteran mapper uses it. 
Quakespasm Bugs And Suggestions 
option to enable bloom
option to disable transparent water
option to disable crosshair
option to enable vertex lighting
optional lighting gun beam dynamic lighting (like directQ)
optional shalrath, scrag and death knight projectile dynamic lighting
adjustable particle transparency & density
adjustable liquid transparency
selectable individual liquid transparency (r_telealpha etc)
defaulting to 44khz sound mode

teleport textures are transparent
e2m3 nail trap doesn't work
with 'r_novis 1', explosion sprites don't appear underwater
water in Malice is not see-through anymore 
anisotropic filter option
point sampling filter option (for classic 'blocky texture' quake look)

water surface is bugged; has visible gaps on the surface 
Lots of these are already features. Did you read the documentation? Or do you simply mean menu options?

Also, some of these have been answered at that other forum. It is not very nice of you to ignore that and not mention that you are crossposting the exact same text. 
Lots of these are already features.
>which ones? they aren't to my knowledge

Did you read the documentation?
>yes and the fritzquake as well

Or do you simply mean menu options?
>Mainly as menu options where applicable

Also, some of these have been answered at that other forum.
>actually they haven't been (r_wateralpha 0.5 makes teleport/lava textures transparent) 
Is there a spell somewhere in the necronomicon to enable xinput for lazy single player gamers? 
Playing W/ An Xbox Controller? 
SDL2 supports XInput, not sure about SDL1. Personally i'd like to add controller support to QS sometime (for playing quake on couches/beds :P). not sure how the other devs feel about it, but it requires a bit of work.

So it's something possibly on the todo list, but not available right now. 
what about my suggestion of a new console command to load a random map, so the player don't know in advance which map will be loaded.

I currently have hundreds of maps in my id1/maps folder, and very often I simply don't know which one to play.

Using a random map command, It could be great to be "surprised" each time we load a new map. I'm sure other players would appreciate that feature too. 
Sry, Replied To Your Email Finally 
pasting here:

There are a couple of potential issues, one is some mods use .bsp files that are not actually levels but just prefab objects that referred to - so a “randmap” command might try to play these.

Also I’m pretty sure that a “randmap” mode where exiting a level loads a random map instead of the one specified in the trigger_changelevel is almost impossible to implement in a clean way.

So we can see if the other QS devs have a comment, but I’d say it’s probably not a good fit for quakespasm. 
As Said By Email : 
About the randmap command, I was thinking about loading only maps located inside the id1/maps folder, not from the mods (I was aware of the issue you described with mods).

That command is highly desirable if you do have hundreds of custom maps.

Without that random command, many good maps will remain in your maps folder without ever being played for a VERY long time.

The randmap command would give all the maps a chance of being played at any moment you call "randmap". 
More On The Randmap Command : 
Let me elaborate on the idea of that "randmap" command :

You start QS and drop down the console to type "randmap". QS then loads an arbitrary map from your id1/maps folder (mods are all excluded).

You then play that map to the end, and use its exit. That map then loads its predefined second map. Fine. The randmap don't interfere here.

You play the second map (called from the first one), and decide you don't like it. You drop down the console and type "randmap" again. QS then loads a new randomly selected map. If you still don't like it, you could use the randmap command again, until you like the map. And so on.

If a map ends to the default start map, then no problem. You can call the randmap at any time.

This command is simply a way of picking up an arbitrary map in your id1/maps folder.

It may also happens that the command loads the same map again (random selection without memory). This is not a problem since you could call that command again. The chance that it gives you the same maps several times is low if you have hundreds of custom maps inside your id1/maps folder.

The ability to bind the randmap command to a keyboard shortcut would be extremely usefull, IMHO. 
Quakespasm Spazzing Out 
Post #55 applies to me, except I am running Windows 8 and the latest version of Quakespasm. This is on my laptop.

Simply put, mouse movement is wildly erratic, spinning the camera at high speeds in any direction, even when mouse sensitivity is at its lowest. While spinning like crazy for a second or two, it will even cause Quakespasm to freeze for a minute.

The other problem is this:

As you can see, the game resolution is bigger than what its actually supposed to be. You can imagine when attempting to change the resolution to 1920x1080 sections of the screen are completely cut off, like the status bar.

My laptop is running Windows 8.1 64-bit, AMD A8-5550M CPU, and AMD Radeon HD 8550G graphics card. Drivers are all up to date.

Anyone have any ideas or experience something similar? 
Post #55 
It happens to me too, it always did with all the versions of Quakespasm i used (0.85.5 to 0.85.10), but in my case it never freezes, only spins till i learn how to make it look forward again.

For now it happens in my dual core PC with Windows XP sp2. Have to check in others.

I never worried about it because i thought it was an issue with the mouse or with Windows' drivers. I also always thought that it happened too in other Quake engines and in other videogames, but now that you are saying that, Orl, i am beginning to doubt.
The more i think, the more i see that the issues i had with other videogames can be explained or are unrelated. Have to check the other Quake engines i currently use. 
Barnak, it would seem out of place to add such a command to an engine that is otherwise rather oblivious to "content". I would love to see an engine with all the Quake Injector functionality built in, but until then I don't think such command would fit the philosophy.

I would offer to write a Bash script to do this if you are on Linux? Otherwise maybe is enough for ideas? 
Hm, based on the screenshot I'm guessing it's an incompatibility between SDL 1.2 and the windows 8 dpi scaling. Can you try setting the windows dpi to the original small size, "100%", and see if that fixes it? Not a proper fix, of course.

if that's it, this sounds like something SDL2 might fix. I don't have an sdl2 quakespasm windows build handy, but can put it on my todo list.

Cocerello, any chance you're using dpi scaling too? 
first part disables silent file redirection (grr).
second part disables dpi scaling (so fullscreen isn't broken any more).

both tell windows to go away and stop breaking things. neither appear to be possible with an winapi call.
save it as foo.exe.manifest next to your foo.exe and you should be able to use it without recompiling the exe. 
You Were Right Ericw 
After disabling DPI scaling within the compatibility options for quakespasm, it not only fixed the resolution, but also the mouse issue. The mouse works fine now, and there doesn't seem to be any problem whatsoever. 
I'll check, but i won't get to see that PC again till september.

If the one i have here has the same problem, i'll tell you if that fix works. 
>I would offer to write a Bash script to do this if you are on Linux? >Otherwise maybe > is enough for >ideas?

I'm on OS X.

And no, using a web site to select a random map isn't usefull. I would like to randomly select a map from my personnal collection, from WITHIN the game (QS).

I think this command would be a great addition to the game, especially if you do have lots of maps in our id1/maps folder. And since I can't put the game to the background (a Quake3 feature that I was asking for Quake1), I can't consult the internet while QS is running.

I don't see how that randmap command would "not fit" QS's philosophy. 
For umpteenth time: hit alt enter to switch to windowed mode, then go to the menu to unfreeze the mouse. Is that really so hard? 
This is a pain in the ass just to select some random map.

Is it really so hard to add a randmap command ?

It probably is not hard to add but it would be hard to do well. What about deathmatch maps, what about bsp files that are not maps, what about maps that are later part of an episode? That would be hard.

You are just one user and would probably be the only one who used this feature.

Does QS support loading a map (in a running instance) by doubleclicking it? 
Double-clicking a .bsp file to launch QS and play that map would be great too, I suppose. It's currently not working on OS X. And double-clicking a bsp file which isn't a map wouldn't be that great neither, I guess.

Do you put non-map bsp files into your id1/maps folder ?

And even if we have such maps in id1/maps, using the randmap command would simply give an error message, as if you tried to open it using the standard map command. The user then simply has to use the randmap again to select another random map.

I don't think that non-maps bsp file would cause that much troubles. 
Do you put non-map bsp files into your id1/maps folder ?

Ammo boxes, health boxes, exploding boxes are all bsp files. 
"randmap" As An Alternative To "map" 
I see the "randmap" command as simply an alternative to the usual "map" command, without a mapname argument.

Even if it selects a deathmatch map, so what ? I would use "randmap" again, until I get some playable map.

This would be so much easier to start a random game, especially with a bind to a keyboard shortcut. 
what about my suggestion of a new console command to load a random map, so the player don't know in advance which map will be loaded.

In Qrack I added such a thing, though, use the existing changelevel command. So in effect if the user just types
without a map specified it loads a random map from the gamedir.
I'm sure it would be trivial to port. 
sorry to double post, Lightning Hunter requested this feature to me a few years back. His use was for FrikBots. He had all his DEATHMATCH maps and waypoint files in the frikbot folder.

I agree with Spirit, for single-player it might seem a bit disjointed. 
R00k, My Love ! 
Haa ! I knew it !

Please, port this to QS ! 
why would you wanna the randmap command???
it is a most idiotic request i've ever heard 
To play a random map. 
It is certainly NOT an idiotic request. It actually says a lot about your own way of playing Quake !

As I already said several times, I have hundreds of custom maps in my id1/maps folder. Most of the times, when I launch QS, I simply don't know which maps I'm gonna play. And there's no way I can know in advance what a map is looking like, just by looking at its name in the map list.

So I start by launching a random map from the list. It's a pain in the ass to look up the whole list (hundreds of fucking weird names!), and type it in the console, then repeat the process again after I played the map.

The randmap command would ease that A LOT !

Is that so hard to understand !? WTF ! 
You do know the Quake Injector, right? It's what I use when I get a random craving. Just scroll randomly and click. 
Close your eyes, get your finger out, and point to your screen at random with the window with the maps open. Or input the ''maps'' command and press page down a random amount of secs.

Well, jokes aside, that feature isn't something that would make your life so easy that you need it for sure, judging by the amount of posts you are writing. It would save you just a little work.
The second point is that there is only a few people that would use it. Everyone has their own way of playing the maps. I for example delete them after playing.
Third what was already said before, it has conflicts with .bsp files in id1\maps\ that aren't maps. 
Apparently, Quake Injector don't work very well on OS X.

And I would **hate** to use an extra program just to launch a random map. It would be much easier to launch a random map directly from within QS.

Geez, I don't need all the Quake Injector functionalities built in QS, just a random map loading as an alternative to the usual map command, that's all.

Since nobody here appears to understand what I'm asking, I'll shut my mouth and wont participate anymore to this forum. 
You'd have better luck if you'd asked politely instead of petulantly demanding that others spend their hobby time, which they use for fun, to implement a feature for you.

And here's a really wacky idea:

Some time ago I wanted to make custom enemies for quake. So I opened up the qc and learned how to script it. Saying "I don't know how" is not an excuse - everyone starts like that. 
About your wacky idea :

So do you think it's possible to make some bsp file that would launch a random map from a list ?

I may be tempted in trying to do it myself, if it's possible to define such a random map process. 
No Idea 
How the feature could be made. There will be multiple solutions.

The one that comes to mind, that I know how to do, is write a simple qc randomizer and write a list of maps into it. Then launch it from a console command.

You'd need to update it and recompile to add new maps, but that's trivial.

Check out - it has lots of tutorials, maybe you can adapt one.

To compile the qc I recommend fteqcc compiler, though I don't have the website to hand.

I would actually write the qc you need for you (it's pretty easy) but I have to limit my time at the computer and prefer time I do spend there to used working on my current project. 
Barnak, everyone understands what you're asking. They got it the first time. Everyone's just like, nope 
Thanks for the info.

Do you have a code file that could help me start the project ?

And what app to compile quake code on OS X ?

I'm in total blackness void here. 
Should I start a new thread for this ?

I've found this code, but I don't know what to do with it : 
using a mod to select a random map is kinda silly.
the reason for this is two-fold, a) you need to load the mod somehow (gamedir command? means it can't work with (other) mods). b) you need to load a map before you can run any qc.
so really you're not that better off than using an external tool to pick maps.

I doubt QuakeSpasm supports DP_QC_FS_SEARCH, and I've no idea if it supports FRIK_FILE. Hardcoding a maplist is easy enough (yay arrays), but not for a user who wants everything to be straightforward.

official fteqcc (svn) builds can be downloaded from here:
latest and breakiest and all that.

I can't support mac. all the things on cross compiling *to* mac all seem to say 'you will need: 1 mac', which completely defeats the point of cross compiling.
if anyone wants to compile one for me, give me a link and I can link to your site as you desire, but I can't maintain it myself. 
Hmmm, sorry to be a shit fly, but I really didn't understood an iota of what you have written.

And apparently, it's a pain in the arse to compile QC codes on OS X. The old Quake tools on OS 9 aren't supported anymore.
(from and other places) 
I know that szo has somehow set up a cross compilation toolchain for QuakeSpasm. He can do Mac builds on Linux, but I have no idea how he did it. 
New Features, QCC 
Generally everyone is busy with other things. So the best way to get these things included is write/port the code yourself and submit it to the sourceforge project page patches. Probably worthwhile to use the feature requests forum too.

Maybe we need a cross platform QC compiler ?
I forgot about it... HoT has a comprehensive set of tools in-tree, but we'd probably package any QCC separately from the Quakespasm engine. 
Cross Platform Coding 
Well, it does seem like a nice idea to have a QC compiler that runs on OSX (and command-line apps like that ought to be just a case of recompiling) but why don't we write it in the most cross-platform format: console scripts:

//create short alias commands for the maps we want to run
alias map01 "map e1m1"
alias map02 "map e2m2"
alias map03 "map e3m3"
alias map04 "map e4m4"
alias map05 "map dm5"
alias map06 "map dm6"

//create a looping sequence of aliases
//each one redefines rand_select to be one of the above commands
//each one also defines the rand_cycle to move to the next state
alias rand_cycle01 "alias rand_cycle rand_cycle02; alias rand_select map01"
alias rand_cycle02 "alias rand_cycle rand_cycle03; alias rand_select map02"
alias rand_cycle03 "alias rand_cycle rand_cycle04; alias rand_select map03"
alias rand_cycle04 "alias rand_cycle rand_cycle05; alias rand_select map04"
alias rand_cycle05 "alias rand_cycle rand_cycle06; alias rand_select map05"
alias rand_cycle06 "alias rand_cycle rand_cycle01; alias rand_select map06"

//run the first alias to intialise rand_cycle

//add a key to repeatedly hammer to simulate randomness
bind F7 rand_cycle

//bind the key that loads the next map
bind F8 "rand_select;rand_cycle"

Usage: press F7 a few dozen times to seed the "random" selection, then press F8 to select one of the maps. If you extend the list, take care to ensure that the rand_cycleXX aliases create a full loop, so edit 06 to point at 07 and ensure the final one points back at 01 instead.

My model was the file from:
This example has an extra layer using "wait" to make the randomness work better - in this one you hold down a key for a period of time to repeatedly cycle, then when you release it a selection is made. I tried to emulate this but in fitzquake it got stuck. Maybe other engines support a route to this...

An easier way to get the randomness without having to mash a key is to add the rand_cycle command to some other often used key, like the attack button:

bind mouse1 "+attack;rand_cycle"

Now the number of attacks you make on one map seeds the selection of the next, which feels pretty random. Eagle-eyed readers might have spotted that we did this trick with the F8 key already. This makes the F8 key cycles through the maps in order, which is handy to skip over repeats or maps you dislike. 
Cycle Command Is Broken 
As example: no matter how many times you enter "cycle r_wateralpha 0.3 0.6 1" command, it uses only 1st value. 
Speaking about wateralpha, I am somewhat surprised that no one seems to have implemented a per brush alpha. That in combination with worldspawn settings (for lava, slime, water and teleporters) that are taken as default if none are specified on a brush would make a lot of sense to me. 
There is such a thing: make a func_wall (or a func_anything) and set the "alpha" keyvalue.

Can't have alpha on worldspawn brushes, though. 
Fixed in svn 
Cool, didn't know that. So can a func_wall function as water as well? Or other liquids? 
You Can Give A Func_wall A Liquid Texture 
and it will do the warp animation, but it'll act like a regular solid - plays the axe hitting stone sound if you hit it, etc. The alpha key still works and lets you override r_wateralpha if you set it.

sometimes func_illusionary is used with a liquid texture for special effects, like to make swirling fog in a void pit, you stack layers of func_illusionary, with a low alpha and a liquid texture. 
I see. What I meant was more like have it so that you can set different alphas for different water in the same level. Like you might want to have some swampy water which is less or not transparent at all, and something that is more clear.

It would also be cool to be able to set a water fog amount. I am sure that can be faked somehow already perhaps. Not sure. 
alpha per brush requires a whole toolchain and bsp format change, probably. There is no concept of "brushes" in the bsp format, everything is converted to bsp leafs that contain polygons, and those polygons are not 1:1 with the original brush faces in the map file (some are split, others are merged.)

There is also no concept of brushes in quakec code, so per-entity alpha works much better with that part of the game as well. 
Could possibly do it... but is also a complete bastard to get working properly. 
You can try using a compiler that supports "*waterskip" "*lavaskip" "*slimeskip", and put a func_illusionary with alpha key on top of that. 
also, you can actually use any compiler that doesn't support skip, if you also use newskip.exe 
the compiler has this utility already build in..
Then you don´t even need newskip.exe. 
Does QS team have any release plan?
Gap between .9 and .10 is too long :( 
I was just playing the original 100 Brush compo pak and when I got to XeNoN's map (xnq1001)stuff broke a bit. Specifically there is a rune which should trigger a set of teleporters to teleport in a bunch of monster which are needed to open the exit. This did not happen.

Funny enough this map is even more broken in Darkplaces where the monsters which are supposed to teleport in start shooting you from within their cage, which is above the starting area. 
Hm, Weird 
Just gave it a try and was able to finish with no problem
-dl'ed from
-started qs and then "gamedir 100brush", "map xnq1001"
I was lazy and played on godmode, but two vores spawned in after I got the rune, and killing them opened the exit door.

I dunno what could have gone wrong; can you reproduce it? 
I'll try to do it later and make a demo or something. 
Hm, could not reproduce it. I tried a couple of times, but nada, worked fine now. 
I updated the doco to point to Eric's 'nightly' builds 
Experimental Random Map Loading... 
I made an interesting experiment today :

I renamed ALL my custom id1/maps to "map1", "map2", "map3", etc (I have about 150 top quality maps in there). Launching them randomly from the QS console is now extremely easy.

Since many (most) maps are ending on another map (which I don't have anymore anyway), I HexEdited the maps so they start another map from my collection.

Playing Quake1 is now totally OUT OF THIS WORLD ! It really feels like I'm lost in the Multiverse. 
WTF Is This, Czg !? 
open palm
insert face 
open ass
insert face 
open mind
insert appreciation 
John Plz Allow Emoji Everywhere 
You have to let us know which map map69 is. 
Rpgsp1 Surely 
Map69 is the "Castle Of The Bad Die".

And I'm still asking for a map which randomize the map loading from a maps list. This is a Must Have Feature. 
Onetruepurple And Nitin 
It is so scriptable!

1) Copy a random map to randommap.bsp.

2) Use whatever MacOS offers to monitor file access to see when the engine accesses the map (might need to look for "Open"). Apparently you would want "fswatch".

3) "map randommap"

4) Sleep for some moments

5) Copy another random map to randommap.bsp so if you do "map randommap" again, there already is a new one there. 
In Linux 
while true; do inotifywait --event open /home/me/games/quake/id1/maps/randommap.bsp && sleep 1 && file="$(ls -1 /home/me/games/quake/id1/maps/*.bsp | sort --random-sort | head -1)" && echo $file && ln --symbolic --force "${file}" /home/me/games/quake/id1/maps/randommap.bsp; done

This uses a symbolic link instead of copying the file every time. 
Hey This Is Fun! 
Map Randomizer In Qc For Barnak 
Open up your id1/maps folder...

Right click in empty space and choose on of the following: "Arrange icon's by" - size, date, alphabetically etc etc...

Close you eyes, NO peeking, this is important for it to work...

Raise your hand, forefinger pointed out, move it spiraling in towards the monitor...

Until it touches...

BAM, there's your random map generator ;)

You can restart at step one and choose a different option to keep it random too...

All done with "qc", short for quickly conceived!

Realize, eventually all dogs let go of the bone sooner or later. 
Meant Random Map Selector 
He already specified several times that it needs to work without leaving engine. And playing for my solution for a while I have to say, yeah, it absolutely does. 
Spirit, Correct Me If I'm Wrong But... 
Both of our methods are initiated before the engine is even started right? None of what you suggested works "in engine"? 
With "in engine" I meant that you can get a new map without leaving the engine/game. My script needs to be started before the engine but then it runs as long as you don't kill it. 
Gotcha ;) 
Can I run this in a terminal, and end by closing the terminal? 
exactly that, ctrl-c to stop. making it into a systemd service that launches on login would be easy too. I think the sleep is unnecessary (since the file was already opened and thus the link can be changed) but I am not entirely sure. 
Had To Install The "inotify-tools" But Worked Like A Charm Spirit :) 
You have to start a new level before the next "new" randommap.bsp symbolic link will work. Dropping to the console and "disconnect"'ing doesn't trigger it.

bind m "map randommap" worked fine for me in a some days old QS. 
All Of The Above Made Me Slightly More Happy 
Ah, of course, it needs an initial map. Sorry!

I made it into a script:

It's awesome to go through sm* maps. sm161 had some fantastic ones. 
Gamma Is Broken In Dev Builds 
I ran r976 and found that gamma adjustment doesnt work anymore.

System: Windows 8.1 Pro x64 / nVidia GTX 650 Ti card, 335.23 driver.

0.85.9 is working fine, but prints "vid_gamma_setgamma: failed on sdl_setgammaramp" error in the console when I change gamma value. 
Playing apsp1 (The Final Threat by than) I noticed that there is a kinda mangled lift right at the beginning.

It's the lift to which you get if you ride the lift you start on down and then just go straight ahead. There should be a pillar from the lift in the middle of that shaft (it's collision is there) but the lift seems offset to the right (from this view anyway).

Another thing I noticed is that impulse 12 does not work reliably. As in, in some maps it does, in some it does not. 
Pretty Sure That Lift 
is fucked in all engines, isn't it? 
impulse 12 is a mod thing, it was not in the original QuakeC sources so many mods don't come without it. The funtastic reQuiem engine has engine-side support for it in any mod!</spam> 
Apsp1 Has Same Prob On OS X 
I noticed the same problem as ptoing, on my Mac, with the latest QS.

I also noticed a similar prob on another map (don't rememer which one).

WTF !? There wasn't any problems with them before. 
I just checked the video of DaZ on the tubes of that map, and there it is fine. So it seems to be a newer thing. Having an option to force impulse 12 or maybe make it so that it is a different command weapon_prev or whatever, might be a good idea. 
Oh also, a small quibble I have with QS is that the console sometimes fucks off when you enter something right after you called it. Kinda weird. 
Gamma Again 
Tried same build on home PC - gamma working just fine.

System: Windows 8.1 x64 / nVidia GTX 770 card, 337.88 driver. 
the apsp1 platform bug is discussed here:

IIRC it's a map bug that only manifests with extended protocols like 666, and the cleanest solution is patching the map.

@AAS, thanks for the gamma bug report. Can you try this build?

I set USE_GAMMA_RAMPS to 1 in that build. In r976 we are calling a different SDL function to set gamma than in 0.85.9, the build above should use the same function as 0.85.9. 
I assume you use german layout? And the character is this one ^ (circumflex?) showing up in the console?
This has already been reported, Eric had a fix at hand.
Iirc SDL 2.0 should get rid of this? 
I use a UK layout (hate the German one). And there is no special character showing up in the console, no. Not that I noticed. It happens whatever key you press.

Also, making the textures stuff I was wondering, would it be hard to implement something where you made animating textures with more than 10 frames if you would use for example a - instead of the +, but make it so that it is totally an engine thing. So you got both textures in the bsp file, but you use the + ones, and the engine will use the - ones if they are there. I reckon you'd need to fiddle them into your wad using texmex or something similar. Would be cool though to be able to have longer animations. 
Impulse 12 
impulse 12 is a mod thing, it was not in the original QuakeC sources so many mods don't come without it. The funtastic reQuiem engine has engine-side support for it in any mod!</spam>

Impulse 12 is not a mod thing. It is part of stock quake, but was added into a later version (eg: not 1.0; the quake we all play is 1.6).
If a mod doesn't have impulse 12, it's either because it's old and was made before the final 1.6 patch or the mod author used an older progs source as a base. 
i think he means it's a "mod thing" as in a quakec-implemented feature, rather than an engine-implemented feature. 
Now gamma adjustment seems start to work on GTX 650, TY.
But it still prints error in the console. 
Oldschool Effects 
Would it be very hard to include an option that would mimic the old underwater effect where stuff is wavy? That would be neat, I always enjoyed that. 
Isnt That What The Waterwarp (or Is It Oldwater) Cvar Does? 
Feature Request: 
If "config.cfg" exists in "ID1" floder (or in Quoth folder if -quoth flag is set, or in ROGUE folder if -rogue flag is set etc.), and there is no "config.cfg" in current game folder (e.g. folder set with -game parameter), can QS use that existing cfg as a base for a new one instead of creating "default" one? 
Oldschool Effects 
DirectQ does the underwater warp. 
isn't that what already happens? At least for me, quake copies the cfg from my id1 folder into a mod folder the first time i run.
(well, it probably just leads the id1 config and then saves to the mod dir) 
Ugh... my bad. Should've launched Quake without mods at least once to create config.cfg in the ID1 folder... 
Who's The Head Honcho? 
Who can I get in touch with for a one on one discussion of a rather big problem with Quakespasm, and how it affects an upcoming map of mine, and possibly other maps? 
You can find mail addresses in the readme. 
CC Me Too If You Don't Mind 
Colormap.lmp Question 
I just noticed that Quakespasm (and I guess quite a few engines) seem to ignore the colormap.lmp completely. What if someone wanted to make a TC with a new colormap to have new (maybe more, maybe less) fullbrights for example? 
As stupid as it is but files inside pak files have precedence over files outside. Try making a new mod directory and putting the colormap there, that should work. 
FTE peeks at the colormap to see how many fullbright palette indexes there should be, although it only works if they're contiguous from the end of the palette.
the rest of the file is really only useful to software rendered engines, and even then its often regenerated weirdly for transparencies. 
That is not that case with the original Quake afaik. That's pretty weird. /me tries 
Tried, not working. Quakespasm does not seem to read colormap.lmp files. Works in Winquake, so the file is not corrupt or anything. 
Am I then correct that QS and the like have some hardcoded stuff or something so that the lighting gradiates like in the software renderer? If there is something like that would it not be possible to allow for values to be read into that algo from the colormap? 
Am I then correct that QS and the like have some hardcoded stuff or something so that the lighting gradiates like in the software renderer?

Yes. It's important to know that historically, GLQuake didn't support fullbrights at all, so support for them in pretty much all custom engines has been added after-the-fact. 
What I am wondering is if you could not do it via reading out the colormap.lmp is all. 
Yeah, Quakespasm/Fitzquake hardcode the palette indices 224-255 as fullbright.

GLQuake/Fitz/QS use the opengl fixed function pipeline to combine textures with the lightmaps to produce the final image. This predates modern programmable GPUs, all it allows is telling the GPU to multiply the texture color by the lightmap to produce the final color, so there's no way to make use of the colormap.lmp lookup table. Nowadays, I think you could write something with fragment shaders that uses colormap.lmp. Not sure if anyone has done that though. 
Could You 
Override the hard coded indices if a colormap.lmp is detected? 
Well, a colormap outside the one in id1/pak0.pak 
modifying Fitz/QS to read the number of fullbrights from the colormap.lmp (and not using it for anything else) is probably possible. I saw it discussed here: 
The standard quake colormap accomplishes 3 things:

1. force last 32 colors to be fullbright (but it could be different with a different colormap)

2. force the other colors to have 2x overbright lighting (but it could be different with a different colormap)

3. create a lookup table to find the correct palette index for the texture color + lighting value.

#1 and #2 are hard-coded into fitzquake based on the setup of the standard colormap. This means fitzquake assumes 2x overbrightening and the standard 32 fullbright colors.

#3 is irrelevant in a 32bpp renderer.

Of course there are all sorts of crazy effects you could do with a colormap, so no matter what assumptions the glquake-based engine makes, those assumptions could be wrong. For example, you could have colors that have an inverted lighting model (shadows would make them brighter) and you could have colors that change hue based on brightness (like orange highlights, blue shadows) And many other things. The only way to truly support those things is to write the equivalent of a pixel shader that uses the colormap as a lookup table. 
Then that would be the way to go, imo, just speaking as an artist here.

And I for one do not like to play with 32bpp because it makes stuff look washed out and bland. Keeping the original stepping of the colours used in the colormap makes things more contrasty as well as grittier and more surreal. It just is part of the feeling of Quake for me. With a pixel shader you could also have the added benefit of 32bit smoothness while still keeping the stepping of the colormap. So it't a win win I would say.

But I guess there would have to be some command for it that would deactivate the colormap, just to make sure, or of people want to use truecolour textures or something like that. 
New Builds (0.85.10-r980) 
New prerelease builds uploaded at




Linux users can checkout the svn and build for themselves.

Changes since the previous r958 test builds from Aug. 08 include:
FSAA support, fence textures support, brush model drawing speedup,
better cross-map demo playback support, and increased limits for
MAX_ENT_LEAFS (32), MAX_EFRAGS (4096) and MAX_CHANNELS (1024).
For more detailed list of changes see the READE file (or browse the
svn history.) 
Orl's test map is playable now :). Nice one.

Any likely/possible regressions with the new brush model code ? 
I tried the OS X version, and I don't see any FSAA option.
Where is it ? 
Nice, Thanks 
Though what bothers me a little is that the readmes are called README.* instead of quakespasm.* - with all the stuff in my Quake dir, I prefer it all easily recognizable (without having to rename the files with every new version I install). </Spirit> 

You shouldn't have to read a manual for a graphical option . It needs to be shown with any other graphical option in the interface.

This is nonsense ! 
I support negke's cause at least for "extract and go" packages. All files should have unique names.</honk> 
Lava And Teleport Alpha ? 
Is there any lava and teleport field alpha parameters now ? I don't see anything related to these, in the readme. 
If there were, they would be documented in the readme. 
Fantastic Job 
My hats off to you Quakespasm team. My map now runs at a constant 60 frames per second or higher, never dropping below that. It even runs well on my laptop with much weaker hardware. Great job guys! 
Thanks for putting up the builds szo.

Orl, glad I could help. :-) Your map looks wicked!

There are still a couple more optimizations I want to look at some time, namely using vertex arrays for world/bmodels and alias models.

Barnak, I tried to put fsaa in the menu but it requires a cascade of deeper changes in the engine that need a lot of care to get right. You can just set vid_fsaa in the console and it'll get written to your config.cfg, and used on all subsequent launches. 
Thanks for the info.

Now, what's up with a separate alpha for water, lava and teleporters ? 
Rome wasnt build in a day.

@szo, ericw, steven you rock! Thanks guys! 
Sndspeed Issue In QS-0.85.10-r980 Win X64 
- If you change 'sndspeed' in the console, the value is not saved in the config.cfg.

- If you manually add 'sndspeed' to the config.cfg (I was adding 'sndspeed "44100"'), the engine uses the new value, bit it disappears from the config.cfg after closing the engine. 
AFAIK sndspeed wasn't automatically saved in 0.85.9 either. config.cfg is just for things the engine saves itself, you should put that a custom sndspeed setting autoexec.cfg.

I know it's confusing. i don't know if it's documented anywhere other than the source code which cvars are saved in config.cfg or not!

Also just a note, the meaning of sndspeed was changed slightly in this release. QS now opens the OS audio device at 44100hz by default, and internally upsamples the sfx to 44100.

If you were setting sndspeed 44100 for better quality with replacement sounds, keep doing that and it will work as it was before.

If you were setting it to 44100 to hear the music at full quality, there's no need to do that any more, the music will be output at 44100Hz even if sndspeed is at the default of 11025. 
Speaking of which: section 3.1 in the Readme needs to be modified a bit now, and 6.1 could be clearer about how music is affected (or isn't). 
Good Catch, Will Update That 

(Especially the fence texture support) 
Expect To Be Seeing That In A Map 
Sometime soon :) 
Thanks Baker! 
I pretty much just nabbed it from Mark V :) 
No Locs, Timer Is Tiny 
Hi guys for multiplayer play, I have some issues.

1) There is no .loc support, which makes the engine unusable for DM :(
2) The timer in the bottom right is very small, there's no way to scale it other than to also make the HUD big. Can we have some sort of command to scale the timer? Thanks! 
C&P From 

Baker says:

Unfortunately there are 2 standards for loc files:

1. The Quakeworld way (ezQuake, FTEQW, ZQuake, DarkPlaces)
2. The ProQuake way (ProQuake, Qrack, DarkPlaces)

There are about 160 loc files for Quakeworld, about 120 for the "ProQuake way".

The ProQuake way is harder to make, but far more accurate about your actual location (a series of 3d "boxes" defines where you are), the Quakeworld way is easier to make (a series of points, closest point matches).

Personally, I'd opt for the Quakeworld way as a priority because it is easier to get the Quakeworld community to play a custom map (the NQ community is more set on long-time favorite maps).

draw your own conclusions.. 
how about supporting both? or are the file formats hard to distinguish when parsing them? 
I dont have a clue actually:)

Here´s the link to the forumthread: 
FTE does both, so its definitely possible.
different number of tokens per line or something.
although the box vs sphere thing does require special handling. 
on the other hand, you can't install two different dm1.loc files in the same directory, so players will have to choose just one.

second, if one format is supported mostly by netquake engines, and quakespasm is a netquake engine, does it make more sense to support that one format? You'll be playing with teammates who are also using a netquake engine and therefore the "proquake" style .loc files. 
Loc Differences 
ProQuake locs are boxes. Quakeworld locs are points.

Quakeworld locs often give a wrong location because they don't know "what room you are in".

For example, let's say you are outside DM3 in the pent area, but standing near the wall close to the rocket launcher area --- if you go by point, you are probably nearer the rocket launcher. But not in that "room".

DarkPlaces supports both formats, although in the past LordHavoc stated once that he had a preference for the ProQuake version because it was more accurate.

/Mark V supports ProQuake .locs 
For completeness: ProQuake locs link:

I imagine the Quakeworld .locs pretty much come with ezQuake. 
Is there actually any benefit in using the 64 bit version? 
Sorry For The Doublepost 
Is there a way to get around display glitches like these? Or is it just imprecision in the construction? 
Display Glitches 
ptoing, do these happen with gl_zfix set to 0 as well? 
Just checked, it was set to 1. Setting to 0 fixes this issue. Thanks :) 
Thanks for confirming that. gl_zfix activates a workaround for the z-fighting (flickering textures) seen in some of the original id1 maps. It can however cause (minor) glitches such as these, so while having it default to "1" may best for the id1 maps, this is probably not true for custom maps... I'll discuss with the others. 
Yeah, I think I never noticed any of those flickers in the original id maps. But I distinctly remember finding some secrets in custom maps when it was set to 1. 
Try going to the quad secret elevator in e1m1 with gl_zfix turned off for a nice example of z-fighting (look at the elevator while it's still "in the floor" and look around a little). 
Oh yeah, I noticed that in Fitzquake. I guess that does not have the zfix thing? or maybe it is not on by default. 
Other Issues With Multiplayer 

I have further issues with the QuakeSpasm OSX client and just cannot use it for multiplayer. I am now using GLProquake OSX which has sound issues but I'd rather have problems with sound than the sum of the issues I've outlined below with the QuakeSpasm client. For informational purposes, I'm on the latest Retina MacBook Pro and also Thunderbolt Display.

1) There is a great deal of negative acceleration at the bottom and top of the screen. This makes RJing impossible. If you bring your crosshair all the way down to your feet to make a rocket jump, your crosshair will spazz out and throw your aim all over the place. Without RJing, multiplayer is severely limited.

2) The timer is inaccurate. The timer doesn't start at 0:00 if someone starts a CRMOD match. It ticks up from wherever the map started. So essentially it's like not having a timer. If someone pauses the match, the timer also keeps ticking. The timer needs to be fixed for clan ring / match play.

3) The teamscores in the HUD are not added up. Therefore, there's no way of knowing how far up your team is in the game without manually stopping the game to do math. This is important because in a DM game, sometimes with 2 minutes barely up you want to hide. Generally speaking,all clients have had these teamscores added for a while, they should be there?

4) LOC support missing.

I really think if all of this were addressed that this would be the best OSX client but even the negative acceleration is too big of a problem to ignore. 
Thanks for the issue reports.

Does negative acceleration happen with ioquake3? Specifically their prebuilt binaries from (over 5 years old fwiw) use SDL1.2 like QS and the mouse handling code at first glance is basically identical to Quakespasm's.

Searching for "negative acceleration" a bit, the typical cause seems to be systems where the mouse cursor is centered in the window at the start of each frame, but if it moves fast enough to hit the edge of the window it just stops. If that's the cause of ours, there may be nothing we can do but see if they fixed it in SDL2 and bug the sdl devs about it.

Also if you could post a demo of what the spazz out when rocketjumping looks like, that would be sweet! 
Neg Acc 
Try playing with higher display resolution. If this helps, we are at least finding the cause of the problem.
And you know what? It is limited to the resolution:
for 320x200 it is [-160;159], for 800x600 it is [-400;399]
and so forth... So, if the mouse responsiveness (dpi) is high,
like logitech g5/g9, the game becomes unplayable,
unless you set hi-res, like 1600x1200+...
Bug appears when mouse cursor coords try to go over "screen limit" -
movement is just trimmed.
Being able to execute mods from within the engine is pretty cool. But I wondered if there is a way to also change the -hipnotic and -rogue switches from within the game, and perhaps also have another one to switch back to default id hud layout. 
Yeah, those could probably be cvars 
Mark V has a such a feature.

typing: "game warp -quoth" in console.
or "game metmon -quoth" etc. 
Add: a vanilla implementation is pretty easy to implement. In Mark V, I paired it up with the "game" command because the existence of "-hipnotic" or "-quoth" or "-roque" affects what pak files to load. 
Would be a great feature to have in QS as well :) 
The mark v implementation sounds like a good way to go 
Fitz 1.0. 
I've wondered when next FitzQuake will come out too. 
FTE auto-detects the available elements in the gfx.wad file, and decides which hud to use based upon that. thus -hipnotic and -rogue arguments don't affect the hud by themselves. 
Spike man, it would be AWESOME if you nominated a version of FTE for a stable release, documented all of its current magical powers, and put it up on a webpage for the world to see. 
Just tried to load a quoth map, and there it did not work. fteqw.exe is what I used, latest SVN trunk. Didn't load the proper HUD with the Plasma. 
Is there a way to get around display glitches like these?
Yes, i've seen these glows before.
How prevalent are they. Are there any other zfix associated anoms ? 
I think that is it. It's either get weird z-fighting when you get levels which have overlapping faces or get those little glitter pixels instead. Though it really should not be hard to make levels in such a way that there will not be z-fighting and I think most modern maps avoid this so gl_zfix can be 0. 
should be fixed in revision 4744

@Johnny Law
you want it on a web page? Oh the horror!

regarding anti-z-fighting hacks, I can't help but think maybe we should have some special flag in the map/worldspawn to disable it.
alternatively maybe just enable it for id maps where its a problem and expect everyone else to fix it properly.
MH was against it too, and it can't easily be done in gles either. Mappers depending upon it without realising it is a bad thing. 
Z-fighting "fixes" aren't consistent. On one video card everything will look great.

On another video, the same fix will show every secret door or make the problem worse.

The cure is worse than the disease.

External .ent files to touch up the id1 maps would be the right thing to do. All you have to do is move a few entities 2 pixels down or 2 pixels to the left and problem solved. 
Cheers Baker Man 
Anyone know where to find the relevant .ent files for id1 ? Rogue and Hipnotic affected ?? 
Well, Here's To Evil 
Not that I know of and I would imagine no such thing exists at the moment.

However, if you load up Mark V, go to the terrible z-fighting area on E1M1 with the Quad.

You will notice there is NONE! Yet Mark V isn't using any anti-zfighting in the rendering.

Because Mark V moves that brush down 2 pixels as an internal hack. You cannot visually tell anything changed (and I'm one to notice anything like that because I want it to look precisely right).

If you want to see something funny, start a maxplayers = 2 game on Mark V and connect with Quakespasm, making sure Quakespasm Z-fighting fixes off. Then go to E1M1 Quad. No z-fighting!

(Because what I did was the equivalent of using an .ent file, which takes effect server-side. I did the same for E1M2 exit doors.) 
Hi Baker 
I've got two questions regarding this:
1. Why two pixels? One seems sufficient in my test setup, but maybe that's hardware dependent?
2. How did you find out what entities to change? Which tools did you use? 
One More 
3. What is the "lip" line for in Mark V? Adding an "origin" alone seems to be enough in my tests so far. 
Mark V's tool_inspector, just type that in the console. Switch between weapon 1 thru 8 to see different entity information. One of them shows the server edict #, then "type edict 79" or edict 151 or whatever the edict # is, into the console

In Mark V, to export the world entities from map load, type "copy ents" in the console and the whole entities from the map are on the clipboard.

re: the 2 pixels

I can't recall exactly, but I did testing on a few different graphics cards. Changing the origin won't work, the lift will be too high or too low in the raised position.

re: "lip"

That in related to mapping and entity properties for func_plat/func_door:

func_door (almost the same as func_plat) 
Try this .ent file in Quakespasm

You see the E1M1 z-fighting go away without any rendering attempt to make it happen.

Unfortunately, E1M2 has 1 or 2 instances (exit door). E1M3 has at least one (box of rockets in "sewers". Probably several other instances.

And that's just id1 
Thanks for those links. With this info (and some testing) it turns out that the e1m1 case can be fixed by just adding a "lip" line (since the "door" starts in the open position).

Lip 8 is the default and hence shows z-fighting, lip 9 has the door start slightly above the ground, lip 7 has it start far enough underground to stop z-fighting (for me). Changing lip has no effect on the closed (raised) position of the door. (This can be verified by adding for instance a lip -1000 line, the door will then start so far underground that it will take several seconds to rise through the floor; it will still raise precisely to its normal position though.)

Which makes me wonder why you are including an origin change as well? It doesn't seem needed, and will in fact change (although just slightly) the level to which the door raises. 
Things like that shouldn't be fixed with internal hacks, in my view.

As for .ent fixes, here's a tip: in cases where a regular door would cause z-fighting in its open position, you can change the angle ever so slightly so that it moves diagonally 1-2 units behind the wall rather than on the same plane. That's a much better (albeit more complicated) solution than changing the door's origin. For a lift, lip should do, yes. 
Why is changing the angle better than changing the origin? Because that leaves the door in exactly the same position when closed? Or is there another reason? 
Yes, that's the reason. Imagine a secret door that's part of a wall - if it was indented from the get go, you would be able to spot it right away. Or maybe at times it's desirable to have a door align neatly to adjacent walls to avoid clipping. Slightly changing the way the door moves has the least impact on the original design. 
...doesn't use "lip", apparently. Does anyone know a nicer way to make them disappear far enough into the wall to avoid z-fighting than by setting "t_length" manually? 
Make them shrink along the axis of movement by a tiny tiny degree? 
Misc/homedir_0.patch is broken in current SVN.

patching file Quake/sys_sdl_unix.c
Hunk #2 succeeded at 31 with fuzz 1.
Hunk #3 succeeded at 152 (offset 4 lines).
patching file Quake/common.c
Hunk #2 FAILED at 1928.
Hunk #3 succeeded at 1937 (offset -7 lines).
Hunk #4 FAILED at 1965.
2 out of 4 hunks FAILED -- saving rejects to file Quake/common.c.rej
Negative Accel 
I am on 2560x resolution with the negative accel issue, so it's not resolution dependent for me. 
Omi, any improvement if you try this build that uses SDL2?:

I play QS mostly on a mac with retina display too, and don't notice any negative acceleration; e.g. I have no trouble rocketjumping, quick mouse movements feel fine, but I'm not a great player so I could be missing it, or else it's not happening on my setup but is on yours for some reason.

Also - do you get the problem in both windowed and fullscreen? 
Re: Z-fighting 
svdijk has been working on this... it looks like we're going to disable the z-fighting hack (gl_zfix cvar) that was applied by default to all brush models in previous QS versions, and which caused visual glitches like the one ptoing posted earlier, and instead ship replacement .ent files with quakespasm (maybe packaged in quakespasm.pak) for some of the id1 maps with the most egregious z-fighting, like e1m1. 
Honedir, Sdl2 
Misc/homedir_0.patch is broken in current SVN.

It applies ok (with fuzz) for me (rev 993).
Check your common.c with "svn diff common.c" ???

Thanks for inlining your SDL2 stuff eric. :) 
Hm, PEBKAC, works fine today.

Great idea with the .ent files, I think that is the best solution. 
Sorry ... it probably was busted.
I'll try to do some doco and patch updates tomorrow.

Re .ent files - Yeah , thanks Sander for that.

I'd never had a problem with gl_zfix, but obviously some people do. 
I think .ent files shouldn't be done to 'fix' this. I can't see it working on demos for example. It's pure shooting-fish-in-a-barrel.

Instead, I think a new format (.off?) should be created just to add polygonal offset origins or angles to map entities and this would only apply visually in the renderer, rather than server. Probably could start off the same as ent files, just parsed separately, disregarding other entity keys the renderer shouldn't care about. 
Pure shooting-fish-in-a-barrel? I think you are misunderstanding that analogy, unless you mean that using .ent files to do this is super trivial. And if that is the case, why wouldn't you do it that way. :P

A special format for doing this might be warranted though, but I will leave the coder folk to that. 
If i were fixing it, i would do it as narrowly targeted as possible to the actual problem:

1. do it all in the engine
2. do it on the client (it is only a rendering problem)
3. detect the specifc combination of map (name + CRC), model, and origin that causes the problem. (i.e. this would only take effect when the model is in the open state, if that is when the problem occurs.)
4. apply a specific offset to correct the problem. (add '0 0 -0.5' to the position for example)

The engine would have a table of such fixes, one for each known map that has this problem.

Those fixes would work in demos, they would work as a client in a MP game, they would not affect gameplay at all, and they would never have false positives against other maps that have the same filename, and they wouldn't prevent players from using their own .ent files for other purposes (like replacing all the monsters.) 
Yeah, That Does Sound Optimal 
and more targeted than the .ent files. maybe we could migrate to that at some point, using the data from the .ent files as a guide 
I think there may be cases where a secret door slides sideways first, and z-fights the entire time it's sliding. This is different from the e1m1 platform that only zfights in one position. So there may be cases where you need to apply the fix for all but the initial position of the entity. 
Re: Followup 
Yes, that applies to at least two of the most obvious examples, the exit doors in e1m2 and the bars before the exit doors in e2m7.

I agree with most of your points, especially since not all cases can be fixed with ent files, at least not without noticeable side effects. For instance in e1m3 one of the sliding plates in the floor in front of the wall that shoots the big spike causes z-fighting with the floor in the adjacent room when opened; since func_doors can't move down "a little" (their direction is either vertical or horizontal), I don't see how this could be fixed without changing eithers its origin (not wanted) or its class (also not wanted).

There's one point that you mentioned that I don't agree with though, the first one, to do it all in the engine. These are content errors, and fixes for them hence also belong content side, not engine side. Support for some kind of external "renderfix" files would be needed IMO.

Anyway, at least for the moment I think external ents suffice, since they improve two things compared to the last formal release: they avoid the glitches gl_zfix gave, and the move the fix to the content side. 
.png Screenshots 
.tga screenshots are cruel and unusual punishment to an average user.

First, they can't share them on the internet easily.

Second, to even *view* their own screenshots on Windows they will need a special graphics because nothing that comes with Windows supports .tga.

The next Mark V uses only .png for screenshots.

I happen to be using since it doesn't require .dll/.so dependencies. 
Another Thought 
You might also consider applying the current level of gamma to the screenshots so the screenshots actually look like what the user sees on the screen.

[If you aren't, I haven't checked in Quakespasm lately ...] 
Omi's Negative Acceleration 
Might be solved with

cl_minpitch "-70"
cl_maxpitch "79.49"

The pitch bounds in original Quake are -70 to 80. Some servers reject pitch angles out of this range and bound them to the -70 to 80 range.

[FitzQuake 0.85 rounds angles to the next integer, even *after* the pitch bounds checking. Then the angles are converted to bytes (protocol 15) or a short (protocol 666), which may adjust the angle even further in the conversion process. So the 79.49 is to prevent it from being rounded up to 80, which can get converted to 80.0024 which result in some negative acceleration.] 
There's one point that you mentioned that I don't agree with though, the first one, to do it all in the engine. These are content errors, and fixes for them hence also belong content side, not engine side. Support for some kind of external "renderfix" files would be needed IMO.

Yes, thanks. This is what I have been thinking during that whole discussion. Sometimes you engine coders creep me out with your suggestions for fixes. A problem in the progs or a map does not ever belong in the engine. These are hacks!
If a problem lies in one of the ID maps, then it should be fixed in the .map, recompiled and an unofficial patch made. When people complain about bugs in stock maps, the patch can then be pointed to that will work on all engines. 
The z-fighting in the original levels in some places (E2M3 is one example) is too severe to ever be "fixed" without making material alterations to the map.

There are many platform entities that occupy the same location as the world model.

The only "true" solution would be an advanced rendering engine that clipped entities the way WinQuake does.

No amount of .ent files or even recompiling maps is going to stop that z-fighting.

Case in point, you have a platform that extends out which is situated exactly where a world brush is: you can't move the platform down; you can't move the world model brush.

If you do, it won't look the same.

WinQuake clips those. 
I feel like replacement content to fix bugs is an extra burden on the user. Maybe if there was a common, easily accessible pak file with everything fix in it (that everyone agrees on) for people to install, it might not be that bad. Otherwise, it's all theoretical. These bugs could have been fixed with a replacement pak file 15 years ago when glquake came out, does that pak file exist? And how many of you (non-newbie, power users) have it installed?

The reason I am okay with engine hacks to fix stuff like this is that the content wasn't broken when it was released (it worked fine in the engine that shipped with the levels) and it's only more recent engines that can't render it as intended. Also because i like things to be easy for the user and these hacks are completely transparent to them (or at least, they should be.) 
Another Way Of Putting It 
Technology available back in 1996 inside the original DOS Quake.exe --- can solve all z-fighting. 
metslime nailed it. 
I had actually forgotten dosquake didn't z fight... so the problem is that the renderer is different between software and opengl. Is it then not possible to just give precedence to bmodels? That would serve to emulate the original behaviour.
I just started to raise my eyebrows at the talk of detecting the map being played, the entity with the problem... it's just crazy.
I mean, you couldn't even say 'I will displace all entities up 0.5 units', because sometimes there's z-fighting on the walls or the ceiling. 
Is there a solution where you could draw the world, then change the depth test bias, and then draw the entities? I have NO idea how the engine works so apologies if that is super basic and already dismissed ... 
Seems A Bit Pointless 
Patching content over fifteen years old. How far do you go? Fix the texture misalignments as well? That will mean new brushwork and expanding on the texture sets.

The best way would be to organise some sort of community project to rebuild all the maps, maybe adding some new content like enemies and so on.

Has anyone tried that before? 
the engine guys want fixes in the engine and the level guys want to rebuild the levels 
What Would Jesus Do? 
the engine guys want fixes for the levels in the engine and the level guys want to rebuild the levels 
The funny thing is, IMO anyway, Fitzquake's rendering has been the benchmark for a lot longer than software quake. So even if we had a perfect OpenGL clone of whatever winquake does, I would argue there's not much point.

The gl_zfix hack that was enabled by default in QS was pretty decent, besides showing outlines of secret doors sometimes, and one of the results was Scampie put Z-fighting in one of his jam maps because he didn't see it when testing in QS :-/ 
I'd also be fine with not fixing these bugs at all. Either way the solution (or absence of a solution) should not break newer content that was authored correctly. 
VBO Version Revision 
Intel ATI Mobility:

Arwop: Roman1 --> +2 fps (18 -->20)
id1: start --> (-10 fps?) (172-->162) ??? 
Thx For Trying That Baker 
Would you mind trying the roman1 demo again with "gl_fullbrights 0" and "r_drawentities 0"? That should cut off all drawing that's not using the vbo - I just use it on the lightmap + texture pass for world + brush models - and maybe show more clearly if there's any benefit to the vbo.

I'm not sure about why id1 start got slower. I am using unsigned int indices which is sometimes not recommended. 
I didn't do a timedemo, btw. On both maps, I just stood still at the start for about 20 seconds.

On roman1, doing gl_fullbrights 0 has no fps change (still 19-20 fps).

r_drawentities 0 it goes up to 53 fps. (Older Quakespasm, gets 46 fps with that ... so this is a +7 fps gain) 
Weapon Model Position 
Yo, I am just reposting this comment from my youtube here as I don't know the answer to his questions :

"quakespasm best quake engine that I know of overall, but it still has some glaring flaws in my opinion. The biggest issue for me is the way it handles- or rather doesn't handle- weapon models.

In quake, just like in doom, weapon models were placed in the center of the screen intentionally to be used as aiming sights. This mechanic, for me at least, is a crucial tenant of the classic doom and quake experience, and it goes completely out the window in quakespasm, as the engine doesn't compensate for the absence of a status bar and draws a microscopic weapon model at the bottom of the screen, about two miles from the center of the screen. The only way to compensate for this is to jack the field of view way up to say 130, which brings the weapon up to where it should be, but seems to stretch it vertically, and of course comes with all the issues that come with a grotesquely large field of view.

If anyone has an idea for fixing this within quakespasm, let me know.&#65279;" 
I posted a question about this general thing on I3D a while back; there's some discussion about the issue in the thread:

...but as far as solutions for a player to change things, I don't think so. 
They might like using Fitzquake Mark V with r_viewmodelhackpos = 1? 
A Workaround 
You can use the "scr_ofsx" console command to move the weapon model further into view of the player. By default it is set to 0. A positive value draws the weapon in closer, and a negative value pushes it out further.

I personally use -4 as my value, but give different numbers a try and see which one suits you best. 
I will post this to them, thanks. 
sometimes I feel it's too low on the screen when playing with the statusbar partially transparent. It could be nice to have an option where the gun position doesn't move down when you make the statusbar transparent.

Thx for the link Johnny. 
it might look ugly though. the ssg is particular doesn't have much more to its model besides what's already on the screen. 
New Builds (0.85.10-r1032) 
New prerelease builds uploaded at





Linux users can build from the source for themselves.

Changes since the previous r980 test builds from Aug. 29 include:

* SDL2 support. Disabled by default, 'make USE_SDL2=1' to enable it.

* Unix/Mac user directories support. Disabled by default,
'make DO_USERDIRS=1' to enable it.

* Revised/improved the 'game' command, i.e. on-the-fly mod changing.
It now accepts an optional second argument for mission packs or
quoth support i.e. -hipnotic, -rogue, or -quoth. For example, for
WarpSpasm: "game warp -quoth"

* Command line: "-game {quoth/hipnotic/rogue}" is now treated the
same as -quoth, -hipnotic, or -rogue.

* Console speed now resolution-independent.

* Disabled gl_zfix, which caused glitches and is undesirable for new
maps. Replacement .ent files to fix z-fighting for several id1 maps
added to quakespasm.pak.

* PF_VarString buffer bumped to 1024, avoids truncated centerprints
from the 'In The Shadows' mod.

* Support for OpenGL vertex buffer objects (VBO) for world and brush

* Dropped support for GL_SGIS_multitexture

For more detailed list of changes see the README file, or browse the
svn history. 
Nice Changes 
As far as 'game' goes. If you start a new mod without any of those 3 variables does it default to no vanilla quake? 
As far as 'game' goes. If you start a new mod without any of those 3 variables does it default to no vanilla quake?

'game xxx' loads the xxx mod on top of bare id1. 
Builds Ok And Runs, But 
gl_texturemode only seems to take effect on the viewmodel. What's up with that? 
gl_texturemode only seems to take effect on the viewmodel.

Can't reproduce here: the rubicon rumble pack mod ( has gl_texturemode as GL_NEAREST_MIPMAP_LINEAR by default, changing it to GL_LINEAR_MIPMAP_LINEAR "beautifies" things for me, and going back to its original restores the mod's original setting.

Never Seen That Before 
Which OS / GPU / gfx driver are you running? 
Found It 
It's anisotropy. The combination of GL_TEXTURE_MAX_ANISOTROPY_EXT with values greater than 1 and GL_NEAREST appears to have vendor-specific behaviour - in my case, GL_NEAREST is ignored.

Hapless users are unlikely to understand this, so perhaps you should consider some workaround. 
Uh, More Detail 
The problem appears for textures that are mipmapped (eg, not models), when gl_texture_anisotropy is greater than 1 and gl_texturemode is 1, 2 or 3.

I'm on Debian with an Intel 82G965 running the usual Intel driver. (A fallback - the fan on my real card stopped spinning, sigh.) 
Ah Thanks For The Info 
Makes sense I guess that anisotropy + no filtering is undefined, We can detect that case and print a warning at least 
gamma adjustment doesnt work (nothing happens at all when you change its value) in r1034 (x32 binary) on win 8.1 x65 nvidia gtx 560 @ 340.52 driver. 
VBO Version 
It's reasonably normal with lower polycounts to get the same, or even a slightly lower, framerate. What's important to realise is that VBOs (and batching) are an optimization for high polycounts. In general you want any optimization to have benefit in that area. Don't sweat the id1 maps; if you see an increase in the big maps then it's doing it's job.

I suggest a move to regular vertex arrays in system memory for MDLs. That will work with any GL 1.1 or better driver (so you don't even need to special-case it) and being able to take each MDL in a single draw call will be of significant benefit. Where you need to multipass you'll also get benefit as you'll only need to do the vertex setup once.

With MDLs and frame interpolation you can't really use VBOs unless you also have vertex shaders (or GL_ARB_vertex_blend which virtually no driver supports) but old-style vertex arrays will work nice.

Be careful that the current colour is undefined after using glColorPointer so you need an explicit glColor3f/4f call for the next immediate mode stuff you're drawing. 
Stack Overflow 
in telefragged, shortly after collecting the gold key, i experience a 'stack overflow.' what do i do?!?!

P4 3.4 GHz, 3 GB RAM, Nvidia GT240, vista, quake injector using the required quakespasm engine (quakespasm svn r980), console screenshot, if it works: 
Excessive happens at that time, so it is probably just memory overflow. How much ram have you got? 
that has nothing to do with ram, that's a QC stack overflow.
looks some trigger (trigger once/multiple/secret) triggering itself without any delay (presumably via other similar triggers).
essentually an infinite loop. 
New Builds (0.90.0-r1036) 
New prerelease builds uploaded at




macosx (SDL2 version):


Linux users can build from the source for themselves.

Changes since the previous r1032 test builds from Sep. 15 include:

* Revised VBO code.
* Version bumped to 0.90.0.

For more detailed list of changes see the README file, or browse the
svn history. 
Wrong Thread. 
command line parameters: -width 1280 -height 720 -bpp 32 -winmem 1024 -heapsize 655360
i'll try the 0.90-r1036 build of the engine.

thanks for the help and info. i meant to post this on the Rubicon Rumble Pack thread. should i repost this over there? 
i used noclip to go over the floor to the gold door without triggering the stairs to continue. 
Linux/Unix Homedir Support Should Be Documented Properly 
The Quakespasm.txt compilation instructions say you can enable home directory support on Linux with the homedir_0.patch. However, a recent change turned this into a Makefile option. The current way to enable the feature can be found here.

You should update Quakespasm.txt section 4.1 to include this information. It is in the Changes section already, but some people might read 4.1 first and wonder where the patch file has gone. 
Thanks. Updated documents as of r1037: 
That's Weird 
I must have done something bad in the qc, but never saw the issue myself or from testers. I did see a similar one, but it was just a broken relay as spike says. 
It's All Good 
i'm just a grateful fan of the masters who keep quake alive. thank you. 
Is This A Known Issue? 
I noticed a cosmetic visual glitch while playing the Rubicon Rumble Pack's map by Hrimfaxi. In a certain location a lift is not visible from outside a room.

If you are careful, you can catch it a couple of seconds after the timestamp into the VOD by Daz. The lift support pillar is invisible for a small while when he first runs up the steps toward the lift room.

I have a save game at this location and a short demo that showcases the glitch. Before packing them up and submitting a bug report, I thought to ask whether this is already a known issue. Should I upload more details for people to look over carefully?

It could be a vis problem instead of an engine issue. It doesn't have any effect on gameplay. The room just looks strange if you happen to backtrack and notice it. 
Just Downloaded The Latest Build 
and was very disappointed to find that it no longer works with my way of launching a mod.

I place my mod files in C:\Quake\Addon\RPP (using Rubicon Rumble Pack as an example), and launch it via a commandline like:
Quakespasm.exe -game addon/rpp

It has worked well for me, as this keeps C:\quake folder tidy without too many mod folders to clutter it.

But it seems that since a few versions back, Quakespasm has introduced some mechanism to prevent using a path as an command line parameter.

Can any one revert its behavior back? Thanks.

Also, is it possible to introduce the capability of using multiple "-game" parameters? In that way, I may even place such folders as quoth into C:\quake\addon, reducing the clutter further. 
Re: Is This A Known Issue? 
I confirm the visual glitch. I noticed before that sometimes, a part could be invisible, then be rendered when the player is close enough.

I firstly noticed this rendering problem on a Cecerello map (jam2). 
Thanks for the report.. I can reproduce it. It's the MAX_ENT_LEAFS limit. I just put in a fix to quakespasm as discussed in this i3d thread: 
Does the Mac version have multisample? If so, how do I enable it? 
Does the Mac version have multisample? If so, how do I enable it?

-fsaa x (x == 0, 2, 4, 8) 
I had tried that. It doesn't work :(

2011 Macbook Pro running Mavericks - ATI Radeon 6490M

I have GL_ARB_multisample in the list of extensions available. 
I had tried that. It doesn't work :(
2011 Macbook Pro running Mavericks - ATI Radeon 6490M
I have GL_ARB_multisample in the list of extensions available.

Might be an SDL issue. Does the SDL2 version behave the same for you?
(See the latest builds at;O=D
I was using the SDL 2 build, 1068. 
I was using the SDL 2 build, 1068.

The latest is 1071, but it won't make a difference wrt FSAA.

FWIW, my situation is similar, both with SDL1.2 and SDL2: It reports that the multisample window creation succeeded but the jaggies are there, so no fsaa for me either.

Eric? Kristian? 
-fsaa works on both SDL and SDL2 builds work on both of my macs (2009 macbook w/ nvidia 9400m, 2012 retina MBP w/ nvidia 650gt).

Try with "-bpp 32" - according to this post, "FSAA only works with a 24 Bit depth buffer on ATI cards"

What does the "video mode (...) initialized" line in the console look like? 
Adding -bpp 32 didn't work ("-bpp 32 -fsaa 8"). Still have the jaggies. I use E1M1 as the test map.

I don't have a "video mode" line in the console when I scroll up. 
Ok, thanks for trying that.

Hm, really no "video mode" line? the top of the console should look like:

UDP Initialized
Exe: 21:43:21 Sep 28 2014
250.0 megabyte heap
Video mode 1920x1080x32 (24-bit z-buffer, 0x FSAA) initialized
FOUND: ARB_vertex_buffer_object
FOUND: ARB_multitexture

It should also print it if you do vid_restart. I'm just wondering what the "(24-bit z-buffer, 0x FSAA)" part is for you. I guess we'll have to put in more debugging logging, though it seems like an sdl bug atm. 
It doesn't print the 24 buffer 0x FSAA.

Just "Video mode 1440x900x32 initialized" 
That must be an old version of QS without FSAA or 24-bit depth-buffer support, then. Try szo's r1071 build from here? 
It works now. 
Settings For 144hz Monitor? 
I am unsure how to setup QuakeSpasm (or any Quake engine I guess) to run on a 144hz monitor.

Currently I am using vsync off with a host_maxfps of 144. I can't see any setting in Quakespasm to set a refresh rate of 144hz but it appears the monitor defaults to that already. Negke mentioned that changing host_maxfps might do weird things to the Quake physics so I'm wondering if there is another setting I need to change to set the max fps to 144 to get the benefit of the screen and no image tearing or input lag from vsync on. 
What monitor if I might ask? I've been wanting to get one of those 144hz 'lightboost' monitors. 
Good Question 
AFAIK the only controls you have in Quakespasm are host_maxfps, and vsync on/off. And negke is right, changing host_maxfps from 72 is probably a bad idea, physics goes nuts (you bounce on lifts, for one). So without messing up physics, currently you're stuck at 72fps.

There is some stuff on inside3d about doing framerate independent physics, IIRC, MH implemented it in RMQEngine and maybe DirectQ. So maybe we could implement that in a future QS release.

How does the default host_maxfps 72 look, with vsync on and off? 
vid_refreshrate doesn't exist anymore? Is it because SDL doesn't support it? 
There's no vid_refreshrate in QS, it looks like SDL1 didn't support specifying a refresh rate.

SDL2 does support asking for a specific refresh rate, so we could probably add it back in.

I'm not sure what the current behaviour is actually, suppose your desktop resolution is 1920x1080 @ 144Hz, and you launch QS in fullscreen mode at 1920x1080. I'd assume SDL would use the desktop refresh rate and not bother changing it to 60Hz or something.

Maybe you can check that Daz, if there's an info button on your monitor that shows the current refresh rate in the on-screen-display? 
Jumping Up Stairs? 
Was that not an original quake physics behaviour? Why cant i easily jump up stairs like in darkplaces or quake 2/3. It would be very helpful as an option at-least. 
Spiney : I am very happy with it!

ericw : The monitor stays in 144hz mode with vsync on/off with host_maxfps 72. There is a very noticeable jump in smoothness when you set host_maxfps to 144 which is why I wanted to ask about this :)

Thanks for the info! 
72 Fps 
Quake's physics and QuakeC expect 72 fps as a server, and single player is both client and server.

Jerky lifts, killer elevators, ... 
More Bugs 
There is a lot of lag in big/complex maps
like in scourge of armagon & Airquake

Some textures can be seen through at far distances like in e1m1

Moving models and those with an attached model are very jittery when moving (the tanks in Airquake) 
Which Exact Build Are You Using? 
Can you reproduce with the latest one from ? Try a clear config (delete/move your id1/config.cfg).

Scourge of armagon being laggy suggests software rendering, what are the first 3 lines of output from entering "gl_info" in the console?

Can you post a screenshot of the seethrough textures in e1m1? 
jumping up stairs is a darkplaces change. 
^ and one that doesn't come without its own knockon effects, like increasing the effective jump height to 64 units from 48. 
Zerstörer Cutscenes Camera Weirdness 
In light of the map jam 3 theme, I decided to play Zerstörer using a recent svn version of Quakespasm. I also tried it with the version that you can install from Ubuntu package manager. I downloaded the Zerstörer package from Quaddicted. (I had to rename the file names to lower case.)

I found out that the cutscenes didn't work quite as intended with either version of QS.

The first cutscene (with the pit trap) had very noticeably jumpy camera movements at some sections. The end cutscene had the camera zoom off to the void before the conclusion and show mostly black.

There is a play-through video on YT for the maps you can watch for comparison (I think it's with Darkplaces), but I think it's quite obvious without them if you get similar results. Please try to replicate, or suggest config settings that might help (if any).

The maps with these two cutscenes are episode 2 and the end map. 
RE: Zerstörer 
If you are on windows, can you compare against fitzquake-0.85 so that we can understand the source of the issues, fitz or us. 
Speaking From Memory 
The ending cutscene is a Fitz problem definitely. 
Afaik reQuiem has some fixes for that builtin and also it smoothes demo gameplay. jdhack was pretty proud of that. 
The camera jerks about when rotating, its a limitation of something in the engine - can't remember what.

Supa solved it in RMQ. 
I thought it had to do with the networking or something? Coarse values in rotations for faster transfers. 
The cutscenes use a bunch of svc_setangle messages which are controlled by setting ent->v.fixangle (sorry, I don't know the QC equivalent to this). It would be possible to lerp between consecutive svc_setangles engine-side, but there are probably edge cases (aren't there always) that need to be worked out.

Summary is that for zer cutscenes it is a combination of coarseness and widely-spaced (via nextthink) messages. 
Sends a byte angle (256 values representing 360 degrees), so using that to continually reposition the angles is going to be jerky.

[And can't be interpolated client-side because the 'resolution' of byte angles leads to inconsistent rouunding.].

Looks like jdhack has the client read it directly from the server-side camera entity in single player. 
We had daisy-changing and interpolation between multiple camera positions at once on all three axis in both rotation and position - it was pretty fucking sweet :D 
In RMQ engine, it looks like you have it reading/writing float with the RMQ protocol.

jdhack has a lot of code detecting the Zerstorer cut-scene.

I'm hoping that code isn't necessary and just doing svc_setangle as either a short (2 bytes) or a float angle would fix this kind of thing.

The choppy angles in the cutscenes in, say, Zerstorer are annoying. 
The texture bug is fixed in the latest version
Also the lag has been reduced but is still noticeable sometimes

A suggestion, allow quakespasm to read from the the game folders, not only the .pak files 
The camera is messed up in the Monster Match mod 
Svdijk, Szo 
I tested Fitz-0.85 with Wine on Linux. It has the same behaviour, as far as I can tell without a careful side-by-side comparison. The zerend fix pak corrected the end map camera placement.

Rewatching the Youtube clip, I now see it stutters too when the camera is rotating. I think I perceive it as much less annoying because the YT video has a lower resolution and a slower framerate.

Thanks for the responses, everyone! Things work well enough with the patch. It would of course be nice to have non-stuttering rotating cameras in modern Quake source ports, but it's not a feature I really need at the moment.

If I do find unexpected engine differences with a more careful comparison, I'll post about them later. For now, I assume it was resolution, window size and FPS that made the rotational stutter so much more striking in the engine. 
Svc_setangle As Short Or Float 
Right now I don't think this is going to fix anything.

The real problem is that you're relying on how often QC updates the angles. If it thinks at 10fps then the angles are only going to update 10 times per second so it's going to be jerky no matter what precision you send the angle as.

The more robust solution seems to be to detect if a Zer cutscene is playing and use the cls.demoplayback angle interpolation code in CL_RelinkEntities.

At least in this case the QC isn't doing a bunch of PF_WriteChar/PF_WriteAngle calls, but that's also something you need to be careful of. 
checking the zer progs, seems like camera updates are 100fps (time + 0.01).
This is just the low res angles for the camera. 
The irony being that the lower the packetrate used, the smoother the interpolation will be, as the network inprecision is hidden behind larger deltas.
with vanilla quake, with no interpolation, you wanted to spam as fast as you can to try to hit every notch to get it as smooth as possible that way. interpolation won't make that any worse, but you'll see it juddering still as the difference between each frame is non-linear due to rounding. shorts will help counter high packet rates.

my general recommendation would be to update angles exactly once per PlayerPostThink. This allows the client to properly detect when there's a camera active by the fact that every single update contains an angle change. The down side is that this requires the update be sent as unreliable packets instead of reliable ones so that they're kept in sync with entity snapshots over the internet where reliables cannot be acked near-instantly.
Anything else will be jerky in some situation. And yes... needs shorts or low snapshot rates. 
is cutscene smoothness an issue over a network though? 
Cutscenes wouldn't be affected.

Zerstorer happens to be particularly uncoopable in a way that is more than having extra coop spawn points (I recall be pretty disappointed but can't recall the reason why it is uncoopable).

[Nehahra has at least one cutscene but is coopable (although if I recall a couple of rare maps failed to have multiple spawnpoints), but I don't recall anything about the cutscenes in coop (i.e. did they happen or not).

I know there are a couple of more single player releases with cut-scenes, but I can't their names and whether or not they are coop friendly.] 
Config File Organization Tips Requested 
How do people organize their config files for Quakespasm and multiple game directories? I mean the dirs that are selected with the -game option, of course.

I understand that I should put the bindings and options I want into autoexec.cfg files and it is probably helpful to delete the engine-created config.cfg files after modifying the autoexec files. However, what exactly happens if there are several config files that might apply for a given game setting? In what order are they processed?

What config files should I backup/copy, so I can reproduce my settings on another Quakespasm installation? I don't necessarily want to backup my whole .quakespasm subdir, because I don't want to keep all the saves, screenshots and whatnot.

Basically, I'm asking that if someone has worked out a good practice to follow, could they be kind & share the details. I'm asking here because QS is now my engine of choice for SP Quake. 
Preach has a great explanation of how the different config files relate:

autoexec.cfg runs after config.cfg. You can put an autoexec.cfg in id1 and it'll get run on all mods (as long as the mod doesn't have its own autoexec.cfg), so putting all of your custom settings in id1/autoexec.cfg and backing that up is probably the way to go.

I'm pretty lazy and only change a couple settings from their defaults - always run, r_oldwater, statusbar size - so I don't bother with an autoexec.cfg. 
Thanks Ericw 
Thanks for the link. I also found this useful guide with a Google search.

Thought for the day: If I ever get confused which config files Quake is actually execing, I can put a lines like echo "this is from the foo directory" into them and see at the startup what is prints into the console. That'll help clear any confusion, though I think I got how it works already with the help of these links. 
When Quake starts up --- and this is in your console output:

execing quake.rc // This is in a pak file
execing default.cfg // This is in a pak file
execing config.cfg // This is YOURS

couldn't exec autoexec.cfg // This is YOURS

This always prints to the console so you don't need to put an echo in there.

If you are putting your personal settings in autoexec.cfg, that is the only file you need. 
I've run into too many mods that contain an autoexec.cfg, so now I just always launch with a command line that will explicitly +exec a file that has the stuff I'd normally put in autoexec. 
Wrongly Cfgured 
If it's any comfort, the post on how not to do that is one of the most read on my site, so it may happen less in future... 
I read it, agreed with the logic and then went and broke all the rules in a fit of malaise.

I didn't force a resolution afaik though. 
I might have asked this before but cannot remember where. Do any of the modern engines support Nehahra or are they too man mod specific hacks in that for that to be possible? 
is that a fitz derivative out of interest? 
Joequake mostly from what I know. 
I think I found the reason why gamma is not working for me in recent builds.

I have 3 displays connected to 2 videocards (nvidia + intel).
When only one of the displays enabled (whether it connected to intel or nvidia) /gamma starts working.

But it doesn't work with 2 or more displays enabled (and even connected to the same card).

Can you guys nail this bug, please?
Asking because despite the fact that 0.85.9 spams to the console it actually changes gamma with all 3 displays enabled. 
Nehahra Compatibility 
darkplaces is fully compatible with nehahra. i tested it accidentally just a couple of days ago and everything worked fine. new monsters, weapons, powerups and cutscenes.. it's all there. 
Could you give the quakespasm-sdl2.exe a try from here? 
Directq v 1.88 patch 1 also supports Nehehra 
The Requiem menu is hard to use with the backspace key, is there a new version with the traditional menu? 
just rebind keys as you like in the options. the next release will use esc for both Back and Close 
This build do it right - changes gamma only on the display with app (windowed or fullscreen) and restores original value on quit.

Also, there is one glitch - if you change gamma then move window to another display, change it again to another value and then close app, then display's gamma will not be restored to original values, i.e. a reboot required to restore the gamma.

Restarting QS 0.9 does not reset it, BUT 0.85.9 does.

So, you could use some bits from gamma init logic from 0.85 in 0.9, I guess :) 
Quakespasm Bugs Etc 
*qs still lags in big, complex maps/mods. adding "-zone 65536" "-heapsize 92000" "-surfcachesize 320000" to the commandline doesn't fix the problem

*cannot return into the game after alt-tab out to desktop from the menu (no map loaded)

*Use the DirectQ style of having only the muzzleflash have no interpolation; while all the objects of the gun/monster are interpolated

*Read files directly from the game folder, so user can drag & drop models/sounds etc

also, how can i play a music track from the console? "play" looks for wav files in the sound folder (not music) and "cd" looks for a physical disk in the drive

lastly can i restore the old quake menu background? 
remove the visible console bar going up when the map transitions to a cutscene

btw am using ver 0.85.1 
my mistake ver 90.0 
*qs still lags in big, complex maps/mods. adding "-zone 65536" "-heapsize 92000" "-surfcachesize 320000" to the commandline doesn't fix the problem
what are your pc specs? you were saying before that armagon lags - how low of an fps do you get (scr_showfps 1)? what are the first 3 lines of output from running "gl_info" in the console? (on windows, you should be able to copy and paste it from stdout.txt) Make sure gfx grivers are installed... what FPS do you get on the same maps in DirectQ?

remove the visible console bar going up when the map transitions to a cutscene
as a workaround you can make the console speed fast, e.g. set scr_conspeed to 10000

lastly can i restore the old quake menu background?
launch with -fitz or delete quakespasm.pak

also, how can i play a music track from the console?
"music track04" should work

*cannot return into the game after alt-tab out to desktop from the menu (no map loaded)
weird, i'll see if I can reproduce that 
Another Example Of A Disappearing Object 
I found another case of a moving object disappearing when viewed from a certain place. I'm posting a description and a screenshot in case the devs have a use for another test case. If this is already well-covered ground, just ignore my msg.

This happens when walking through the silver key door in e1m2quoth. I'm using Quoth version 2_2. I have not yet upgraded my Quakespasm to the latest SVN version, so I don't know if the latest changes affect this. (This is the second time I spot one of these minor glitches, so it's not like they bother me.)

In the pictures, the missing object is in front of the button near the center of the viewport. It's a moving mechanism that activates the button, and you have to first trigger it with a floor button for it to move into this position. 
That's Fixed In The Upcoming Release 
thanks for the note though. 
Big Maps Performance 
The most useful thing with big maps was moving MDLs over to vertex buffers too. When you think about it, this makes sense: in any big scene there are going to be a lot of MDLs visible and the stock FitzQuake code is particularly bad for these (and made worse because it does a lot of multipassing).

Quoth maps that use the long torch model heavily make things even worse because there is a lot of insane and intricate detail on that model (which you don't even see 99% of the time) leading to a stupidly high polycount.

This normally needs shaders to be able to handle frame interpolation with vertex buffers, but for QuakeSpasm an intermediate step can be done by using client-side vertex arrays. That will also work on any OpenGL 1.1 or better hardware, which pretty much means everything.

The advantages are being able to take each MDL in a single draw call, and being able to calculate the frame once only then reuse that for each pass. Without VBOs you're still streaming a lot of vertex data to the GPU, but it still adds up to a significant CPU saving. 
Quakespasm 0.90.0 Released 
Version 0.90.0 of QuakeSpasm is finally released.

Changes since the previous version:

Two Versions For OS X ? 
What's the diffirence between the "universal" and the SDL2 version for OS X ?

What is SDL2 anyway ? 
hey ericw

8gb ram

in quakespasm i get ~27fps
on the same map in directq,
I get a constant 60fps (vsync on),
constant 72fps vsync off

*Use the DirectQ style of having only the muzzleflash with no interpolation; while all the objects of the gun/monster are interpolated

>>to clarify, I mean in directq, all the gun models' animation are completely interpolated; only the muzzleflash object is not.
so it would make automatic weapons (supernailgun esp) look better when shooting.
Also it would make monsters' attack animations appear smooth instead of choppy

*Read files directly from the game folder, so user can drag & drop models/sounds etc
>>Will this be a feature in the next version?

can ambient sounds be made to always loop even if do not contain a repeat node? that you MH lol? please update directq 
Re: Two Versions For OS X 
Quakespasm is built against the SDL framework (don't ask if you don't already know what that is.) The SDL2 version for OSX is basically the same, except that it is built against SDL2 framework instead of SDL 1.2. 
The "universal" one uses SDL1.2 and will run on powerpc / OS X 10.4. The SDL2 one requires OS X 10.5 and an x86/x86_64 cpu.

SDL2 is just the latest version of the library quakespasm uses that handles things like mouse / keyboard input, switching video modes, etc..

There shouldn't be much difference but you might as well use the SDL2 one. 
@ Ranger 
Ok, cool. which map is that 27 fps on btw? Do you mind posting the first couple lines of gl_info output from Quakespasm? Oh, check that r_novis is set to 0. QS archives that which can be annoying if you leave it on by accident. Might be worth trying a fresh game directory, just extract the engine, id1/pak0+1.pak, and the mod / map in question with no cfgs carried over.

can ambient sounds be made to always loop even if do not contain a repeat node?
*Read files directly from the game folder, so user can drag & drop models/sounds etc
I can see these two would be convenient for modding, but would be incompatible with other engines so I'm not sure.

re: interpolation, it could be nice to have DirectQ's gun lerping as an option. we haven't touched the interpolation code from fitzquake so I'm not sure how much work it would be. 
DirectQ's Muzzleflash Interpolation 
I'm not too certain I'd recommend it. The main problem is that it makes a guess about which polygons belong to the flash and which belong to the gun: if the back-to-front distance from frame 0 to frame 1 is above a certain amount (don't remember what) it assumes a flash (and tags those polys for all frames as flash polys).

On the one hand this idea has heritage (of sorts) in the "if delta is large assume a teleport and don't lerp" code in CL_RelinkEntities. On the other hand it's easy to imagine it not being in accordance with a content author's wishes (although in practice everything I tested it with was fine so it's something that could happen in future). One potential breaking problem is gun models that don't flash in frame 1, of course (that on it's own is enough to recommend avoiding the code).

It does absolutely nothing to deal with player and grunt model flashes. 
For the next release, I'm thinking of going straight to having all mdl data in a static VBO and using a glsl vertex shader (vanilla GL2.0, #version 110) to do lerping and lighting, and fall back to the old Fitz code if glsl isn't available. I have this running and it was pretty straightforward, borrowing the vbo setup code from rmqengine (thanks!).

I got a nice lighting setup that produces identical results as the Fitz code; using the formula you posted here to reproduce the anorm_dots table without having to pass the table into the shader - I calculate the shadevector in C, and just do the dot product with each vertex normal in the shader.

code is here if anyone's interested, needs some tidying and fixing lazy memory management in places.. 
Since you're working on MDLs, and if you're interested, here's a better way of evaluating mins and maxs: (this just reverses the calculation from modelgen.c)

And here you can recalculate normals (again, based on code from modelgen.c):

The anorms table is just an icosahedron subdivided twice so that can also be calculated in code if you like. 
will check those out! 
How can I copy the text from gl_info to a file?
Not sure if this helps but here is the stdout.txt

Command line: C:\id\QUAKE\quakespasm.exe -sndspeed 44100 -heapsize 92000 -surfcachesize 320000 +crosshair 0 -zone 65536 -game aq
Found SDL version 1.2.15
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.90.0 (c) Ozkan Sezer, Stevenaaus
Playing registered version.
Console initialized.
UDP Initialized
WIPX_OpenSocket: Address family not supported by protocol family
WIPX_Init: Unable to open control socket, IPX disabled
Exe: 14:28:31 Sep 29 2014
89.8 megabyte heap
Video mode 1600x900x32 (24-bit z-buffer, 0x FSAA) initialized
FOUND: ARB_vertex_buffer_object
FOUND: ARB_multitexture
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
Warning: vertical sync not supported (SDL_GL_GetAttribute failed)
FOUND: EXT_texture_filter_anisotropic
FOUND: GL_ARB_texture_non_power_of_two
Intel Display Adapter detected, enabling gl_clear

Sound Initialization
SDL audio spec : 44100 Hz, 1024 samples, 2 channels
SDL audio driver: dsound, 65536 bytes buffer
Audio: 16 bit, stereo, 44100 Hz
SDL detected 0 CD-ROM drives

========= Quake Initialized =========

execing quake.rc
execing default.cfg
execing config.cfg
execing aqalias.cfg
Unknown command "r_maxsurfs"
Unknown command "r_maxedges"
execing autoexec.cfg
Unknown command "#bind"
execing airsay.rc
Airsay.rc v0.9 (21.10.97)
Radio communications script for AirQuake
By FM1_Echo and FM1_Bravo
Based on SayTeam.rc v1.3 by John Laessig
3 demo(s) in loop
GL_RENDERER: Intel(R) HD Graphics 4000
GL_VERSION: 4.0.0 - Build
GL_EXT_Shutting down SDL sound 
can ambient sounds be made to always loop even if do not contain a repeat node?
*Read files directly from the game folder, so user can drag & drop models/sounds etc
I can see these two would be convenient for modding, but would be incompatible with other engines so I'm not sure.

Actually there are a few engines that also read from the folders: directq and i think qrack

the ambient sound looping would also be really useful

when "R_novis 1":
models, doors and sprites are not visible when looking into the water,
and while submerged looking out

r_telealpha, r_lavaalpha, r_slimealpha;
those commands don't exist ; r_wateralpha affects all fluids 
i think the ambient sound looping feature is bad because it would encourage the creation of less compatible content for no good reason.

Also, it wouldn't even solve the problem fully because looping is needed for more than just ambients.

How about a simple command-line tool to convert any wave file to looping? This would help modders just as much and the results would be compatible with all engines. 
You can do looping with which is freeware! 
R_novis 1 
r_novis 1 turns off vis testing client side which only affects the world model and static entities (torches, func_illusionary, ..)

Server side, the server is still checking to see if an entity is in a visibility leaf.

DirectQ has sv_novis 1 which turns off server-side visibility checking against entities (sprites, doors, monsters).

sv_novis is probably on in your DirectQ. 
fair enough lol 
ranger, the gl_info output looks ok, only thing i can suggest is try with a clean config if you haven't already. i've tested QS on the hd 4000 i think (recent-ish intel graphics, anyway) and IIRC it can handle even the largest releases like the rubicon pack decently. 
I Got This Error 
"gamedir should be a single directory name, not a path"

How to make the engine accept path (like addon/czg07) as valid argument for gamedir again? 
deleting the config did nothing

but removing the heapsize surfcachesize zone
args from the CL has removed the lag 
Hey Baker, are you interested in refreshing the QS build in
Well that's service! 
*sometimes the player gets stuck/stopped going down ramps/slopes

*sometimes the mouse randomly goes crazy and makes the camera spin wildly

*When loading maps digs05, digs06

the following appear in the console:

The anomaly
Using protocol 666
Couldn't find a cdrip for track 0
player entered the game
]map digs06
Client player removed
Warning: 40068 faces exceeds standard limit of 32767.
Warning: 48772 marksurfaces exceeds standard limit of 32767.
Warning: 36832 clipnodes exceeds standard limit of 32767.
Warning: 9667 visleafs exceeds standard limit of 8192.
Warning: 9394 byte signon buffer exceeds standard limit of 7998.


The Anomaly 2: Water
Using protocol 666
Warning: 370 models exceeds standard limit of 256.
Warning: 69 lightmaps exceeds standard limit of 64.
Couldn't find a cdrip for track 0
player entered the game
Warning: 913 edicts exceeds standard limit of 600.

*There is a lot of Z-fighting visible on maps 
*sometimes the player gets stuck/stopped going down ramps/slopes

Do you have host_maxfps above 72?

Frames per second above 72 will cause physics problems in most Quake engines in single player.

[Main exceptions: DarkPlaces and the last couple of version of DirectQ because they have framerate independent server and therefore physics. No Quakeworld engine (like FTEQW) would have this issue either.] 
I'm not presuming to speak on behalf of the QS devs but I do feel that this needs to be said.

You really shouldn't be reporting many of these things as bugs. If you actually read the text, you'll see that most of them are just simple notifications that standard Quake map limits are exceeded (which is OK because QS can support the higher limits) or that MP3 music is unavailable for the map you're loading.

These are not bugs.

Now, it could be argued (and I have done so in the past) that they shouldn't be displayed to players, but that aside, reporting them as bugs is just wasting people's time.

Regarding z-fighting, it was already dealt with before, and z-fighting is a content bug, not an engine bug. Again, bringing up an issue that's already been dealt with, and doing so without adding anything new to the discussion, is also wasting people's time.

I could add something here about one of the reasons why I bailed out of engine development being terminal annoyance at constant badgering of this nature, but - oh wait, I already have. 
*Not sure if it's a bug or a limitation, but models with an internal skin taller than 480 cause qs to crash... because qme allows models to have skins with a max height of 512

Actually it is a bug: the maps, esp the second map, lag in qs as well as interfere with the player's weapon anim lerp (due to the lag/overflow etc)

I don't know enough about zfighting but i believed that it could be solved via modifications to the renderer?

my host_maxfps is 72 
Skins with max height of 480 is an original limitation of the engine. Width (as far as I know) has no limit though. 
why would a too-tall skin cause a crash? YOu'd think it would at least give an error message and quit to console, or even better, load it correctly but with a warning. 
Now, it could be argued (and I have done so in the past) that they shouldn't be displayed to players, but that aside, reporting them as bugs is just wasting people's time.

I see your perspective, but I felt that the warnings would be useless if they required Developer 1, since i don't think many mappers use that setting. 
Visual Glitch In Jam3_mfx? 
Quakespasm 0.90 has worked great and I've lately enjoyed playing jam3_mfx among other cool maps. However, I came across a minor issue, which I think is a visual glitch.

There is a room in the said map with four bloodfalls and a gib fountain dropping gibs into the center of the room. Two of the bloodfalls show the other bloodfalls when viewed through them, but since they are not otherwise transparent this seems a little off. The other two are not seethru at all.

Here is a reduced-size screenshot which shows four images in one. The top and bottom ones show this effect, and the middle two ones do not. These four pics are all from different sides of the room.

As usual, I'm asking whether this happens to other QS users. I am using QS 0.90 compiled on Linux64 using SDL2 from the source release. The cmd-line options were -game jam3 and -heapsize 70000 (because I don't like typing numbers with five significant figures...) 
Known Bug 
I think that's the lack of depth-sorting transparent surfaces (FitzQuake does the same.) It's on my list of stuff to fix in qs at some point :-)

the same glitch is visible in the Rubicon pack in a few places (the entrance slipgate of telefragged, the exit of the credits map). 
Good example why fog should reset after each map: Jam 3 pack, playing Tronyn's level last. 
The issue of fog is that getting the right balance between what players expect and what mappers want isn't easy.

If a player sets fog from the console and if it's cleared on a map transition they will probably report it as a bug.

If a map doesn't include a fog key in it's worldspawn as a way of indicating "no fog here, please", but if fog persists between maps, then it's also a reportable bug.

Mix in mods that send svc_fog messages (or stuffcmd it - bleagh) during gameplay and you've a mess.

This is a classic case of a feature that fights itself. As an engine coder you just can't win, and no matter what you do (or if you just say "what a clusterfuck" and don't implement fog at all) you'll have someone pissed at you. 
fog should never have been a console option. wateralpha either, now I think about it.

But the feature was added before any mappers used it, so it didn't make sense at the time to make a feature that no one would see. I get it... but now players have a bizarre expectancy to be able to modify the way the map looks.

You wouldn't play Mass Effect and pull down the console so you could tweak the fog colour. 
Agreed. The map should dictate the fog settings. No other option really makes sense. If the player wants to change the fog AFTER the map sets it the way it wants it, then that's fine. But the map should dictate what it starts at. 
Fixed In Svn 
The bug was that on map changes, only the fog density was reset to 0. Now the rgb values are also reset to their defaults (0.3).

It's probably best to always specify all four density/r/g/b components in the worldspawn key; I just checked Darkplaces and jam3_tronyn.bsp gets black fog vs. gray in FitzQuake/QS. 
Fog Fog Fog 
In principle I agree, but the doubt I have is that this is exactly what a mapper would say. Meantime a player can come along and make an equally forceful argument in favour of user control of everything. The trick is to take off your mapper hat and try to view it from the other perspective.

I need to clarify that I'm not necessarily arguing in favour of the other perspective here: like I said, in principle I agree.

In practice what would be nicer to see is an agreed way out of this that involves both parties being able to have what they want; a way that lets mappers set their preferred fog settings (which could be no fog), that also lets players (and I'm primarily thinking of those who like to sex-up their Quake here, not that I necessarily agree with that mindset) set a fog that will persist over map changes, but that has a mapper-specified fog override a player-specified fog.

The major stumbling block here seems to be the convention of "no fog key in worldspawn = no fog". 
Meantime a player can come along and make an equally forceful argument in favour of user control of everything. The trick is to take off your mapper hat and try to view it from the other perspective.

I'd be interested in hearing that equally forceful argument, because so far I'm pretty sure it doesn't exist. 
In principle I agree, but the doubt I have is that this is exactly what a mapper would say. Meantime a player can come along and make an equally forceful argument in favour of user control of everything. The trick is to take off your mapper hat and try to view it from the other perspective.

To this, I only ask what other game lets you go in and change things like skyboxes and fog that are integral to the look of the game.

If I ever release another map, I'll stuffcmd the fog and skybox every frame just to be a dick. :P 
A Way Out 
A compromise proposal:

Fog has a "background state" which is only ever set by direct use of the fog cvar. The fog key in worldspawn is treated as a temporary override of the background state - once the map ends the background state is restored before the next map loads. Background state can be "no fog". If a fog command is issued during the map, this will not only produce an instantaneous change, but also update the background state to the given settings.

Result: on load, maps with fog keys look like the author intended. Maps without a fog key appear as the player sets fog by default (sober people: none, eyecandy freaks: lots).

Of course, info_command entities changing fog throw a spanner in the works. I can think of two unpleasant ways to work round that, but I will practice restraint and post neither... 
Does Requiem support BSP2? 
If you do what Preach suggests for fog, you should consider doing it for skyboxes as well. 
EUMA's, 2015 Going Forward! 
Cousin to the EULA, all maps and mods will be released from this point forward with "End User Mapper's Agreement".

Any player who changes a graphical or gameplay setting, config file or other game enhancing feature, excluding and limited to key bindings, will void said EUMA and have said map/mod removed!

Now we just need the Mappers to DRM their creations to enforce it... 
Conservative Hat 
I always thought the fog and sky commands in Fitz/QS were a good balance between mapper control and player tweakability. Yes, they're reset on every map load to the worldspawn values (or if not set, the engine defaults). I like this because I can mess with fog and not have to worry about restoring it to the original value.

If there is really a demand for a way to control the fog of maps with none set in the worldspawn, maybe a dedicated "r_defaultfog" cvar would be the cleanest. But I have to say, I'm not a big fan of the idea, e.g. my jam3 map has no fog setting in the worldspawn; it's really intended to be played with no fog, not "whatever fog". 
"To this, I only ask what other game lets you go in and change things like skyboxes and fog that are integral to the look of the game."

Yeah, I agree. We don't allow anything else to be customized ... what's so special about fog? 
Is there anybody who seriously goes and changes the density and color of fog, just for the sake of extra eyecandy? 
Absolutely, checkout the stuff at and the various HD packs. 
Yes, but should that override the mappers intentions? I mean, fog isn't chosen for a map at random. 
HD Packs Aren't Fog 
I Dunno 
They do stop you seeing the level if you apply enough. 
Fog is one of the settings that HD packs like to set (afaik, I am not into that kind of stuff). 
We should add settings for tweaking color ranges. Like, if I don't like red lighting I should be able to tint it more towards orange.

Also, lava kind of sucks ... being able to switch that to slime would be great. 
Is anyone here colorblind? Not that this matters a lot, but perhaps there's an argument for a colorblind mode or somesuch. 
Dark Places let you change the colour balance with RGB sliders? 
Lol Warren 
oh, i thought you guys were actually interested in some kind of meaningful discussion. my mistake.

zwiffle: there is at least one ex-mapper. statistically about 5% of men are more or less, they rarely speak about it though. I know of 4-5 players but that's a fraction. 
RGB sliders for fog would be awesome... 
Yes, but should that override the mappers intentions? I mean, fog isn't chosen for a map at random.

That's not actually the point being made.

Of course if a map specifies a certain fog setting, the engine should honour it and the player should accept it. That's not in dispute.

The point being made is that where a map doesn't specify it's fog (or water alpha, or skybox, or whatever), right now there are two possible interpretations and both are valid:

(1) The mapper doesn't specify fog because the mapper doesn't particularly care, never thought to do so, or else the map predates engine support for fog.

(2) The mapper is explicitly specifying no fog.

Interpretation (1) is the only case where the player can go nuts with user-specified fog. This is the case that, if you look at the world through mapper-coloured glasses you, may miss becoming aware of.

Interpretation (2) is unambiguous: again, the mapper doesn't want fog and the engine should honour that. Again, that's not in dispute.

The problem is: how does the engine tell which of interpretation (1) or interpretation (2) is the case? 
#2 is the safe assumption. 
Set it to whatever the map is set to on load. Players can change it after load if they want to, but assuming the map is authoritative is the best way of respecting the mappers intentions.

If players change it after load, so be it.

That should really be the end of the debate. :) 
Reminder that the original point of debate was:

fog should reset after each map

And it's bloody blatantly obvious it should. 
if you look at the world through mapper-coloured glasses

Shame for us all, looking at Quake maps through mapper glasses on a Quake mapper forum. 
Let's All Think In Binary Choices. 
You are ignoring mh's insights on how people out there actually play Quake. Try looking outside the box some day. 
What if there was an additional fog-related cvar to toogle persistent fog that carries over across level changes and reloads. Could even be 1 = persists until loading a map that has a fog field of its own, and 2 = overrides maps' fog settings. Disabled by default, so only to be used by people who know what they're doing, who are aware of the possible unwanted effects. 
Pfog! Phog! 
"You are ignoring mh's insights on how people out there actually play Quake."

Nobody here does that. And we all play Quake. 
01100110 01101111 01100111 
I'm gonna say to make the fog command a mapper/mod setting that gets reset on map changes. With mods stuffcmding from triggers etc, doing otherwise is too unsafe.
If users want to override it, they can either do it on each map change or the engine can implmement something per-map like:
I'm Not Ignoring 
I'm dismissing. 
Shame for us all, looking at Quake maps through mapper glasses on a Quake mapper forum.

Ah, but the question is: what's the purpose of releasing a map?

Sure, you can make a map for your own satisfaction (hell, even I've done that), but why release it? You release it to be played, by players, unless all you're interested in is a mutual back-slapping exercise among the mapping community. 
I'll Just Keep On Derailing The Thread 
what's the purpose of releasing a map?

Can't justify working on it anymore. 
"You release it to be played, by players, "

Yes, and ideally they play the map you designed not the one they customized. :) 
Talking At Cross-purposes 
I think there's a lot of cross purpose chat here, so I'm gonna try and post a few non-controversial things that everyone should agree on.

1. Maps with a fog key on should be loaded with those fog settings.
2. Going to a map with no fog key should reset fog to default in some sense.

There is a useful discussion buried somewhere in this thread, but it seems to be drowning amid people trying to argue in favour of 1. and 2. when actually nobody is arguing against them. mh, is this a fair point to start from? 
what's the purpose of releasing a map?

The feeling of self achievement of having a "thing" under my name being "out there". The knowledge that I've learned a lot in the process of making it. The enjoyment I get from playing it. The knowledge that my target audience might even enjoy it. And if they don't, I'll get earnest feedback from them, because there is no "mutual back-slapping" in this community at all. (But you probably haven't noticed that, because you're a complete cunt.) 
Because he makes reasonable well thought out conversation points and great engines? 
Both of those points are questionable to say the least. 
Guys, Please... 
Also, my cocern wasn't even so much about the questions "what the player wants" versus "what the mapper intends" than the risk of accidentally, unintentionally or unknowingly 'spoiling' a map with the wrong settings. 
Questionable But Not Questioned? 
OK, I think I phrased my preamble wrong. I wouldn't want to go as far as saying nobody would disagree with 1 or 2, simply that at the moment it doesn't seem like anyone here does disagree with either. 
Most players aren't going to customise the fog.

If they want to, that's fine by me - I always release the map sources and its not even my IP, so I've nothing to get shirty about.

It's just a bug; maps shouldn't inherit fog not intended by the creator. 
One Toxic Prick 
It's not just fog though, think of things like wateralpha too. I'd wager that custom wateralpha settings and vispatched maps are much more common than people using different fog settings. Quake is messed up. :} 
Just To Be Clear 
Fitz/QS have always reset fog on map changes (whether or not the map you change to has worldspawn fog). So do Darkplaces, FTE, DirectQ, RMQEngine, and Qrack. The only engine I know of that doesn't is ezQuake (e.g. map e1m1, turn on some fog, map e1m2 - the fog will still be there.)

The thing with Tronyn's jam map was just a weird bug - Fitz/QS were clearing fog on map changes by just resetting the density to 0, which would normally work fine, except Tronyn's map happened to only specify a density, so that was combined with the last set of fog colors used.

I don't think anyone's really arguing that QS should change its fog command to match ezQuake. 
I missed that in the back and forth.

So, just set all 4 values to avoid the bug... 
Yeah, my primary argument was towards just removing user configurable fog and skybox (thereby rendering the problem of whether to reset to no fog or user specified fog on a map change a moot point). 
Tweaking Cvars Randomly From Gamecode For Anything Except Menus Is Evi 
+1. People think these trigger_cvarset maps are buggy. I'm scared to copy-paste this into my engine. Also, why is 'fog' is a command and 'r_skyfog' a cvar? 
..Is Evil 
My title was one char too long. Anyway, skyfog could be an arg tacked on to the 'fog' command. 
+1 Qbism 
fog has 5 values then. 
Fog Alpha R G B Sky 
Yes. That would be more consistent with expected behaviour and compatible with engines that don't support it. The 5th value would be ignored without crashing in that case. There could still be an r_skybox cvar for players to tweak. 
one issue with that is that DarkPlaces already uses the 5th value for fog alpha, which is different than r_skyfog. Not sure if any other engines already use it for something too.

I still think skyfog as a separate worldspawn key is the way to go. 
+1 Skyfog 
That would be even more compatible. Again it does not preclude r_skyfog. Also I should have said 'fog DENSITY r g b'... density is more accurate 
But you probably haven't noticed that, because you're a complete cunt.

Maybe I am, but this kind of thing seems well-worth discussing even if so. Would you not think that nailing down some predictable and consistent standard behaviour in a case where a grey area remains owing to sloppy and/or weak initial standardisation is worthwhile? Is that something that could be of benefit to the entire community? 
Do whatever Preach says. :) Thanks! 
A number of old releases were made for GLQuake and never tested in WinQuake or an engine that supports fullbrights. And as a result, you have fullbright patches in the map textures.

It is possible that in the future, some sort of informational only external .ent file could tell the engine not to use fullbrights on the map textures supplied in the .bsp.

Similar to the idea of producing external .ent files signaling the author's intended r_wateralpha value for the level.

I'm just filing this thought here. 
.ent Files 
I have problems with these on practical grounds.

A .lit file can be associated with the source .bsp by comparing the size of it with the size of the original lighting lump.

A .vis file can be associated with the source .bsp by comparing the number of leafs in it with the number of leafs in the original leafs lump.

There's no such comparison available for .ent files.

Sure, you can do string comparisons of certain fields in the worldspawn entity but it just doesn't seem as robust.

I'm aware that Quakespasm has it's own way of checking these, by means of only loading them from the same gamedir, but I can see a case where someone might want to keep these modifications in a second gamedir so they have the option of playing with either the original content or modified content.

I personally have the extended Dismal Oubliette (among other things) in a pak2.pak in ID1 so how can I be sure that a hypothetical .ent file for it - even if loaded from ID1 - refers to the original version or the extended version?

I don't pretend to have an answer to this, just highlighting potential issues as they occur to me so that we don't end up with another half-baked standard that isn't as robust as possible from the outset. 
How can you determine if an external .ent file is for the right .bsp?

Right now, you can't.

But I guess a .ent file could have some information about the expected .ent size or count it should be replacing, perhaps in the worldspawn section or some such thing. 
what about an md5 hash of the bsp file? 
how about... don't use the .ent file if it's lower on the search paths than the .bsp file of the same name?

i.e. id1/maps/e1m1.ent won't override mymod/maps/e1m1.bsp

likewise, a .ent in a pak file won't override a loose bsp in the same game dir. 
how about... don't use the .ent file if it's lower on the search paths than the .bsp file of the same name?

I'm not saying this is something that does happen, but I'd prefer a solution that can handle a case where somebody manages to get e.g a hipnotic start.ent into their ID1 directory.

This is mostly coming from reading various QuakeOne threads and observing the difficulties that people have with even getting the most basic stuff set up right. 
i think my suggestion would handle that by rejecting the start.ent (start.bsp would be later in the search path in that case.)


Actually a pretty good check would be to compare number of submodels in the bsp... since they are referenced in the .ent file right?

That would only fail if the .ent file doesn't use the highest-numbered submodel, which is still a point of failure i suppose. 
@metslime ... I don't think it does even now with Quakespasm's ingenious content protection scheme. 
I think QS already does what metl suggested; here's a comment from gl_model.c:

// use ent file only from the same gamedir as the map
// itself or from a searchpath with higher priority. 
yay, problem solved. 
QS seems to run significantly slower after I die and reload the map. How come? 
Very Weird 
Shouldn't happen, I'd like to be able to reproduce that. Can you give me a scenario where it happens, like any command-line flags (heapsize), mod/map. Assuming the win32 0.90 exe? You're just pressing space to restart when dead, not loading a save? Can you see an increase in the frame times reported by r_speeds? 
Powerup Flash 
what console command disables the screenflashes when grabbing powerups? 
gl_polyblend 0 
Wait What? 
the powerup flash is built in and can't be disabled.

although, amusingly, if you type 'bf' into the console, it will play it. 
My Bad 
i forgot, but it's not actually 'built in', but is part of the progs.dat.
The code actually sends a 'bf' console command when you pick up items. In theory, you could make a mod to disable it. 
Or In Theory 
You could also create a modified engine that makes "bf" a command that does nothing - or have a cvar that introduces that change. I read ranger's post as looking for such a cvar, dunno if it's an existing feature in quakespasm or elsewhere... 
Minor Issue With Joined Console Commands 
This one is a really minor issue. It's about as non-urgent as they come, since working around it merely requires typing in the console commands separately.

I noticed that you cannot autocomplete map names when joining multiple console commands using a semicolon. The following happens to me on QS 0.90 using the Quoth mod as an example. Any collection of Quake maps will do.

I start the engine and enter the command "game quoth". There are now maps titled breakable, e1m1quoth etc. available to launch from the console. If I type "map " (including the space), I can press tab to autocomplete them. This works as intended.

Let's say I want to play on Hard. I type "skill 2; map " and try to autocomplete the maps now. It doesn't work. It only offers to autocomplete commands instead of map names, which isn't right in this context. If I type in a proper map name, the commands still work, as you'd expect.

Presumably the autocomplete logic considers the whole console command line and not the part after the last semicolon. This would be a nice little thing to fix if you revamp the autocompletion feature some day. 
Uneeded Levelshots 
SQ saves unneeded levelshots TGAs in the game's maps folder.
These image are never seen ingame and the files take up space, so QS should not generate these files anymore 
QS Crash 
texture coords on a brush were:
16777740 1584.00 832

don´t ask...

FitzMKV crashed too. 
What The Fuck Is That 
Looking For Testers 
I was wondering if anyone with AMD/ATI cards could try this build for me (I've tested some intel and nvidia cards already, but if you have those you're welcome to try it too):

It has the alias model speedup I've been working on (only requirement to get the speedup is opengl 2.0+), so a good map to test is jam3_tronyn from map jam 3, with its 120k epoly. A good commandline would be:

"-heapsize 256000 -game jam3 +map jam3_tronyn"

then check the first number of the r_speeds when looking at the demon face. If it's not too much trouble, checking the r_speeds with QS 0.90.0 for comparison would be great too. With any luck, the frame time should be half of what it was in 0.90.0. Thanks! 
Ok Here 
I guess you mean the start of jam3_tronyn. On my HD 6750 it improves from (some version of 0.90) ~ 13 ms to under 5 ms.

Havent played that map yet. Third of the way through now... Not bad :) 
in line 505 of vid_glsdl.c, can you please add SDL_WINDOW_BORDERLESS to flags? Makes it possible to run without window decorations in window mode, useful for dual-head setups when playing on non-primary monitor (for SDL2, i built it with USE_SDL2=1). 
@stevenaaus, thanks for testing - that looks like a good speedup!
@LeopolD, sounds like a good idea, we maybe could have a vid_borderless cvar. 
That would be even better:) 
R_speed Test 
Went from average 69.15 to 12.21 on a 6770 using OSS radeon drivers.
Pulling the console down almost doubled the value on the old build while the test build kept the rate. 
Gamma And Runes Problems. 
Hi! Thanks for all the hardwork in the port :) however, I seem to have come across two problems:
1.-Gamma isn't respected unless the engine is set for 16 bit color depth; if using 24 the gamma slider works and the gamma console command indeed changes the brightness, the gamma value is saved, but ignored when exiting and restarting the game (or rather reset when the vid_restart occurs in config.cfg), it's a bit annoying having to reset the gamma (by typing gamma 1 to "reenable it": the engine assumes the value it read is already there [despite being ignored] and does nothing, and then gamma 1.35, since the slider won't go above 1 and 1 is to bright, could these values by fixed, too?) every time I start the game.
2.-My runes disappeared! I finished episode 3 (after finishing 1 and 2 beforehand) and noticed the bars weren't there...true runes. Sure it can be fixed by impulse 11 (and I know it can happen in vanilla Quake), but it's annoying nonetheless.
The engine I'm using is the latest stable Windows 64 bit build, SDL 2 with a GeForce GTX 750 Ti using the latest drivers (347.09 at the time of writing). It may or may not interfere that I do have the drivers set to use NVidia color controls (since allowing "other programs to control color" makes the desktop [and mostly everything] look like ass). Other games have functional (or not ignored) gamma controls.
Thanks in advance :) 
@Bloodbat - Runes Disappeared 
Did you use the "kill" command at any stage? This is an old Quake bug where the "serverflags" field is wiped by using kill, and I guess that QS hasn't fixed it. 
@mh - Disappearing Runes. 
Nope, no kill command. The only command I've used is vid_restart and some screen related cvars (including, obviously, gamma) for dealing with and testing the other problem I mentioned. 
Bsp2 Leafs 
I'm getting an error trying to load a BSP2 map that exceeds 64k leafs. Shouldn't this limit have been raised (or abolished) for BSP2? 
The file format itself abolished the limit, yes, however, the PVS buffers within the engine tend to be a fixed size, and there needs to be one bit per leaf.
large leaf counts are just all kinds of bad.
By the time you reach 64k leafs, your uncompressed pvs data is half a gigabyte.
If your editor supports detail brushes, try using those. 
Ok guys, what are the chances of putting this into Quakespasm:

QuakeForge uses shader magic to simulate the look of the software renderer... 
I don't see the difference between that and changing the texture mode using gl_texturemode 
the output pixel colour uses quake's colormap like in SW rendering (which is a lut basically that combines texture pixel colour with the lightmap)

It really makes a big difference imo 
There's a subtle difference in that a GL engine, even with a gl_texturemode change, calculates lighting by doing a multiplication of texture colour by lightmap intensity.

The software Quake approach uses a lookup table but the result of the lookup is constrained to colours that are in the Quake palette, whereas the GL multiplication can produce results that are not in the Quake palette.

For a truly authentic look you'd also need to use the software Quake miplevels, since once again these are constrained to colours in the Quake palette but GL's miplevel reduction can likewise produce colours that are not in the palette. 
Oh ok, so the lighting being restricted to the palette? Fair enough. 
I would really like to see before and after shots on that. 
(because I have no idea what kinn is looking at) 
+1 Simulate Software Quake 
i think that would be great, I really like the look of software quake... it just seems more surreal and gritty. 
Random saw this

The QuakeSpasm developer said that I'd need a full version of Quake for the music to work.

Bacause of the shareware is limited to only what is inside pak0.pak file - music resides outside it so the engine ignores it.

I am 99.9% sure that the Quake shareware came with the CD audio, can check if you want me to. You could unlock the full version with just the shareware disc so the CD audio had to be on the disc.

So there is no reason to block CD audio if someone does not have pak1.pak. 
There is one important difference between software and GL: 
That's the first show that shows the difference pretty clearly. Winquake seems much sharper and harder due to the way the palette has to cope with gradients. 
also....models have minlight in software? 
IIRC models are minlighted to 5 in order to avoid a check for division-by-zero in an inner loop.

The MDL lighting is almost completely different in software in general; it just doesn't use the same calculations as GL did, although I don't recall specifics. 
Yeah, in software, mdl's have minlight. From this comment, it sounds like the reason for doing that was an optimization:

#define LIGHT_MIN 5 // lowest light value we'll allow, to avoid the
// need for inner-loop light clamping

I'm not sure if this is the only difference. The code for determining the light level of each mdl vertex in software quake is structured a bit differently than glquake. These are the relevant parts of sw:

And glquake: 
QuakeForge uses shader magic to simulate the look of the software renderer...

Hmmm - we're not really about geewhizz effects.

I do love these effect sort of things ... but the code belongs in separate patches and/or forked projects. 
I Don't See It 
unless.. are you talking about the banding from lighting? why would you want that, it looks shit. 
I can see where this conversation is going.

I'll just leave it at that, and say that yes, quite a few people do actually like quake's original 8-bit aesthetic, and have done for some time. 
I like the 8bit feel. It's difficult strokes for different folks. :) 
Dev Build 
if anyone wants to test a dev build, there's one here with some neat features:

@Bloodbat: this has a new gamma implementation that should fix your gamma issues
@LeopolD: I didn't get around to adding vid_borderless, but did add something: set vid_desktopfullscreen to 1 to make fullscreen mode use sdl2's new "fullscreen deskop" mode.

Other stuff:
-it has the glsl-accelerated mdl renderer. Szo reported an issue where some models are rendering black on his AMD card, still working on finding that bug.
-"game" command tab-completion
-demo pause support 
Cause Of The Missing Runes. 
I found the cause of my missing runes: if I die and click the mouse to respawn (and presumably load the last save)...the runes are gone, this behavior doesn't seem happen when loading from the menu or using F9 to quickload. Hope this helps fix it. 
I reproduced it this way:
"map e1m7", grab the rune, then "changelevel e1m1". save. get killed. click to respawn, you will still have the rune.
Restart the engine. Load the save, you will still have the rune. Get killed, click to respawn: this time the rune is gone.

I think this is the same bug mh was talking about, pretty sure there's a fix on inside3d, so I'll have a look at integrating that. 
Runes Runes Runes Runes Runes 
Almost certainly it's the same bug.

I've personally only observed it with the "kill" command (and have a hacky workaround for it there) but that doesn't mean that it doesn't occur elsewhere or have a different source. 
Re: Dev Build 
svn'd up, working fine here on my OpenBSD box, and gamma works, thx! 
Quakespasm Feature Request 
Have you lads had a taste of HRTF? Aka binaural audio. In case you're unaware, it's a form of surround sound which can be played through any standard ear/headphones and soundcard. It's available in zdoom/gzdoom, where it's rather amazing to hear. There is a version available in the form of openal soft. Any chance of integrating that into quakespasm? 
I will have to try that in gzdoom. yquake2 also has an openal backend:

Can't promise it will happen; the Quake sound code is a pain to work with so it might be a fairly substantial project. Also, I've found it's important to mix all the sfx at 11025Hz, otherwise you lose the "classic" sound (the Quake sfx clip a lot when mixed, but it sounds ok if the clipping is at 11025Hz). But it could be an optional backend of course. 
above was me.

re: the runes bug, I looked in to it, and the background is, there are two pieces of information about each rune: 1. does the player have it, 2. has the player beaten a level while holding it. #2 determines whether you get to keep the rune after dying. The problem is the savegame format doesn't keep both of those pieces of information, I think it only saves and restores #1. IMO it's best to just live with it as an "old gameplay bug". 
While you are still thinking about, can you describe in more detail the specifics?

The documentation of this problem is essentially non-existent and I know I'd like to "once and for all" at least know what is going on.

[And opens the opportunity for someone other than yourself to maybe even solve it.]