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.
First | Previous | Next | Last
Tough to diagnose. I've got a few debugging things you can try:
- Try with a clean config. Make a copy of your quake directory, and delete everything except id1/pak0.pak and pak1.pak. You can launch in this gamedir with "quakespasm -basedir {directory here}"
- try the Linux binary from as well as the Ubuntu one you can install with apt. Does the issue happen on both?
- Type "condump" and upload the resulting file
- Do you get a reasonably good framerate? What does "host_maxfps 1000" then "scr_showfps 1" show? Make sure to reset "host_maxfps 72" afterwards. 
Thanks For The Response, Ericw 
<quote>Does the issue happen on both?</quote>

This is with the Linux binary downloaded from (which is what I've also done in the past when things worked properly; I don't think I've ever installed Quakespasm with apt).

I'll definitely try the things you listed and then post the results. My apologies in advance if it takes a while. 
Does the issue happen on both?

^Obviously that's what I meant to do. How embarrassing. 
Help With Improved Collision Detection For Quakespasm 
So I've added per triangle collision detection for entities (vs. bounding boxes) to my quakespasm project at home but I'm running into a peculiar collision detection issue.

My code works fine when the entity's baseline angles/origins remain 0, but not otherwise. I'm using the entities's v.origin and v.angles to construct an inverse transformation matrix. I perform my per-triangle traceline collision detection, find my hit point, and then transforming the hit point back into world space.

As stated, this works fine when the baseline is zero. If i need to do some more voodoo in my math to account for baseline angles/origins please let me know? 
That is odd. Assuming your collision detection is being done in server code, the baseline shouldn’t matter at all since that is merely used as part of the network protocol and client code. What types of collisions are you testing with this? Bullets against enemy models? 
RE: Collision Detection For Quakespasm 
Thank you for responding metlslime. I am testing bullets against enemy models. I have a modified traceline routine that iterates through all of the model's triangles looking for ray triangle intersection (terribly unoptimized, I know).

What you have helped me understand is that i don't need to worry about the baseline information. Is using the AngleVectors on the entity's v.angles call to extract the forward, right and up vectors, plus using the v.origin sufficient to build my world-to-model space matrix? Is there a better way?

The only time it does work correctly is when the model's angles are <0,0,0>, and i invert the y axis (right vector * -1) when projecting from world to model space. I don't know if this behavior pops any ideas into your head, but i thought id share.

Thanks for your help!

FYI: the collision data is built in model space during the the Mod_LoadAliasModel process. In pr_cmds.c I invoke my modified traceline routine to translate my ray origin & endpoint from world space into model space, perform my hit detection, and then transform it back from model space to world space. 
I'm really sorry it took me this long to respond.

- Try with a clean config.

With the binary downloaded from it happens with a clean config too.

- try the Linux binary from as well as the Ubuntu one you can install with apt. Does the issue happen on both?

Ok, I've installed Quakespasm via the Software Centre or whatever it's called nowadays (which I guess is the same as installing via the terminal with apt. It's called "quakespasm-beidl", though. Is that right, or did I accidentally install the wrong thing?). As far as I can tell, the problem doesn't happen with this version of Quakespasm, or at least it hasn't yet.

- Type "condump" and upload the resulting file

Should I do this for both versions of Quakespasm I now have on my computer? And where do I upload it?

- Do you get a reasonably good framerate? What does "host_maxfps 1000" then "scr_showfps 1" show?

Under both versions of Quakespasm, my framerate is initially just under 200 on the start map and then rises a little, while hovering between 200 and 300 on e1m1. Is that good? The version downloaded from seems to have a slightly higher framerate, though, for what it's worth. 
Alternate Menu Navigation Keys 
It would be nice to be able to bind my own menu navigation keys in QS. My keyboard doesn't have regular arrow keys but can send the numpad direction keys. Is this feature already present and I just don't see it? It's not super annoying to have a second keyboard shoved in the back of my desk to do Quake menu nav, but it would be nice to use my aircraft carrier Model F for everything. 
Oooh, Model F, you say? o: Gotta love dem clicky keys! ;) I'd wager some hardcore typists would pay a hefty penny for one of those keyboards. :D 
I love my Model M keyboards. 
But Yeah 
Condolences to anyone else in the same building as you when you're typing on that thing. 
where does one buy these? 
why does the Quakespasm still have that "skin is taller than 480 issue"? At number of other engines have took care of that, why can't Quakespasm? 
Quakespasm 0.93.2 Released 
An Update To QS - Spike? 
... please? 
what is the command to disable fullbright in the quakespasm engine? 
"find Bright" 
... in the console.

Posted in the vein of "give a man a fish" VS "teach a man to fish". 
got it. Thanks! 
Problems Using DSR Resolutions 
After finding much success with EZQuake and 3620x2036 DSR enabled via NVIDIA settings I notice that QuakeSpasm cannot handle the DSR resolutions well: the console rendering gets all whacked. 
Define "all whacked"
I can run it in 7680x4320 and it looks just fine.
Have you tried changing scr_conscale? (also scr_menuscale, scr_sbarscale) 
Well, this is odd: I tried to take some screenshots to show exactly how it is "all whacked" only to realize that screenshots in fact show the console and the entire screen rendered correctly. It's only on my actual screen where things look wrong.

As I started paying more attention I realized that going above the screen native resolution of 2560x1440 increases the overall "zoom level" of the screen. When using DSR resolutions, I can clearly the the bottom "status bar" dissapear and the left side of the console window falls outside the viewpoint. As the DSR resolution is increased further, so increases the amount of this "zoom" leaving out borders of the screen out from view.

Are there some other cvars involved? 
Apparently QuakeSpasm was trying to used windowed mode instead of fullscreen. 
Cl_bobcycle Causing Grey Screen 
Setting cl_bobcycle to "0" makes the screen go grey.
Found this out after a long battle to get things to work again. 
Setting cl_bobcycle to "0" makes the screen go grey.
There's a division-by-zero in the original code with cl_bobcycle 0 - "cycle = cl.time - (int)(cl.time/cl_bobcycle.value)*cl_bobcycle.value;" - whether or not it makes your game go nuts probably depends on compiler options/etc and unfortunately in the original engine it was OK but in some ports it's not.

So just set it to a really low value until the QS devs fix it. 
I think the intent was "cl_bob 0", not bobcycle 
I had an config file which works good with many engines. At some point though I only got this grey screen in quakespasm. After finding the solution I wanted to post here to help anyone experiencing the same problems. 
Yes, "cl_bob 0" is obviously the intended way to disable bobbing in the engine, but unfortunately "set cl_bobcycle to 0" is one of those items of "Quake lore" that gets passed around, which accidentally works some of the time, but which is actually wrong.

Fortunately it's an easy fix in the code: just check if it's 0 and set cycle to 0 if so: 
Dynamic Shadows 
So, I woke up at 3am, bored, and well here's this..

in r_alias.c

i just added the shade variable in GL_DrawAliasShadow

R_LightPoint (e->origin);

shade = (((lightcolor[1] + lightcolor[2] + lightcolor[3]) / 3)/128);//R00k


glColor4f(0,0,0, shade * (entalpha));//R00k: fade light based on ambientlight


GL_DrawAliasFrame (paliashdr, lerpdata); 
un-private the video fella 
Needed Features 
Hello. There are any chances to see WinQuake's software render with oldschool look/atmosphere and QuakeWorld servers support? 
Quake Qbism. 
"QuakeWorld servers"
There is no Vanilla based engines with those features, so I want to see it in QuakeSpasm. 
Its exactly the same as WinQuake even with no proper widescreen resolutions support and this port has its own bugs, so it has no sense. 
tyrquake, compared to WinQuake, can render more complex maps (BSP2 support) and has model interpolation. It also has alpha support for models and liquids, including the software renderer.

I'd say it's otherwise close to WinQuake, but it certainly has improvements. It certainly is not on the feature-level of quakespasm.

Talking of which: I noticed vkquake included QSS' support for decoupled render/physics framerates:

Looks surprisingly non-intrusive and should not alter behaviour for framerate caps up to 72. Is this something that can be considered for upstream inclusion? 
iirc the 'decoupled render/physics' is from quakespasm-spiked. And it does have limitations.
if you are on a huge map and your frames drop below 72 it starts to produce a slow-motion effect the further away from 72 you go. And on the opposite end, the higher you go over 500fps, it gets faster.
but, for the 72-500 range it works fine. And it's not the logic of the code, it also happens on othe independent physics code i have tested. 
Yeah, that's code from quakespasm-spiked.

As for problems above 500 fps - well, capping it at (pulling a number out of thing air) 300 fps would still enable a match for all modern display devices, so that's the easy case.

Slowmo below 72 fps, of course, is a problem. I wonder if the engine could detect that and switch dynamically as per situation. 
Basically, grab the current fps value, if its < 72 then turn off the independent physics code, and let the engine run like normal. 
same for > 500 too. 
You could also run multiple physics frames of the renderer is running slow. 
Setting Server Ip On Linux 
is anybody able to use the -ip flag on linux? it works fine on windows, but it seems to be useless on linux. other flags like -game or -dedicated work fine, so i don't think it's an issue with flags in general. it defaults to no matter what ip is specified, which does not seem to be a problem as long as you have a linux client and server, but windows clients can't connect to a linux server in this configuration. i've tried it with regular qs and qss 0.93.2, both have the same problem. using qss the problem can be avoided by launching an automatically configured server from the menu, but running it as dedicated still gets you stuck at 
Can't Play Quake Via QuakeSpasm Engine 
I bought first Quake and its mission packs in Steam. As many people recommend, I installed QuakeSpasm, and even installed soundtrack for all three games, and got Steam Overlay work with QuakeSpasm.
QuakeSpasm menu works OK - options and everything. But I pushed to start a new singleplayer game. Spasm crashes. Then I looked up, that I downloaded x64 version cause i'm using Win10x64. I reinstalled to x32(86) - the same problem.
Also, I tried to enter the game through console - "map e1m1" - the same problem - crash.

Sorry for my bad english, I tried to be correct as possible as it can be for me. 
Are you on a laptop? What video card are you using? Can you play with a software rendered engine like Super8?

How about a WinQuake?

You can also try Mark V's version of WinQuake: 
#3653 - QuakeSpasm Crashes 
I've been able to reproduce this and fix it (or work around it) on a test machine by running with -noglsl.

The symptoms were broadly the same as you - the engine starts up OK, I can navigate the console and the menus, but as soon as I start a map (in any way) it exits silently and nothing is logged.

That seems to suggest that something's going wrong in the VBO loading code, and I hope to get a debug build going on this device soon-ish. 
#3653 - QuakeSpasm Crashes 
Bit of an overdue update.

It doesn't crash in a debug build, only with the released binary. I guess you need to run with -noglsl then. 
Down With "file Merging"; Up With "basegame" 
I did a quick hack of my own build of Quakespasm so that it supports "-ad" and "-copper" arguments in a similar way to the existing "-quoth" argument. It has made playing AD or Copper map releases so much nicer; just bang them into their own gamedir and away you go. No manual file merging, no mixing of savegames, easy cleanup/uninstall.

I realize this is probably not the right way to do it as a general feature for public consumption. FTE for example has a generalized "-basegame" feature that seems to work for this purpose.

I don't want to relitigate "well then just use FTE" here -- often I do, there are reasons why sometimes I (or others) don't -- that's old ground and in any case Quakespasm will continue to be popular for a long time. I'm posting here just from general curiosity about whether there's a gotcha that has prevented this sort of feature from showing up in Quakespasm. I dimly remember some past arguments/discussions about why or why not to implement this. (Although I don't know why "-quoth" got a free pass.)

Also I'm kind of generally curious about the state of QS development and whether there's a process for contributing to it. I took a look at the Quakespasm repo on Sourceforge and there's activity, but it seems to be pretty buttoned-down as to who can open a ticket or otherwise contribute.

Anyway... if I had to enumerate the stumbling blocks that I see folks running into on reddit or Steam forums or GOG or wherever, the lack of a Mods menu would probably be #1, but this thing about needing to do file-merges to play AD or Copper maps would be somewhere in top 5. 
Here's an example of the (clean but hacky) approach of just adding "-ad" and "-copper" support:

And here's an example of a feature supporting a generalized "basegame". Gets quite a bit messier because of maintaining backwards compat for other existing messy behaviors, so I'm not sure if this is actually the desirable solution, but it works for me. Described more in the commit comments: 
Warp It 
Are there any chances to add vanilla-style underwater warp? Right now, Mark V is the only port I know that pulled it off. 
2 posts not shown on this page because they were spam
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2020 John Fitzgibbons. All posts are copyright their respective authors.