News | Forum | People | FAQ | Links | Register | Log in
Fitzquake SDL Version Beta
I just published a beta release of my SDL version of the Fitzquake engine. The main goal of this version is to allow Fitzquake to run on all major platforms. I provide builds for Windows, Mac OS X and Linux.

Grab them at

Windows and Linux users take note that you have to install SDL 1.2.10 or better.

Windows users please also be aware that this port does not do anything better on Windows than metlslimes original version. Actually, it does less, but I would still like to get your feedback because there's a chance that the official version will be switched to SDL eventually. That would go a lot smoother if we ironed out the bugs on all platforms first.

Have fun and don't forget to send in your feedback and bug reports.
This is good stuff! Runs nicely on my Mac. Thanks man, great work! Now I can try some of these newer maps... 
What is it with you Mac users that you don't know how to exclude those __MACOSX folders from archives. ;p 
We can't see that there are such folders :-). I'll fix that later. 
It's probably the same as Windows users unknowingly include thumbs.db and desktop.ini. 
"It's probably the same as Windows users unknowingly include thumbs.db and desktop.ini."

Exactly. It's hidden on our end. 
This would never happen if you used Lunix!
I didn't mean to spawn a discussion about this btw, just wanted to mention it. 
Talk about the port dammit :-) 
Perfect would be FitzQuake with its ultimate graphics to run smoothly online like FuhQuake. What is it that makes FitzQuake look better than GL FuhQuake actually? 
What is it that makes FitzQuake look better than GL FuhQuake actually?

the secret ingredient is metlslime :-). What is it that makes FuhQuake run more smoothly online than FitzQuake? 
I would think the fact that FuhQuake is based on QW has something to do with it. :)

The main thing that makes FitzQuake look better than any other GL engine is the improved lighting model. Not sure exactly what metlslime has done there, but it's certainly nicer than the other GL ports.

p.s. Sleepy, good work on the ports. I have no use for them but it's good to know that mac and linux people can enjoy the best version of Quake on their systems! 
One bug I have noticed is that it doesn't save all the config options to disk. For example, "gl_texturemode" ... I can set that, shut the game down, start it up again, and it's back to default value.

I want chunky pixels, dammit. :) Same for gl_flashblend and gl_polyblend and +mlook ... they don't seem to get saved between sessions. 
Great Work 
had no problems with the windows version during the couple of minutes I spent looking at it. Couldn't tell the difference between it and normal fitz.

However, I did try the maps console command and it didn't work the same as the regular fitz command. I was using a mod directory that had no maps in it, and the id1 dir and loaded pak contents were not listed. It just responded "no maps found". 
I don't think they were ever saved - you need to put those options inside an autoexec.cfg in the id1 folder. 
big improvement, runs on linux fullscreen, with a good resolution switch when returning... very nice! 
will the option "gamedir" and interpolation be added? 
than: The maps and mods commands currently don't work. That's a know bug.

Can anyone confirm what ijed said? Because then it's not a bug.

azuki: That's not really up to me. Currently, the plan is to test the SDL code as much as possible and then integrate it into metlslime's sources. He will continue development, so he's going to decide what features get added.

I don't want to spawn a spinoff of Fitzquake, because we would end up with two versions of the same engine that are being developed in parallel. That makes no sense.

Once all this is done and we have one singular codebase again, I may help out with feature requests and bug fixes if metlslime is OK with that. 
metl quit IRC yesterday with this:
<metlslime> fitzquake now has interpolation for models 

Ahh Ok, thanks! Been out of it for too long. 
how that didn't get added in the very first version i'll never know :P

the lack of it has put me off using fitz since the beginning 
azuki: "gamedir" already exists, except the command is called "game" in fitzquake. Interpolation will be in the next version.

Willem: +mlook should be saved automatically, but the others you need to add to your config. I should probably do a review of the cvars to decide which ones ought to be saved, but since many players maintain their own config anyway, this doesn't seem very urgent. 
can i get an opinion from anyone who normally uses -dinput about how the mouse control feels in this port? Since obviously, SDL doesn't have directinput. 
It was always this way (ie. not a bug to this engine version) - +mlook was fixed in recent engines.

Another thing to mention is mods; adding a cfg to your mod directory with

exec ..\id1\autoexec.cfg

As well as whatever mod specific options you want means you keep a base of cvars that you keep for all engines and mods, with external mod dir's having their own, as needed.

I should shut up and try the engine :P 
and other cvars talked about above. Definitely not saved, need to be in autoexece.cfg even for normal fitz. 
Model Interpolation 
Actually, I think there are a few people that don't like it because the animation starts looking a bit weird and some of us are so used to those anims it's like playing street fighter or something - you know all the timings and stuff.

Still, it's a good feature to add, but I hope it's a cvar.

Personally I am really hoping for mp3/ or ogg playback so I can get the Quake soundtrack back without needing a cd in the drive all the time ;) 
model interpolation should be a must :)

anyway, it is usually a cvar.

And I second the mp3/ogg thing. 
Are You Guys Sure About +mlook? 
i just ran sleepwalkr's port, and afterwards looked at config.cfg, and +mlook is definitely there. 
doesnt stay on for me without auoexec.cfg 
can you confirm whether it's at least saved to your config.cfg? If not, is your config.cfg writable?

And, just to check, are you running in windows? 
windows here.

only entries showing up in config.cfg for mlook are :

bind "\" "+mlook"
bind "MOUSE3" "+mlook" 
Oh And Config.cfg 
is writable 
that's really strange... fitzquake starting with version 0.80 should add +mlook at the very end of the file, right after "vid_restart", when you quit.

The only way i could see it not happening is if you always start the game in id1, and then use the game command to load a mod, and then quit (since the config.cfg will be written to the mod dir in that circumstance, but the next time you load the game in id1, it will read id1/config.cfg)

But surely you sometimes start and exit the game without leaving id1. 
never used the game command in game, always use it in the command line when I want to use it. 
"Actually, I think there are a few people that don't like it because the animation starts looking a bit weird and some of us are so used to those anims it's like playing street fighter or something - you know all the timings and stuff.

Still, it's a good feature to add, but I hope it's a cvar. "

I agree entirely. I would want the option to turn it off. I like the chunky animations. 
i'd call it 'jerky' :P

i was very used to the original animation by the time nehahra was released, but after first seeing interpolation in that i thought 'damn that looks fucking awesome' and haven't really looked back since. i can't play without it now! 
So All You Mac Users Go And Play 
The Hand That Feeds You. With coloured lights.

;-P :D 
RE: Interpolation: 
I started adding it in fitzquake mainly to satisfy other users. I'm one of the people that was accustomed to the 10hz animations, and when I saw interpolation in engines, I didn't like it. A small part might have been the unfamiliarity, but a larger part for me was the situations where the interpolation fails miserably, such as NG muzzleflash sliding back and forth, the "spinning" torches, the SNG collapsing onto itself when you stop firing and it tries to turn 180 degrees in a single frame, muzzle flares when monsters/players shoot at you, etc.

But, in the process of implementing it in fitzquake, I inserted various small hacks to address these problems. I think it looks pretty respectable now. So it's a feature I will probably use myself from now on.

There are still some subtle issues that are inherent to linear interpolation which could only be improved with something like bezier interpolation, and only solved with skeletal animation.

There are also issues related to the fact that you always end up getting the next frame from the server later than you like. As a result, all engines that I've seen (including fitzquake) end up animating things 50ms late when interpolating. Since this is most important when someone is shooting, and shooting is one of the places where i automatically disable lerping, it's not actually a big deal. But an ideal engine design would involve the server sending the next frame as well as the current frame, so the client knows what to lerp towards. 
and you're sure that all your other settings are getting written to id1/config.cfg? The "Last Modified Date" on the file is recent, the "vid_restart" is there down at the bottom, etc?

If so, i'm stumped... I don't see how a different configuration, hardware, OS version, etc. could have any effect on this. :( 
Shift Key, Wasd 
Nice ;>. I have some bugs..

* Can't bind mouse keys in the controls menu (though the default mouse keys - fire, forward - work fine).

* The shift key (run) gives problems. (After setting up wasd in the controls menu) holding shift, then pressing any of the custom wasd movement keys... there's no movement. Without shift, they're fine. Funny, cause there's no problem with shift+any_cursor_key.

Also... press and hold w (moves forward) press and hold shift (runs forward) release w (continues to walk forward!, even after releasing shift)

* resize screen with minus key, after a couple of sizes, it goes blank (but this feature sucks anyway)

Fedora7, SDL-1.2.12-1.fc7, xorg-x11-apps-7.1-4.fc7, linux-2.6.23, usb mouse ,

Will try compiling from source and check things out. 
How do you compile it ? 
Unless someone makes a makefile you will need
Codeblocks should be able to export a makefile however I could not find the option to do so. 
Nice work! Any work on Linux Quake clients is very much appreciated. 
.. Installing wxWidgets-2.8.7 and codeblocks-8.02 wasn't too hard. (I'm suprised by the codeblocks IDE - It looks great). The project now compiles nicely though i still have the bugs. Spent a while trying to export a makefile too, without luck. 
why would fitzquake be switched to sdl? 
Meant To Report 
Spent a while trying to export a makefile too, without luck.

back to Spirit the same thing from my end. It imports and exports windows project files without any problems as well as .dev files from that other IDE built around lcc, but no make files. 
"The main goal of this version is to allow Fitzquake to run on all major platforms." 
What bugs were those again? 
I can't get it to run on Gutsy despite having all libsdl stuff installed apparently. Clicking the executable doesn't do anything. What am I missing? 
Try starting it in a terminal, maybe there is some error message (not likely but worth a try).
./fitzquake in the quake directory. 
"permission denied" 
chmod 777 fitzquake (or chmod +x) helped. 
Just the bugs i posted above - Custom movement keys (wasd) dont work with the shift key and I can't bind mouse buttons in the menu. It's a bummer for me.

Thanks again for porting this engine. It's a shame linux is such a bitch to learn. Hopefully i'll get some inspiration to look at the code in my hols. 
Those bugs are already fixed and I'm working on networking. Once that's done, I'll release another beta. 
How do you compile it ?

You steal a makefile from Tyrquake or something and adapt it.

"You will adapt to service us." :-P

An observation: If it uses SDL for rendering (and sound?) then it should be able to use all of SDL's video drivers. In case someone didn't know this, it's possible to select SDL's video output by exporting an SDL_VIDEODRIVER (or something) environment variable. Should be in the manpage.

X11, framebuffer console, ... it should even run on embedded devices.

Is that the case, sleepwalkR? 
As far as I know, yeah, it should be able to run on whatever device is supported as a target by your C compiler and SDL.

It uses SDL for rendering, sound, input and TCP networking. 
Generating Makefile Not 
codeblocks-8.02::compilergcc.cpp -

"This functionality has been temporarily removed from Code::Blocks."
"With all the updates from the last couple of months, the makefile exporter"
"is not anymore in-sync with the rest of the build
"We are sorry for the inconvenience..."


I tried hacking codeblocks to at least call the makefile generator.

And it does generate a makefile, but it's busted ;< The makefile i got includes rules for dependancy files, (eg cd_sdl.d), but no rule for building the objects (cd_sdl.o). After a little TLC i did get it linking the objects
into a binary though. I'm no "make" guru. 
Fitzquake just killed my xserver. I was switching to tty2 to kill some musicplayer. It worked fine for two times, then I wanted to kill it properly (because I killed only child processes earlier...) and ctrl-alt-f2 resulted in the xserver crashing. :( 
And now it reset color settings in the middle of a map with no way to set them again. gamma was at 0.7 but displayed as 1.0. Brightness slider did nothing. 
Has anyone taken benchmarks on SDL Fitzquake and GL Fitzquake? If there's a loss of efficiency in SDL it would probably be better just to add some system-dependent code to the original Fitzquake source so it retains system-independence without having to run calls to the OpenGL libraries via the SDL ones. 
Spirit, Jengle 
first problem sounds like a bug in sdl to me. I have no idea about the second problem. I'll see about it, but it also sounds like a problem outside of the fq code, like some event reset hw gamma. Odd.

I haven't benchmarked since it runs good enough for me. If someone wants to do it though, make sure to post the results here. 
Just Tried 
1280x1024x32 on Pentium-M 1.2GHz, GeForce 6600GT with those NGO? drivers.

Fitzquake080.exe: 430fps
SDL Fitzquake.exe: 300fps
aguirRe's glquake: 400fps
Joequake (gl): 150fps
Darkplaces (music disabled): 250fps
Tomazquake: 250fps
Qrack: refuses to run with "Couldn't set fullscreen DIB mode"

I'd say even though the SDL Fitzquake is a bit slower it still is more than fast enough. 
Launching Qrack without arguments worked, heh.

Qrack: 400fps 
Some More 
Tremor: 150fps
Tyrquake (gl): 400fps 
@ jengle: yeah, in principle I don't understand why you would need SDL to run a crossplatform quake client either. But I'm happy enough about SDL fitzquake so let's just not ask stupid questions :-)

SDL bugs are quite possible btw, it's happened before. This is also one of the drawbacks of using it. It's an additional layer of possible bugs. 
Well, for once, it's easier and you can port it to more platforms. There wouldn't be a working linux version if I hadn't used SDL, since I'm not interested in maintaining one. Esp. the sound code is much easier to do in a portable way with SDL I think.

Spirit, interesting numbers. The lower performance of the SDL port could be due to a number of reasons: different compiler that doesn't optimize for windows as well as VC does, routing calls through SDL, and maybe I haven't gotten the game loop right yet. It may very well be capped due to poor timer resolution or whatever. I'm not an expert at these things :-)

Oh, and btw if you can reproduce any of the bugs you mentioned before, be sure to let me know how so that I can maybe fix them (if it's indeed in my code). 
SDL ... 
... is a pretty good API. id software use it for the Linux versions of Quake 4, etc. Imho you'll encounter many more problems with poor drivers than with SDL. 
Reproducable (at least for me, Linux):
-Launch Fitzquake
-Switch to other game via game (I tried Quoth and Marcher)
-Load any map (I tried quoth's startmap and marcher)
Bug submited by Spirit is also reproducable for me (Linux). 
Don't Replace Directx Version Yet 
The movement key bugs are apparent after about 5 seconds of playing when the guy moves in totally wrong directions. I use shift for jump. 
The shift problem is already fixed in the code. I just have to release it - sorry it's taking so long. I have to test the networking code a bit more before I can release a new beta. 
My "toggle r_showtris" bind causes the screen to be filled with the brown hud/viewsize texture. The only way to make the screen visible again was to delete the config.

Binding the mouse buttons doesn't work for me in the customize controls menu. Had to do it in the console. 
Fitz And External Textures 
is this the current 'complaining on fitzquake' thread?

external PCX textures are broken

instead of

the lack of alpha chanel support on tga (which is the whole point of having tga) is also
upsetting :(



tested to work in DP, tomazquake, joequake and bengt`s glquake 
putting pcxs in pak files or save tgas in different image programs and you'll find that external textures (like so many other features) are broken in several engines.

Upside down texes, immediate crashes or psychedelic palettes are common.

I didn't know about the alpha loss, though. In what way is that used on bsp texes? 
only few engines read from paks so its not worth doing.
"alpha loss" is just a lack of alpha chan support I gueess, not a bug just an absence of a usefull feature

pcx is clearly a bug, since this works in all the engines that support pcx but broken in fitz
( I think i had told metl about it few years ago...) 
Pak File 
handling is an integrated part of the engine and when any resource can't be loaded from inside a pak or in proper priority order, it's a major bug.

As for alpha, I think I currently only use it for sprites and menu items. Since Fitz only handles external bsp texes, I think the alpha channel is loaded, but not used. 
The pcx file included in my enginetest map does load fine in Fitzquake. JPL made it. I am still very sure it is some kind of version/subformat thing. 
just try a non-square PCX, like 256x128 
thanks for the report. It was a simple fix, and your post about "non-square" files made it easy to find.

Regarding the pak file thing, i think it works, but never tested it and nobody seems to use pak files for replacement textures... 
I used them in warp to replace the monster skins, just for the convenience of the format.

My idea was was that they could be copied out to other folders easily.

FYIO, not trying to be a cunt. 
Claiming That 
"noone" puts replacement textures in pak files is a ridiculous excuse, "they" definitely do and in any case, it's broken in Fitz if you just took the time to actually test it. 
Excuse For What? 
if it's broken, that's good to know. 
The Linux Q1 how-to has had an update:

It links to ... so please try not to kill this URL. Updating the How-to isn't always in my control %< 
Alright, will do! 
Distrans' latest map
crashes my box, just after the intro fininshes. Seems sound related, as "-nosound" is fine.
Hoping for a new beta post sometime ;> 
It works very fine for me. I am using "fitzquake -sndspeed 48000 -heapsize 128000" as default.
Maybe you didn't increase the heapsize?

Making the console log to the shell the game was spawned from would be so helpful for these things. *nudges Sleepwalkr* 
It Seems That 
fog is broken
density can only be 0 or 1 for me, values <1 are treated as 0. Could be an driver issue maybe (no idea) so someone please try and confirm. 
How can I test this fog problem? Dammit, I guess I'll have to finish the network code sooner or later and release it. 
load a random map and type this in the console:
fog 1 1 1
White thick fog should appear. Now type
fog 0.9 1 1 1
The fog should be a bit less thick (density). At the moment it disappears completely. 
fog 1 1 1 1
for the first one of course, not only three 1s. 
> It works very fine for me. I am using "fitzquake -sndspeed 48000 -heapsize 128000"

Hmmm.. Thanks. Works here too.

I think i nag too much, but... I'd like to see engine authors increase the defaults on these f-ing hard coded memory sizes, especially pro engines like Fitz.

Played out dis_sp6 last night. No probs.. 
I compiled it on Debian Etch using SDL 1.2.11. Sound has a high frequency crackle.

Card is Realtek ALC885 chipset using ALSA with snd-hda-intel driver.

Problem is present at -sndspeed 11025.
Using -sndspeed 44100 makes it more noticable.
With -sndspeed 48000 it becomes so subtle you wouldn't notice it if you weren't listening for it, the only cue you get is an occasional slowdown.

Respect for the port, the sound actually works on this one which is much better than the weird hacks you have to do to get the OSS mmap() thing to work with ALSA. 
I noticed the same, but thought it was fine with sndspeed 48000. I'm not sure how to fix it or whether it is a bug in the quake code and not SDL. Since I'm not a Linux user and have limited time, I will probably not fix this problem. 
SpleepwalkR, can you see if your IDE (assuming you're using such a thing) has the option to output a simple Makefile for the Linux version instead of its project file?

Those of us that simply use gcc in a terminal to compile their stuff would surely benefit. The project file isn't too useful here.

To see what a Makefile looks like, just look at the Joequake or Tyrquake source or whatever. :-)

I'm sure I'm not the only one who would be grateful. 
And if you don't want to make a makefile (who would!) just provide a gcc command to compile the whole thing. 
If inertia was a program he would be a open-source nag-screen.

I am eternally grateful for Sleepwalkr doing this hard work. The programming IDE he uses (Codeblocks) happens to be open-source and free. So, if you want to play with the code, why not use that. Or find the gcc command yourself, you leet FOSS haxx0r. You can only profit from learning new stuff.

gp: I tried when this was new and I think there either was no such function or it was not working. At least I did not manage to get any makefile. 
Gb, Inert: 
presumably he uses xcode, which is free. so you could download that. 
codeblocks? i take it back, then. 
Don't Take It Back, Just Rephrase It 
presumably he uses codeblocks, which is free. so you could download that. 
See posts #40 - #56 for about compiling the thing. ...And I realised the other day that fitz is the only engine to chew up a miserly 20% cpu. Cool. 
Really, folks, I'm just doing this because I want a decent engine for OS X. The linux version is just a byproduct, which is why I'm not going to be overly motivated to dig around CodeBlocks or whatever to generate makefiles. As Spirit pointed out, CB is free and you can try yourself. 
Just Wondering... 
is the performance supposed to be not as good when running this version on mac leopard vs regular glquake on win xp? 
In my experience there's a loss of around 10-30% with SDL. And XP is possibly the most optimised PC gaming OS ever, so Mac will be behind at least a little extra here. 
I've been using this version of fitz in windows for all my betas and haven't noticed any problems - if anything does crop up I'll post. 
That's Cool 
i wasn't complaining, i just wanted to check if there was something i was doing wrong. :) 
New Beta Release 
I have just released a new beta of the engine. It fixes lots of bugs and has TCP networking through SDL_net.

Grab it at 
No News 
- is good news. Works nicely here :> 
glad to hear that 
Lots of improvements and fixes... Evrything works like a charm now on Mac Osx!

But... The engine doesn't allow to set the command key to strafe right, as I'm used to(strange choice, I know). So I'm stuck with only left strafe. And this sucks.

Any ideas of a workaround?

Great, great job, though, keep it up!
Could be that this is because the command key is basically unknown to Quake. I'll try and fix this, silent. 
Thanks A Lot, Sleepwalker... 
...But I seem to remember that previous versions allowed this.
Mac osx Fruitz of Dojo's GL and Darkplaces allow it too...

Hope this is useful.

Thaks again for all your work.. 
I Don't Think There Is A Fitzquake So I'll Post It Here 
I suggest a little fix to the game/gamedir command:
If rogue or hipnotic are chosen make sure to apply the stuff for the correct HUD drawing. 
good point, i'm planning to do that actually (since i believe that's how it works if you do -game hipnotic or -game rogue) 
Sdl_net, Freebsd 
Hmmm, I had to change SDL_net/SDL_net.h to SDL/SDL_net.h to get it to compile.

... Will this run on FreeBSD if i can install codeblocks ? Installed FreeBSD 7 this week and am just curious... in a sadistic sort of way. If anyone can say a good thing about FreeBSD (apart from the "security" myth) i'll give it a go. 
I'm pretty confident that it will run on BSD, provided there are SDL binaries and appropriate drivers for that platform. 
There are two or three (very simple) functions in platform.h and pl_<platform>.c that you need to reimplement for your OS. But those functions are really really simple. 
I'd be willing to lend a hand. A BSD port would be nice. 
-rogue and -hipnotic, not -game xxx. A weird and confusing decision by the engine coders back then. 
And What About 
-game quoth
so the extra weapons show up too...
so you don't have to add -hipnotic to the cmdline? I thought that was the original idea spirit... 
-hipnotic And -rogue 
The reason those two commands are different is because they do more than just select the mod directory - they also alter the HUD to display the new weapons. This lets you combine them with a different mod directory, which is why the recommended quoth command line is -hipnotic -game quoth. An option -quoth which combined those two commands would be nice, but I personally wouldn't feel the need to request it. 
No I Mean 
when you change gamedir to quoth it could load the extra hud...
so you wouldn't have to have a diff shortcut for quoth. 
A -quoth to combine those two is definitely something that should be added to new engines. Seeing how there are releases that come in their own folder yet use Quoth (eg Warpspasm). AguirRe's engines and I think Darkplaces already support it. Or allow multiple gamedirs. :) 
And what bambuz said.
Pretty much no-one knows about the "-game"-less -rogue and -hipnotic so it would be nice to have the engine recognise those certain gamedirs no matter how they were chosen (-game, game, gamedir). 
I'll give it a go. 
Let me know if you need any help. I'll set up a FreeBSD VM. 
You did a great job.. And SDL is awesome. Took me a few hours to install wxWidgets and codeblocks - just dependancies and stupid little things really. SDL-fitzquake compiled as soon as i disabled warnings. ;> Sound, video mode switching, "-game travail", and game saves all seem fine.

It benched faster in FreeBSD than Linux too. (~Perhaps~ it's the different nvidia driver version - My BSD has a much newer one). Timedemo demo1 was 376 fps versus 326 fps at 800x600x16, FX5600, Sempron 3400+. 
It would be awesome if we could include your changes into SVN and provide a FreeBSD binary for everyone. Did you create a new project for FreeBSD or did you just use the Linux project? 
I didn't make any changes 8>, just opened the Linux project, disabled warnings, and built the release target. First-up I did copy the pl_linux to pl_freebsd.. though whether this was necessary, i'd have to check. 
Some Benches 
timedemo demo1
machine amd 2300BE (2x 1,9 Ghz), nvidia 7200gs 256
Ubuntu 8.04

1280x1024 32bpp

wine sdlfitzquake: 130 fps
no vsync no refreshrate adjustment

wine fitzquake 080: 93 fps
refreshrate adjustment possible no vsync

linuxsdlfitzquake: about 90, no fullscreen at desktop resolution, no vsync, no refreshrate adjustment 
Wow - that is not what I would have expected at all. And there's no vsync at all no matter what you try on that machine? That's odd. Does it work in other games? 
Vsync only by forcing it via nvidia-settings manager.
Haven't installed other games.
wine version is 1.0 
If you intend to distribute SDLFitz for FBSD, for the love of god, make a port (as in, a package for the FreeBSD ports system) and submit it upstream instead of distributing it in binary form. 
Those Are Some Funny Results 
The 7200gs might be the culprit?

Pentium-M 1.2GHz, Geforce 6600GT, 173. driver
All 1280x1024x32

wine fitzquake080.exe: ~225 (had to run in window)
wine sdlfitzquake.exe: ~175
fitzquake (sdl): ~350 
that sounds more like it, Spirit. I get about 300 fps in OS X.

Jago: I'm not making any ports myself, since I don't have much interest in anything else than the OS X port. But if you want to do it, let me know what you need. 
No These Results Are Not Funny 
the 7200gs is a 64 bit low end card, You can't compare it with a 6600gt.

with a 6000+ and a 8500gt I got at least three times faster results, but wine is always 25% faster than the linux version.

Same thing with quake4,Doom3,Prey
1152x864 high, 8500gt
quake4.x86 40fps
quake4.exe 55fps 
Nvidia Performance Gotcha 
Don't know if anyone else had this issue... but looking at benchmarks this week i found i had a bit of a slow-down (50%). The problem was NvAGP is set in xorg.conf, but it isn't working at top speed because AGPGART is already loaded by the kernel - see /usr/share/doc/NVIDIA_GLX-1.0/README.txt
With Nvidia's proprietry drivers installed, Linux can use either AGPGART or NvAGP drivers for AGP access. This option is set by "NvAGP" in your /etc/X11/xorg.conf file.
In the author's experience, NvAGP is necessary in order to get the linux kernel's suspend to ram working properly, and is also slightly faster. Users with kernels with built-in AGPGART need to add agp=off to their boot loader in order to use the NvAGP driver. 
ok I need a bit of help here. The engine looks great but I have a problem with the monster animations: they look "off", jerky, slowmo-like. I'd be grate if someone can tell me if there is a command to revert the animations to standard quake. This is killing the game to me. Thanks 
That jerkyness IS original quake.
Fitzquake currently does not support animation interpolation. Most (all?) implementations feature some occasional wobbling.
You might want to try Joequake if you need "smooth" animations. 
Ready The Lynch Mob.... 
Animation Interploation 
Preach hacked this into FitzQuake (see that thread for details) 
AguirRe Quake 
Can be found at;

And has model interpolation.

Remember this is an old game. 
Well Thanks For The Info 
Well, thanks for the info! It has been a long time since I played vanilla quake and I didn't remember the jerkyness. Ijed, thanks for the link but I already know, and abitually use, that engine :) 
Have you seen/heard/thought about Fitz-0.85 ? 
Hey. Just tried to compile the newest release using code::blocks, in Quake/net_sdlnet.c you check if the preprocessor symbol LINUX is defined. That symbol isn't defined anywhere so the check will always be false and the Windows SDL_net path will be included instead. (sorry if you already fixed this)

As usual, the engine is sexy as hell except for the sound thing :p 
Yeah, but as there are plans to merge Fitz and FitzSDL, I won't make many more changes to FitzSDL.

amoe: Okay, do you know which symbal I can use to detect Linux reliably on all distros? It seems to work on Ubuntu. 
Finding Out What System You're On 
SYSNAME := $(shell uname -s)

ifneq (,$(findstring MINGW32,$(SYSNAME)))
TOPDIR := $(shell pwd -W)
ifneq (,$(findstring $(SYSNAME),FreeBSD NetBSD OpenBSD))
UNIX = bsd
TOPDIR := $(shell pwd)
ifneq (,$(findstring $(SYSNAME),Linux))
UNIX = linux
#UNIX = null
TOPDIR := $(shell pwd)
$(error OS type not detected.)

The 'uname -s' is the key here.

I just took that from Tyrquake's Makefile; does it help somehow? If not, I apologize and go back into my corner. 
uname -s returns "Linux" (sic) and I'm on Gentoo. 
I'd have to use a makefile first :-). But thanks anyway, maybe it'll help later. 
Get It.. 
I really should have a go at getting a makefile together. Not doing much this weekend, so might get it done. 
Makefile, Amd64, Bsd 
Anyway, here's a makefile for fitzquake_sdl_20080705_src. It works for me on fedora 7 , fedora 6 (amd64 -m32), and kindof on FreeBSD. I enjoyed getting my hands dirty with shitty GNU make ;>, though it is a pig. There's a few instructions at the start of the Makefile.

For future releases, there are quite a few little issues with include headers which should probably be sorted out. At the moment, quakedef.h references SDL/SDL.h and net_sdlnet.c refs SDL_net.h *if* -DLINUX.. but they should probably be in the same place.

Building a native 64 bit client works, but dumps core for me:

#0 0x00000000004328d5 in TexMgr_ReloadImage (glt=0x2aaaabb1b3d0, shirt=32,
pants=208) at gl_texmgr.c:1246
1246 *dst++ = translation[*src++];
(gdb) bt
#0 0x00000000004328d5 in TexMgr_ReloadImage (glt=0x2aaaabb1b3d0, shirt=32,
pants=208) at gl_texmgr.c:1246
#1 0x000000000040eb53 in R_TranslatePlayerSkin (playernum=0) at
#2 0x000000000040ecee in R_TranslateNewPlayerSkin (playernum=0) at
#3 0x000000000042de3a in CL_ParseUpdate (bits=78) at cl_parse.c:412
#4 0x000000000042e9d2 in CL_ParseServerMessage () at cl_parse.c:760
#5 0x000000000042500c in CL_ReadFromServer () at cl_main.c:588
#6 0x00000000004085eb in _Host_Frame (time=0.00600000005) at host.c:689
#7 0x00000000004087a7 in Host_Frame (time=0.00600000005) at host.c:737
#8 0x000000000042684b in main (argc=1, argv=0x7fff85902ed8) at main.c:136

Under freebsd, for some reason it dumps core without "-nosound", though the codeblocks binary has no problems at all %/ (except lots of trivial include hassles as SDL and GL are in *f-ing* /usr/local by default). I tried messing the the thread flags "sdl-config --cflags" returns, to no avail.

FreeBSD-7.0 bad sound backtrace (my Makefile only)
Bad system call: 12 (core dumped)
0 0x284bd86b in ksem_init () from /lib/
#1 0x284b3229 in sem_init () from /lib/
#2 0x28465d80 in SDL_CreateSemaphore (initial_value=0) at ./src/thread/pthread/SDL_syssem.c:47
#3 0x2841e722 in SDL_CreateThread (fn=0x28415f90 <SDL_RunAudio>, data=0x2ba20180)
at ./src/thread/SDL_thread.c:235
#4 0x28415a6a in SDL_OpenAudio (desired=0xbfbfe790, obtained=0xbfbfe778)
at ./src/audio/SDL_audio.c:555
#5 0x08093b08 in SNDDMA_Init () at snd_sdl.c:64 
is the problem with GNU make? 
Enforcing the use of tabs instead of spaces is very cobol-ish. And having to learn a whole scripting language for a specific task is a pain.

Makefiles are pretty cool though. Minor update here: 
Does anyone know if FitzQuake takes advantage of an arbitrary number of TMUs, or if its behavior regarding them is configurable? 
Not Really... 
fitzquake uses 2 texture units if it detects the sgis_multitexture or arb_multitexture extensions, and if not it only uses 1 texture unit.

rewriting the codepaths to use an arbitrary number would be cool, but would take some redesign of the rendering to keep it from being a crazy mess of special cases. There are already like 4-6 codepaths in some spots :P 
Woooohooo! Thanks for the Makefile! [: 
*nix Command Line 
I had a go at making a command-line parser for *nix versions of Hammer of Thyrion (Hexen2). It could probably be ported to any Linux version of Quake with a little effort. There's more notes in this tarball, but basically it catches mis-spelt options, allows for "+map e1m1" type args, and prints a comprehensive help message (listing all options) when desired. 
I'm Probably Just Daft 
I compiled it via codeblocks (ubuntu linux)
made sure to open build options and put LINUX in the #defines

I dloaded the shareware version of quake. from a dosgames site. and just put the executable in the same dir as QUAKE.EXE
it didn't want load anything at first so I ran a cmd to lowercase every file and directory.
it then found the id1/pak0.pak file and tried loading stuff out of it but spewed out a huge list of "cannot load textures/x.duh" and then seg faults
and I don't get my mouse back either so I have to ctrl-alt-backspace X
I think I've run into some sort of upper/lowercase monster that I'm sure someone has already solved.

./fitzquake -nosound -heapsize 512000 -window

heapsize I'm sure is overkill (I tried default still seg's)
any ideas? 
Could You 
give me the link to where you dled that shareware quake version? 
I ended up dloading tyrquake and compiling that.
it worked out really well.
That's the link to the shareware site. Was playing it in dosbox :) 
Few Notes 
I actually got fitzquake to load up but I have to remove the .dem files so the engine doesn't start right away. as soon as I attempt a New game or a demo runs it falls over. I'd rather use fitzquake(SDL ver) than tyrquake since I dev SDL stuff cross platform and I'm looking to learn more about building/designing 3D engines and fitzquake seems a perfect place to start.

Cheers, xpatch 
I'll have a look, thanks for the link. 
mouse aiming suddenly does not seem to work correctly in 1152x864. switched to 1280x1024 then it worked. 
after switching to 1280x1024 the hud disappeared and then it suddenly crashed to desktop. And the mouse on Desktop did not work XD 
hmm seems to be a problem with fullscreen rez. Works perfect with -window.
gfx: 7200gs
Ubuntu 8.10
compiz disbled 
add to the readme that id1 and paks have to be lower case. 
So where do I go to read how to actually use the program? 
Exe: 16:04:11 Jul 5 2008 
I opened 4 fitz windows for fun on my new (dualcore) PC and let the demos run. 2 windows closed after a short time with "Cache_MakeLRU: active link". 
That's the same error people have seen on windows... once I get busy on Fitz .85, I'll try to track that one down. 
Totally the same error I have - a bit annoying with the random crashes (runs fine otherwise). 
0.85 Sound Fix 
Will there be a binary for code-clueless people like me?

As noted in the Roman Wilderness thread, removing -sndspeed 44100 from my commandline seemed to make the crash go away. 
Played some more this morning. My fix doesn't seem to cut it *&^%! Removing "-sndspeed 44100" also borked once. Playing with both fixes i couldn't break it. .. Encouraging.

Sorry, but i can't make mac binaries, and it needs some testing anyway. 
You only need -sndspeed 44100 for mods/games that have 44100 Hz sounds, which to my knowledge aren't many (Nexuiz and RMQ and ???)

The fix seems to have a positive effect, I played for half an hour or so and restarted the engine a couple times too, and got no more of the Cache_makeLRU errors.

I got a segfault once, but those occur a lot more rarely. The LRU error was the bigger problem. I'll post if it does occur again :)

I did use -sndspeed 44100. 
-sndspeed 44100 only works for the sdl version? 
O_o really?

Most engines should support that. 
yeah, i tried to hack it into fitzquake but it kept crashing. :P 
tbh, i don't really care that much for 44khz because without some kind of support for a compressed format (like ogg, for example) if you're dumping 44khz pcm sounds in your pak file, the size can be unwieldy. 
Running with strace, the latest segfault produced this:

You got the nailgun
no weapon.
You get 1 rocket
FoundTarget: monster_wizard @ '-1792.0 -1376.0 -144.0' with spawnflags 1
HuntTarget: monster_wizard
You got armor
FoundTarget: monster_ogre @ '-1712.8 -937.6 -232.0' with spawnflags 0
HuntTarget: monster_ogre
You got armor
You got armor
You got armor
You got armor
FoundTarget: monster_zombie @ '-1851.8 -1188.8 -424.0' with spawnflags 0
HuntTarget: monster_zombie
FoundTarget: monster_zombie @ '-1870.1 -1235.9 -424.0' with spawnflags 0
HuntTarget: monster_zombie
FoundTarget: monster_zombie @ '-1884.7 -1155.1 -424.0' with spawnflags 0
HuntTarget: monster_zombie
FoundTarget: monster_wizard @ '-1957.6 -1054.0 -205.6' with spawnflags 1
HuntTarget: monster_wizard
FoundTarget: monster_ogre @ '-1993.7 -992.4 -232.0' with spawnflags 0
HuntTarget: monster_ogre
FoundTarget: monster_ogre @ '-1954.6 -1003.6 -232.0' with spawnflags 0
HuntTarget: monster_ogre
FoundTarget: monster_ogre @ '-1970.3 -986.7 -232.0' with spawnflags 0
HuntTarget: monster_ogre
HuntTarget: monster_wizard
FoundTarget: monster_zombie @ '-2102.1 -1495.4 -424.0' with spawnflags 0
HuntTarget: monster_zombie
]sky atsea_
FindFile: ./svn/gfx/env/atsea_rt.tga
FindFile: ./svn/gfx/env/atsea_bk.tga
FindFile: ./svn/gfx/env/atsea_lf.tga
FindFile: ./svn/gfx/env/atsea_ft.tga
FindFile: ./svn/gfx/env/atsea_up.tga
FindFile: ./svn/gfx/env/atsea_dn.tga
FoundTarget: monster_zombie @ '-2151.6 -1633.0 -424.0' with spawnflags 0
HuntTarget: monster_zombie
You receive 14 health
You got the nails
You got the shells
Warning: 1058 byte packet exceeds standard limit of 1024.
You got armor
[{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV}], 0) = 25635
fstat64(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8061000
write(2, "/home/*****/bin/rmq: line 4: 2563"..., 222/home/*****/bin/rmq: line 4: 25635 Segmentation fault ./fitzsdl_fix -w -window -width 640 -height 480 -heapsize 128000 -mem 128 -sndspeed 44100 +csqc_progname blah +sv_cheats 1 +developer 1 -game svn +skill 2 +map $1
) = 222
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, 0xbf965b58, WNOHANG) = -1 ECHILD (No child processes)
sigreturn() = ? (mask now [])
rt_sigaction(SIGINT, {SIG_DFL, [], 0}, {0x8080ff5, [], 0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
read(255, "\n#./tyrquake.59 -width 400 -heigh"..., 389) = 166
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
read(255, ""..., 389) = 0
exit_group(139) = ?

and I'm like, OOOOO KKKKKKK ......

what's that about the packet size? 
OK, I got a core dump with the debugging version.

This is what gdb says about the crash:

Core was generated by `./fitzsdl_fix -w -window -width 640 -height 480 -heapsize 128000 -mem 128 -snds'.
Program terminated with signal 11, Segmentation fault.
[New process 25978]
[New process 25979]
#0 0xb70a67b2 in ?? () from //usr//lib/opengl/nvidia/lib/
(gdb) where
#0 0xb70a67b2 in ?? () from //usr//lib/opengl/nvidia/lib/
#1 0x00000000 in ?? ()

It says "" there.

Helpfully, the binary NVIDIA libraries have no debugging symbols, hence it only shows ??(). Anyway. This points to a problem with the binary NVIDIA drivers, more exactly their which is only available in binary form (yay for closed source).

Are you sure that all OpenGL calls in Fitzquake are clean and proper? 
Cache_MakeLRU is back. Sigh. 
I think i might be on to the problem, or at least the main one. It looks like the problem ~is~ video... or at least not sound, and caused by
excess use of the Draw_BeginDisc proc when loading uncached entities. Comment it out and see how it goes.

--- common.c.orig 2010-01-01 14:12:17.000000000 +1000
+++ common.c 2010-01-01 14:03:53.000000000 +1000
@@ -1646,7 +1646,7 @@

((byte *)buf)[len] = 0;

- Draw_BeginDisc ();
+// Draw_BeginDisc ();
Sys_FileRead (h, buf, len);
COM_CloseFile (h);

And is this line ~misplaced~ (snd_dma.c, line 235) ?

- Con_Printf ("Sound sampling rate: %in", shm->speed);

It causes FreeBSD to crash immediately. 
Anyway, Oz recons about this problem -
Well, that particular snd_sdl implementation does have locking problems, it easily shows itself on multicore or smp systems. After a few seconds of running, I got the infamous Sys_Error message "Cache_MakeLRU: active link" .... The issue shows itself regardless of the snd_dma.c fix I gave you was actually applied. I believe the thread issues you see are actuallly due to that locking problems. In our uhexen2, all such locking problems are fixed and it requires several serious changes in the in the sound layer.
> multicore or smp systems. After a few seconds of running, I got the infamous Sys_Error message "Cache_MakeLRU:


Running two cores here. That could be it.

Ozkan has a point, it seems.

hexen2 to the rescue... seems to be a pattern...

Will see what the Draw_BeginDisc thing does when I'm fully awake... :) 
I need to stop using ">" for quoting outside of the trac. 
[Cache_MakeLRU] Running two cores here. That could be it.
I have a smp enabled C2D too, but have never seen the "Cache_MakeLRU" error. Perhaps the latest SDL builds have addressed the issue ?
Will see what the Draw_BeginDisc thing does
This fix has been great for me. Not a single crash :>. Oz mentioned he disabled the spinning disc in hexen2 ages ago... for some reason. 
Running libsdl 1.2.14. 
1.2.13 here 
And is this line ~misplaced~ (snd_dma.c, line 235) ?

- Con_Printf ("Sound sampling rate: %in", shm->speed);

It causes FreeBSD to crash immediately.

I can't really comment on that. Why is that loadas8bit stuff even necessary - has anybody ever used "-simsound" on the command line? I didn't even know that existed.

I would just comment out the -simsound check and the whole if(fakedma) thing. I would say that it is unnecessary.

Then I'd put the Con_Printf sound sampling rate into the -sndspeed check.

Sorry, can't really post code here, it always cuts off long lines soomehow and I don't know if there is a formatting option for code (i3d is a lot better in that regard).

Basically remove the parts where it checks for "-simsound" and remove the if (fakedma) parts and the whole crap that belongs to it.

Unless someone has a very good explanation why the check for -simsound is needed.

And for the love of the gods, use tabs instead of spaces. 
+// Draw_BeginDisc ();

still get MakeLRU. 
Might Fix It.. 
MakeLRU is a thread thing, and not the same problem i had. But... I just upgraded to SDL-1.2.14... played through 1 level and got my first MakeLRU error! Downgraded to 1.2.13... three levels, no problem. In the 1.2.14 changelog there's mention of some thread "fixes". 
the plot thickens... 
local/sdl 1.2.14-1
local/sdl_image 1.2.10-1
local/sdl_mixer 1.2.11-1
local/sdl_net 1.2.7-3
local/sdl_sound 1.0.3-2 
And Then... ... And ... Thenn..... 
So i guess libSDL is in /usr/local. Installing the previous version should be fairly simple.

Just download extract and
"./configure --prefix=/usr/local && make install"
This will install libSDL and the soft link, but shouldn't bother anything else. Type "ldconfig", run fitz and see how it goes. 
Anyway... I got a couple of MakeLRU errors playing Hrim's maps :< 
Oz and i have done some work on this.

Linux binary

Notable stuff:
o Restructured SDL sound driver
o Alt_Enter key binding toggles fullscreen
o Disable Draw_BeginDisc which causes core dumps when called excessively
o Remove argv[0] from stuffcmds (Cmd_StuffCmds_f)
o Lots of little hacks including minor changes to the status bar

Thanks to Oz for the sound code (ie. blame him :>). Could someone make an OSX binary ? 
I'll attempt a compile the next time I try to play Warpspasm coop and need my OS X machine ;) It'll probably be a few days.

Looking forward to trying this revision! 
Linux 64bit 
is it possible to get this compiled for 64bit linux? I would like to avoid installing the 32bit compatibility libs if possible 
someone said recently that fitzquake has places where pointers are treated as 32-bit ints, so i guess it won't work without fixing all of those bits of code. 
The latest version seems to work better.

A lot of compiler errors. 
fitzquake and darkplaces are the only clients that work perfect with my ATI850 Pro

thanks god I can play Quake...
thanks metlslime

but for speedruns i prefer Joequake :( but is not working at all... no speeddemos for me untill I get another grafic card...

And Im really thinking of getting another one just because of Quake! 
This is more what we had in mind. Oz coded 64 bit support, we made a custom conback, and windows fullscreen toggle now works.

Trinca, have you tried Quore (but it's linux only ;>). 
Quakespasm Looks Cool 
Two things:

1. Fitzgibbons

2. You can eliminate wasted space on the sides of the statusbar by setting "scr_sbaralpha" to "0.99" 
You can eliminate wasted space on the sides of the statusbar by setting "scr_sbaralpha" to "0.99"
Sweet. That makes the project almost feature complete for me. Might add a couple of menu items here and there sometime. 
Steven, Ozkan 
Could you fix Quakespasm to be able to connect to port 26001 (the RMQ server)?

Also, could you add the NAT fix?

Sure, Fitz is a singleplayer engine, but I believe a Quake engine that can't connect to a server is like a car that doesn't drive. 
Like In Friends 
"it's liike your all wayss stuck in second geeeeeaarrrr" 
I guess it's just the one-liner Baker pointed us to in general abuse. I applied it, and there's now some action. Is this right ? (linux i386 binary) 
I applied the cl_main.c NAT fix of proquake to our svn repo (r98). Connection to seems to work for me now. 
Folks, I feel rather stupid, because I think the problem might be on my side then...

I still can't connect to port 26001 with SVN quakespasm r99.

I tried:



and the multiplayer "join game" menu.

I get connected to port 26000 (RuneQuake) every time. Port 26001 should say "ReMakeQuake" after a successful connection. So the problem seems to be connecting to the right port.

I also tried:


after which the client hangs for a while, then says "Load failed".

I feel stupid because I can connect with DP, FTE and Proquake 360. I'm using Gentoo Linux, and have no firewall running.

Quakespasm is a rockin' engine of course. Which is why I think I might be making some stupid mistake. 
It works for me with r99, I don't have ReMakeQuake or RuneQuake installed though. I just go fetch whatever map is on from and i'm in with supa slow ping 350.

Connection accepted
Magic ProQuake Server Version 3.90
Using protocol 15
Model maps/rcdm10.bsp not found
Unknown command "pq_fullpitch"
Unknown command "cl_fullpitch"
&#65533;&#65533;&#65533; -zone 1024 &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;
Sending player bindings
Don't have the map?
Do you see this when connecting to

or this?

Because with no -game anything on the commandline, when I connect with Darkplaces I see the former, but with quakespasm, I see the latter.

Quakespasm does indeed connect, but a closer look tells me that I'm in Runequake (port 26000). It silently redirects me, so to speak.

You can determine what port you're connected to by the welcome message that pops up. That message is shown even if you have no mod installed.

If you see the ReMakeQuake message, then it works for you, but not for me. 
I get RuneQuake.. so somethings broken ?
It seems unlikely i should ReMakeQuake as i don't have the mod installed. Can i test it's working properly without download ReMakeQuake (which is 120M i think). I'll have a look at the source for something obvious. 
Something's broken, because Runequake runs on port 26000 while port 26001 has RemakeQuake. :)

And when you enter port 26001 but get dumped at Runequake, that's an error :-P

You don't need to install RMQ. You get that message also without installing the mod. Successful connection to port 26001 should give you the RemakeQuake message anyway.

I think when connecting to a server, it should check for the port number.

There is a cvar "port" - it should at least check for that and if the value is "26001" then it should also send its packets to port 26001.

If that code isn't there, you can probably rip it from Proquake or something :) 
Think I Found It... 
Change 26000 to net_hostport in net_sdlnet.c (binary) 
That did it! Great! 
Nice catch that one, Steve. Applied to svn r100. 
So... Anyone Feels Like Compiling A Binary For Mac OSX? 
...And, while we're at it, implement the mappability of the command key? 
Might have an OSX bin up this weekend.

Re the command key - I can't find any doco. I can't even get the windows key working, and the latest darkplaces svn doesn't even map it. 
Fruitz of Dojo's glquake maps it just fine. Can this be of any help?

Anyways, thanks a lot for the binary!!!! 
OSX Binary 
And an app bundle 
Not Properly Tasted? 
the icon is lickable. I will try a taste now 
Hmmm... No Command Key. 
...No use for me. 
QS Update 
No major changes really.. just bug-fixes.
We'll probably include proper home directory support (currently included as a patch) and ogg music playback, when someone can be arsed to do it.

windows linux source

* Replace the old "Screen size" slider with a "Scale" slider
* Don't constantly open and close condebug log
* Heap of C clean-ups
* Fix mapname sorting
* Alias the "mods" command to "games"
* Block/Unblock sound upon focus loss/gain
* NAT fix (networking protocol fix)
* SDLNet_ResolveHost bug-fix allowing connection to ports other than 26000
* sv_main.c (localmodels) Bumped array size from 5 to 6 in order for it to operate correctly with the raised limits of fitzquake-0.85
* Accept commandline options like "+connect ip:port"
* Add OSX Makefile (tested?) 
Oh Yes 
Great work! Especially the multiplayer improvements!

Thanks :) 
The OSX version runs pretty sweetly here. Would be good to get rid of the window bar for proper full screen, but other than that it seems nice. 
In quakespasm subversion, Oz has replaced SDL_net with OS dependent modules, and the dedicated feature *should* be working... Anyway, it works on my Sabayon OS, but Fedora 7 has an issue right now.

svn co

Does anyone know what needs to be fixed in the SDL_net driver ? 
Quakespasm + Command History 
I wrote a short "how to" on adding session to session command line history to an engine.

It's a 3.5 minute platform-neutral change even for SDL [if memory serves correctly].

I have long felt that session-to-session command line history was something all engines should have (but only JoeQuake + derivatives) had --- but now DarkPlaces and ezQuake has it too.

Anyway, if interested. I really like Quakespasn for single player play -- it is a very nice job. 
> Does anyone know what needs to be fixed in the SDL_net driver ?


Darkplaces has an SDL version. I usually look at DP when I'm in trouble. Dunno if it uses SDL_net though, haven't looked in that direction yet. 
and yeah, Quakespasm is a very good engine. Promising. 
I love FitzQuake 0.85 too of course, and I'd love to see command line history in there as well but I know the Quakespasm guys seem likely to make updates in the near future and I have an OS X machine. 
What's wrong with the SDL driver, I thought it was working now that the port issue was fixed? 
The "-dedicated" feature wasn't working. Oz says the SDL_net driver .. is .. kaput for servers, though i havent looked at it.

Thanks for the feature Baker. I cut the code from your tute and added it to svn. _Seems_ to work ok :> 
Guys, do you accept contributions, if so, do you prefer patches or are you willing to shell out SVN access? Also I'd like to include the sparkle framework in the OS X binary so that it can self-update, that would require putting an XML file somewhere on the QS website. 
Sounds fine. If you have a sourceforge account, you're welcome to svn and html access.. till you bork something anyway ;> 
My sourceforge account name is kristianduske - do you need anything else from me? I haven't used SF in a couple of years, so I don't know whether I have to apply or you simply add me. 
yes, I could just run windows Fitz, but I want to try this in ubunutu (10.10). However, I have no idea how to install and run it. If someone could tell me what I am doing wrong I would be very happy.

1. extract the fitzquake file from the linux executable on Sleep's homepage into my Quake directory.
2. double click or right click and select "open" the fitzquake file.

If I do this, I just get an error telling me there is no viewer for this type of file. This is puzzling because the file is listed as an executable in the file explorer in Ubuntu.

What do I need to do to run this thing? Can someone help? I'm going to try running it from the terminal, but I will probably fail :( 
My guess is you don't have the SDL dependencies on your system. Use Synaptic to install them (SDL and SDLnet). Running from the terminal might at least give you a warning message. 
The terminal is your friend. Take some to familiarise yourself with the basics. It will allow you to use the computer to its full potential. As negke said, the chance that you will get a proper error message is much better.

The file might not be executable even though ubuntu says so, I guess, don't really like ubuntu, it tries too hard to be user friendly and sacrifices the chance understanding the technical details. So rightclick the executable and make sure there is a checkbox that "allows the file to be run as executable".

I suggest you try quakespasm though. It is based on fitz 085 while sleepwalkr's is 080 which is quite outdated. 
When I say terminal, I mean Bash and the usual basic GNU coreutils. seems nice.

Most utils give a basic usage overview if you run them without argument, others want you to add --help or -h. 
Sounds like you just need to chmod it. 777 should normally be OK (are we worried about security of Quake engine executables for the world? 770 maybe if so? Or 700 if you really want to be paranoid...) 
I forgot to mention that SDL is installed properly. I can run sauerbraten just fine by running the script in its main dir. Quake on the other hand... no luck.

I'll try looking in the sauerbraten script to figure out what it does. 
No Luck, Still No Quake 
I tried using chmod on both fitz and quakespasm (thanks for the heads up btw!), but still got the same nonsense after using it (command not found)

I even tried building myself, and although I was able to build quakespasm no probs through Code::Blocks, I am not exactly sure the executable was running in the right place, because it exited immediately with an error. I changed the basedir in the program parameters in Code::Blocks to my Quake dir but still no luck.

Looked in the sauerbraten script and found exec, but exec quakespasm gives me a not found error too (exec exists :)

This makes me sad. 
seems all I needed to do was type ./quakespasm at the terminal... even though I was already in the Quake folder.

Apparently I am missing gfx.wad :( Works ok in Windows though. 
seems everything needs to be lowercase. Fixed that and now it works. Yay.

btw, if anyone has a listing of all files in a clean Quake install, I'd appreciate a copy (of the file listing) so that I can remove all the junk that has accumulated in the root quake folder over the years. 
To Answer My Own Question For Anyone Who Might Care: 
Running Quake in linux only requires the following files (probably the same in windows):

quakespasm (or other executable)
id1/pak2.pak (not sure if required but contains latest progs afaik)

plus you need SDL and SDL_NET installed.

To run, open a terminal window and type `<quakedir>/quakespasm`
However, before being allowed to run the file, you may need to use chmod as pointed out by mh. `chmod 777 quakespasm` should do the trick. 
You can avoid the "./" by putting the executable somewhere in your $PATH.

/usr/local/bin or something, or even ~/bin. Installing a Quake engine via package management should do this automatically.

echo $PATH will show you what your path is.

Hope I make sense, heh. 
You avoid the ./ problem by adding ./ to your path. This makes sense generally. Just open ~/.profile (or make a new one) and add

export PATH=.:$PATH

This way, whatever executable is in the current directory overrides shit that is elsewhere in the path, which is usually what you want anyway. 
works, too. Historically, */bin is where most executables are dumped. Multi-user system etc. 
So Than... 
You still think Win7 is overly complicated? 
I've spent less time dealing with shit in ubuntu than I did with Windows 7 so far.

Only time will tell which I want to use, but in general I kind of dislike the new windows and have found switching to the new interface (and the fact it's in Japanese and I cannot change this because somehow MS is the only company that can't implement sensible language selection in their OS and software and still has to sell a version specific to each region) a big load of hassle and time wasting. Not to mention the fact that I often feel locked out of my own computer because windows is trying to protect me from myself all the time. At least in ubuntu I can get around everything by just entering my password or running chmod. Windows 7 has a tool to set up a program whitelist, but afaik it's only available in enterprise and above.

I kind of admire Apple's one size fits all policy in some regards, but I know if I had a Mac I would get pissed off with it sooner or later. 
pak2.pak is not by id, I'd remove it. Maybe the ugly idgamma patch?

Yes, Linux's usual filesystems are case-sensitive.

"chmod +x" is a nicer "chmod 777" in my opinion. But as I said, you can access these things with a simple right-click (-> permissions) in Ubuntu.

You can use tab to autocomplete paths in the shell. You can press up to re-use previous comments. You can press CTRL-r and start typing to make it search your history.

I highly suggest not doing what SleepwalkR suggested.
Not only are you playing around with security, but his suggestion could lead to serious problems in the long run. He adds the current directory overriding everything else which is an incredible bad idea.

I suggest you simply learn to use ./ instead. It's not that hard. suggests /usr/local/games/quake/ , I do not know where it would look for the paks otherwise. I keep my Quake stuff in my home, it's much more convenient. If I must install "foreign" binaries system-wide I use /usr/local/bin/ . That way I know what is where. 
Thanks everyone for all the help. Seems to be running fine now. And I learned a few things on the journey.

pak2 was idgamma by the way. I renamed it and now Quake is dark as fuck, unfortunately :( Is there any other way to brighten the game up? the gamma slider doesn't seem to work at all.

For now I restored the pak2 file because I like being able to see the game. 
dont think I've removed it for years. I cant play quake without it. 
Shot Into The Blue 
I am not sure if quakespasm has a gamma slider. Did you mean the brightness one?

Make sure your monitor is calibrated! And if you still feel like you must, use the gamma variable (or is it a command?). Gamma 1 is good on my crt. Quake IS a dark game. 
does idgamma do anything besides change brightness? i've heard lots of talk about it but have always just used the gamma cvar. something between about 0.7-0.85 normally works 
the brightness slider works in quakespasm. and fitzquake too, afaik? 
Yes, but not necessarily on Linux. 
hmmm... i've never seen the gamma slider fail. Maybe X or SDL isn't set up somehow? Stab in the dark though. 
Interesting, SDL Fitz's brightness slider does the same like "gamma". I never knew. 
oh, sorry than, i didn't read the part where you said the slider doesn't work. :S 
Hey Guys! 
What slider now? 
frib's posted about this a few times, I find a difference in colour intensity as well as brightness. Quake looks washed out without it to me. 
does it work with the likes of quakespasm?

interested in trying it out if so 
though i have never used idgamma, i think i've heard that it lets you mess with contrast and stuff too... so it's not really an exact replacement for gamma.

Personally i just use regular gamma, which works in fitzquake (in windows at least) the same as in software quake.

But, a nice wishlist feature for fitzquake (or any other engine) would be to emulate idgamma settings using extra cvars. This could probably all be done using the same hardware gamma ramps that the gamma cvar uses. 
So does the gamma^h^h^h^h^hbrightness slider not work for anyone else ?

@Than.. If your X is misconfigured , you can read about X's config file with "man xorg.conf", and edit it manually (usually in /etc/X11/xorg.conf) if you're feeling brave. After any changes, you'll have to restart the X server to see effects. Keep backups of xorg.conf in case you screw up (which is pretty damn easy), and use "Control+Alt+F1" to get to a terminal in case X gets messed up. 
yes, I've found it to work with everything. 
Any kind of palette hacking doesn't play nice with external textures; another good reason to not do it. 
do you mean other wad files for maps using quake textures. Havent had any problems with that.

IF you mean high quality external textures, I only have starbuck's base set and havent had any issues with those either. 
yeah, that's why it seems like an improvement to do it in hardware instead of the palette. 
palette hacking won't modify external textures.
i think mostly mh was talking about how if someone makes a custom texture, there's now no guarantee it will look the same on a client with a hacked palette.
a good example is the ikwhite set that was modified from the ikblue set. i've seen screenshots of it where the textures look nearly all white or with bits of bright yellow in them. 
By The Way 
where should I install stuff in ubuntu/linux? Currently I just have Quake in my home dir, but it feels all wrong to have it there - like putting it in my documents in windows.

Programs installed via packages extract to various places, with the executable generally going to usr/bin from what I have read, but if I download an app, like Quake, where is a good place to dump it? Should I create a games folder in my home dir or put games (all the data etc. not just the executable) in usr somewhere? 
I put games that I cannot install from my distribution's repositories into a directory inside my home.

Quake is in ~/stuff/games/quake . That way I can also easily use Wine to run Windows engines. Otherwise you would also need superuser permissions to install maps (unless your engine supports the data being somewhere else, I am not really sure quakespasm does this). 
I Think 
Home dir support is in the making for QS. Does anyone know what exactly idgamma does to the Quake palette? It would be nice to add it to QS too. 
where should I install stuff

Most linux installs leave /usr/local fairly empty (unlike shitty FreeBSD). If system is only for yourself, using /usr/local/ for everything allows for easy system upgrades. That way, any 'proper' software you install yourself you just use "./configure --prefix=/usr/local" and stuff gets put in /usr/local/bin and /usr/local/lib. This allows for easily copying /usr/local with system upgrades, or if you have two linux varieties on the one box, you can share the one local filesystem with something like -

If installing Fedora on another partition to Ubuntu, from Fedora:

mkdir /mnt/ubuntu
mount /dev/sda2 /mnt/ubuntu
mount -o bind /mnt/ubuntu/usr/local /usr/local

Using $HOME like Spirit says is ok, but doesn't accomodate 'proper' software installs using "configure", and you generally cannot always just mount Ubuntu/$HOME over the top of fedora/$HOME because of OS vageries with config files in $HOME, especially KDE and GNOME.

Mp3s and the like could go into
/usr/local/share/mp3 ... but many times generic data like this
will go onto another windows partition so you can easily access it from Linux and Windows. 
where should I install stuff

But that would mean no easy read/write access to those files and directories, or am I thinking wrong? Where would you recommend to keep the maps and mods then?

Same for music files. I would keep my photos and documents in my home, as well as anything related to "projects". Music are just another form of frequently changing data the user needs easy access to.

SleepwalkR: Check the idgamma readme
As I understand it, idgamma simply hardcodes some gamma change into the palette.

aguirRe's readme suggests that the original glquake had no hardware gamma support.
So that might be why it was needed. I don't see any reason to use it if your engine supports proper gamma. Maybe some supporters of it could take screenshots to show what they feel is different? 
But that would mean no easy read/write access to those files and directories, or am I thinking wrong? Where would you recommend to keep the maps and mods then?

Yeah... permissions do complicate things with Quake. There are two issues: installing game data, and running the game.

Putting game data into /usr/local/games requires "root" privilidges - but any way you look at it - running Linux means becoming familiar with the "su" (superuser) and "sudo" (superuser do) commands.

Re running the game:
Darkplaces, TyrQuake, all Q3 projects and virtually every other piece of Linux software put their user data into $HOME/.APPNAME when the game is run. The fact Quakespasm doesn't have home directory support means you'll also have to
1) "sudo quakespasm" when starting the game (probably easiest), or
2) "sudo chmod -R a+rwx /usr/local/games/quake" (allowing all users read/write/exe access to the quake directory)

Either solution is fine imho. Personally, i'm quite happy using "root" as my login shell, and only running untrusted apps such as firefox as an unprivilidged user, but i can't recommend doing this for Linux noobs because you *will* break your operating system sooner or later.

Quakespasm does have a HOMEDIR patch (game saves, configs + screenshots are stored in $HOME/.quakespasm) but it doesn't apply cleanly at the moment. Someone SHOULD properly test and add this feature for the next release. 
Thanks, it seems to do more than just change the gamma though. I'll look into it, maybe we can add it to QS if the others agree. 
> aguirRe's readme suggests that the original glquake had no hardware gamma support.

That's correct, no hardware gamma in the original GLQuake. There's evidence of an attempt to do it in gl_vidnt.c (I don't know about other platforms) but nothing seems to have come from it.

It should be straightforward enough to compare the before and after palettes and reverse engineer a pretty close approximation of the algorithms used by idgamma, but you'll need to be aware that in some cases it can clamp palette entries at 255 (which is presumably the cause of the "makes q2 lava look like vomit" comment in the readme) so an idgamma hacked palette may have lost some colour range (similar to the effects of Q2 and Q3A's "intensity" cvar). 
@Than , Ha ha... so maybe Spirit's right.
@Sleep , hmmm. I don't think Oz is keen to code anything unless brightness is broken (which neither of us have ever seen i think) 
I would code it myself out of curiosity. 
Than, Just Bung It In ~/quake Or Something 
TBH, I've been mostly using fitzquake with wine lately (when I've been playing Q at all), I guess I should try some of this new hotness at some point :-) 
Hmmm.. There doesn't seem concensus that the feature is good. Sorry if i'm stupid, but what are the advantages over idgamma ?

Anyway... it can always go into Misc as a patch if we don't use it. ... I'll fix up that homedir patch too, and look at including that feature. ^Sometime^! 
One Advantage 
easy to disable/tweak if a map is insanely bright (like an ikwhite map).

Is anyone thinking about adding the ability to set up a dir that plays the quake music from sound files (ogg, mp3, hell, even wav would be cool) so we can have music without the cd in the drive and the game changes track as if it were? My cd is thousands of miles away, but I still have the mp3s :) 
Adding FOSS ogg vorbis support is a 100$ bounty from me. I originally meant the stock glquake but sdlfitz or quakespasm seems more reasonable. Someone was working on it but since I got no sign of life for more than a year now I guess it is ok to re-open it.

compatibility to the darkplaces implementation is a must. See for details. Please mail me if someone is interested. I will make a last attempt to contact the coder. 
Anything Been Heard 
On the .lit support for AguirRe's tools?

Keeps coming back this one, and hmap2 isn't very robust. 
Tuna To The Rescue! 
With a little incentive from Spirit... 
Yeah +1 To Getting That To Happen!! 
I would throw in a hand-job to the man who can get it done!!! 
Uh Ok 
I'm out. 
Assume The Position 
make a news thread, yo! 
on second thought...

seems like the elapsed time output stuff is broken?

Light: 0.0%, Elapsed: 0:00
Light: 0.0%, Elapsed: 0:00
Light: 16.3%, Elapsed: 0:00
Light: 28.2%, Elapsed: 0:00, Left: 1:00, Total: 1:00, 24%
Light: 41.1%, Elapsed: 0:00, Left: 0:00, Total: 1:00, 39%
Light: 72.2%, Elapsed: 0:00, Left: 0:00, Total: 0:00, 81%
Light: 92.0%, Elapsed: 0:00, Left: 0:00, Total: 0:00, 92%
Light: 99.3%, Elapsed: 1:00, Left: 0:00, Total: 1:00, 98%
Light: 100.0%, Elapsed: 1:00, Left: 0:00, Total: 1:00, 100%

Light: 100.0%, Elapsed: 1:00, Left: 0:00, Total: 1:00, 100%

done in 60.771000 seconds

looks like it was rounding off the numbers.

also, how do you use _color with sunlight? tried sticking that in world, but no luck. 
_color with sunlight is an exercise for the future. ;)

The time counter is no longer reliable since I multithreaded it, but it still gives a reasonable approximation. 
about the time counter, that's not what i meant. if you look, you can see that the tool is only displayed minutes and floor'ing the seconds, even on the elapsed time. 
Oh And 
please get rid of 'press any key...' pause at the end of light processing. it's downright annoying and serves no purpose. at the very least add a switch to disable it. even just hooking it into -nowarnings. 
on re-reading, my posts sound rather negative.
sorry about that, the multithreading is going to be a great time saver and i'm quite excited about that. :) 
This is 'coloured lighting in AguirRe's light tool'. 
good job mh. 
Oh And 
I think someone deserves the bounty now. 
Yeah, And Also 
This tool applied coloured lighting to one of my current projects which has 104 lightmaps, and over 60'000 vertexes and marksurfaces. Its a benchmark in Quake1 lighting tools. Coloured lighting on massive maps with extra4 etc. It auto-detects if you are using RGB "1.0 1.0 1.0" or "255 255 255" colourscales, too, which is cool. 
That's All Very Well But 
what does it all have to do with fitzquake sdl version beta? ;) 
what does it all have to do with fitzquake sdl version beta? ;)
Hmmm... something or another ;>

I got another report of brightness failing too.. So the gamma feature is probably worthwhile. But in my experience, a gamma slider shouldn't be placed beside the brightness one. I'd like to have a GL Options menu (just above the Video Options menu), and put the Gamma slider in this sub menu. Any extra GL menu items can also be placed here. 
Players Don't Give A Crap 
if it's a GL option or not. To them, it's all video related, so that's where it should go. Maybe split the video menu into resolution / bpp options and other options like brightness / gamma / etc 
but the quake brightness slider IS gamma. It has always been directly linked to the gamma cvar, way back to dos quake, and the gamma cvar has always controlled basically the same gamma ramp function that we are doing with hardware gamma in fitzquake/etc.

"idgamma" is different, i only assume that it implements additional contrast/saturation controls since people who use it complain about how things look without it. 
- Ah Ha Ha 
Here's some link for a recent tyrquake fix.;a=commitdiff;h=ed46d97c106471672c571eebd51dedc0508e1225

@Than .. do you have intel video ? 
nope, I've got a radeon HD4850 1gb ram and the latest ati drivers. 
This seems to work for some people.

Download the source and patch
tar xzf SDL-1.2.14.tar.gz
cd SDL-1.2.14
patch -p1 <libsdl-new_gamma_ramp_support.patch
Remove your old libSDL somehow, or "configure --prefix=/usr" will overwrite libs in /usr/lib
configure && sudo make install
sudo ldconfig
SDL Keymap 
Does FitzQuake SDL automatically properly keymap a keyboard ... like if someone is using a US-101 keyboard versus, say, a German keyboard user?

From the code, I am guessing it does but I don't have an easy way to verify this. 
EN/US layout 
I Wanted To 
do that, but it would have required replacing Quake's own keyboard codes with SDL codes throughout the entire codebase, and I didn't want to do that way back.

I do think it should be done though, and maybe I'll convince the QS guys to let me fix this in QS. 
I was trying to determine why the Key_Map function was converting the key code whenever the Key_Event function was called.

Ok ... I was reading too much into it. 
Apart from the umlauts QuakeForge does it, if you need a starting point. 
Almost 3 years ago, I added international keyboard support into ProQuake with a cvar (with a keypad bug I keep forgetting to fix) on Windows, but it is dependent on Windows messaging stuffs so it is totally non-portable.

I was just looking to understand the FitzQuake 0.80 implementation of the SDL build and the Key_Map thing threw me off. I thought some non-obvious keymapping was going on using libsdl somehow. 
It just maps SDL key codes to Quake key codes IIRC. 
Autosave/autoload Patch 
I don't know if other people have this problem, but I find that the more immersed I am in playing a Quake map, the less likely I am to remember to quicksave. When I die, having to replay several minutes really breaks the immersion :-(

To fix this problem, I'm working on a patch which adds autosave/load to QuakeSpasm. Here's a snapshot:

Here's how it works: at regular intervals (no more frequently than every 30 seconds), it automatically creates a save called auto_{mapname}. When you die, the most recent save is loaded - regardless of whether it's an autosave, quicksave or normal save.

If you want to start a map from the beginning, you can use the "restart" command, or "map mapname".

It needs more testing - there are heuristics for deciding when to autosave which need to be tweaked - but check it out!

the code is here: 
This post was flagged as spam. 
Very Cool! 
Great feature ericw! 
Post A Reply:
Website copyright © 2002-2017 John Fitzgibbons. All posts are copyright their respective authors.