News | Forum | People | FAQ | Links | Search | Register | Log in
Fitzquake Mark V
I wasn't planning on doing this mini-project, it started as an effort to address some Fitzquake issues, fix them the right way up to Fitzquake standards (i.e. do it right, once and properly versus continual releases) and donate it back.

FitzQuake Mark V Download:

http://quake-1.com/docs/utils/fitzquake_mark_v.zip

Short version: Eliminated most issues in FitzQuake thread, most issues I can even remember hearing of ever and marked every single one clearly with a very minimal implementation.

It may be the case that only metlslime and Quakespasm and engine coders may find this engine upgrade of interest.

Features: 5 button mouse support, single pass video mode, external mdl textures, alpha textures (like RMQ), record demo at any time, rotation support, video capture (bind "capturevideo toggle"), console to clipboard, screenshot to clipboard, entities to clipboard, tool_texturepointer, tool_inspector (change weapons to see different info), clock fix, contrast support, fov does not affect gun, gun displays onscreen, Quakespasm wrong content protection, external ent support, session-to-session history and .. (see readme).
First | Previous | Next | Last
Gunter 
ericw, r_oldwater was the culprit. As soon as I turned that off, the FPS smoothed out DRAMATICALLY (running in an 800x600 window, it went from 6 FPS to just over 60, standing in the Start map, looking at the 3 teleporters and lava -- all water surfaces).

Thanks! Glad that worked. 
 
I guess this is just a result of DX not doing fog as well or something?

GL or DX don't actually "do fog" at all - your GPU does. All that GL or DX do is provide your program with a means of saying "draw this polygon with fog", but your GPU does all the actual drawing.

With everything else being equal, there should be no difference whatsoever between images produced by one API versus images produced by the other, because it's the same GPU that's doing the drawing; all that the API does is send commands to the GPU.

On the other hand, DX does provide a handful of extra fog quality/performance options whereas GL hides them all behind a single glHint (GL_FASTEST/GL_NICEST), and allows the actual result to be implementation-dependent.

One possibility is that one of those extra options, if configured, would resolve it.

Another possibility is that the projection matrix isn't configured correctly in the DX version, causing loss of some depth precision, causing the extra banding. 
 
Baker, I'm afraid I just find Quakespasm off-putting for various reasons, but I will try to give it a test drive, since you asked....


So, it seems that now DX Mark V is running fine in a window... I'm not sure what changed (I often delete config files when testing), but most likely it was just me rebooting my netbook after testing no-telling-what last night.... In any case, the DX version is now running just as smoothly as the older OpenGL one, even in a window.

But here come some bug reports! heh

Your default lava color is incorrect!!!!!

Haha, yeah, this is a minor niggle, but your r_lavacolor is "255 80 50 150" and the Quake default should be "255 80 0 150" (search for "lava" here to see http://unix.superglobalmegacorp.com/quake1/newsrc/Quake/view.c.html )

It does alter the color a bit... Of course, the lava intensity needs to be dropped to about 100 for my tastes; in standard Quake, if you were in lava you were dead, so it didn't matter that it was blinding in there. But in Runequake and FvF, there are ways to be in lava and not be dead, so you need to be able to see a little bit... 100 looks good to me (it's still lava, after all!). Normally I'm for keeping the defaults, but in this case, it would benefit from a slight change. Though I'm afraid I don't like the "light" blends in Mark V though -- way too transparent. But as long as it defaults to the defaults, that's fine. And Mark V provides the ability to change them to tastes, so that's fine too.

All other blends look good to me at Quake default, though for some reason the Ring blend looks a bit heavy. Maybe I'm just used to all the Quake clients that made it too light, but is there a variable to adjust the Ring blend? Hm, it does look like the cshift_powerup stuff for invisibility is the highest % on that page I just linked. I guess it's supposed to be that way.


Speaking of invisibility... I really liked that "always draw weapon when invisible" option in the old OpenGL version of Mark V that I was using... It made my weapon transparent. I like little tweaks like that which enhance things without really drastically changing the default Quake feel.

However, in the new DX version, the weapon just stays completely solid, and in the Winquake version, the weapon is completely invisible again... (of course I can't test the newest OpenGL version...). I wouldn't expect the Winquake version to do good transparency, but it seems the option, in that case, should leave the weapon completely solid. Which I actually don't like (laugh)! 
Fog 
Ok, so, I find this interesting too, though I am clueless as to the internal stuff.

I cranked the gamma and contrast up to max (for the sliders) and made some more screenshots.

OpenGL (older version of Mark V) is on top, and the newest Mark V DX version is on bottom....

http://imgur.com/a/pkjip

You can see the ugly square of fog over the close wall in the bottom image.... Though it turns out, in the top (OpenGL) image, the fog is actually extending farther toward the "me" in the image -- that's why the left edge of the first image looks lighter. The OpenGL fog still somehow looks better/smoother (even in this forced setup). I'm not changing any other settings -- just switching which client I run.

Here the same angle with fog off, and they are pretty much identical:

http://imgur.com/umSZFPC

You can only tell them apart because of the odd lighter shadow under the grenade launcher in the OpenGL one -- I don't notice that in game, but the screenshot seems to capture it, same as the first image I posted upthread. Uhh... for some reason, imgur may resize the view so the odd lighter shadow is not visible o_O But trust me, it's there in the original image, heh.

Ok, now the most interesting image.... I changed my position to emphasize the fog distance difference:

http://imgur.com/RhCrSig


Now look at that!

The fog does get closer to "me" in OpenGL, but also the bands on the wall are not all straight and parallel, which actually helps them not seem so ugly/uniform/bandy/unnatural.... And especially in the lit areas of the wall, the GL fog looks much better than the DX. This is what is pretty noticeable in play, under more typical lighting conditions.

There's also some difference in the interaction of the fog and the teleport texture. 
 
Image 3 settles it - there's a different fog range calculation being used depending on the API.

That's going to require a code change and a whole bunch of testing to fix up though. 
Wait... 
While testing Quakespasm, I looked at the fog (looks good - identical to the OpenGL images above), and I noticed what is causing the difference.

The fog is BEHAVING differently... and this would be hard to capture in a non-animated image, and it may be difficult to describe. But you should be able to replicate this yourself if you wanna see it in action. Just ramp up your brightness and contrast in Quake, and go to the entry room for E4M8 and look at the black wall opposite the portal while walking forward very slowly, or even looking left and right a bit. Oh, I also use a very light fog setting 0.03

The GL fog is JUMPING along the wall, in small sections at a time. That's why the bands in the GL screenshot are not perfectly straight lines -- one section of the line will jump forward, then another section. This actually makes it less noticeable on the walls when you are moving around, because you don't see any "movement" -- a line doesn't move across the wall, it just suddenly is there or isn't there, and that's really hard to notice when you're moving around, especially with the lines being not perfectly straight due to them jumping unevenly.

The DX fog is MOVING very smoothly along the wall, in perfectly straight lines. It looks bad because you easily see the movement of straight lines smoothly scrolling across the walls.... 
Animated Fog 
Ok... animated images... Keep in mind the colors will be extra ugly for being compressed to a GIF.

Just barely creeping forward you can see how the GL fog jumps in small sections, instantly. There are no missing frames in the fog's positions:

http://imgur.com/grwHCPv


In DX, moving forward a big faster, the fog evenly scrolls across the wall. There are lots of missing frames of fog position in the animation.... I'd describe it as similar to interpolated movement, if that makes sense, because it moves very smoothly across the wall.

http://imgur.com/sTbVMuU



Is there any point to doing/discussing this?
Who knows!
I just do the testing. It's up to other people to do anything about it ;) 
 
Windows Build

Vore trail fixed, "submersion in lava" color slight typo fixed.

/Took a quick look at the DX transparent model with invisibility ring. Oddly discovered it doesn't look like FitzQuake 0.85 ever had a pathway to use model transparency if the driver doesn't support combine (the Direct3D wrapper does not support combine) --- so may not even be possible (didn't expect that). The non-combine rendering pathway does a series of operations that already use blending but it isn't alpha blending -- so that's probably one reason FitzQuake uses combine in the first place. A bit annoying.

I don't have time to do anything of substance on the engine, but the above 2 things were 2 minute fixes.

But in the future when the day comes that I have that time, I always read all the notes. 
 
That's interesting, i don't remember whether i added that support or not (but i would have assumed i did.) There is this comment in the readme:

- fullbrights now use additive blending instead of alpha blending. This allows me to support external glowmaps, and entity transparency with fullbrights/glowmaps. In some cases, additive fullbrights are rendered using multitexture, but only if GL_EXT_texture_env_add is available. The command line option -nocombine will disable the use of GL_EXT_texture_env_add.

This implies that without combine, models with fullbright masks are rendered in two passes. It doesn't say that they are rendered correctly with alpha though... hmm. 
 
It is probably a virtually non-existent situation.

I've not seen an instance of someone using .alpha on an alias model in a single player release. And there probably aren't any Open GL drivers that don't support combine.

It's just that the Direct3D wrapper doesn't have combine ability written in the code and that Mark V offers a "gun with transparency" option when invisible, instead of Quake not drawing the gun at all.

/But the brush models don't suffer this problem in the Direct 3D + no combine scenario (I tested against back2forwards which uses .alpha for glass). So at some future date when I have time to chart out the rendering, I should be able to rewire something --- assuming I would do that instead of maybe taking a shot at adding combine to the Direct3D wrapper. 
 
(Actually, thinking about that --- Nehahra does .alpha on wraiths and Mark V runs Nehahra.) 
 
the sparks in rubicon2 fade out using alpha (they are models) 
 
Hehehe, never noticed that. I only noticed the laser barrier bars and such used .alpha. 
 
Torch flames in sock's maps usually (always?) have alpha as well. Any maps using Preach's smoke model. 
Animated Fog 
I did proper animated fog once. It used world position and a function of time to do a lookup in a 3D noise texture which was then used to adjust the opacity. It looked beautiful but the performance hit was just on the wrong side of what I considered acceptable.

Totally irrelevant to the ongoing fog discussion, of course, but it was fun. 
Low-Lying Fog 
While we're mentioning fog, faint transparent water with a more subtle texture could make for neat looking fog, especially if combined with mankrip's shore fading. 
 
Contract Revoked used this trick, IIRC. 
Contract Revoked 
Didn't have fog. 
#1141 
dwere was probably talking about this. I didn't adjust the translucency and soft depth levels to match Qmaster's suggestion, though. 
Quakespasm, Pt. 1 
Ok, you asked for it Baker, so here is my review of Quakespasm. Much of this will be personal preference, and other stuff will be comparisons to Mark V.

I mentioned that Quakespasm is off-putting to me. This starts with the website (I talked about that long ago, way upthread). I do note the addition of a clear "readme" link on the site, and that's a definite improvement, because when I go to try and download something like this, I want specific information rather than the vague artsy presentation which just gets in the way....

The second off-putting thing to me was all the files Quakespasm wants to drop into my Quake directory.... My goodness, that's a lot of files. 12 DLLs, a PAK file, 3 TXT files and an HTML... along with the 2 EXEs. What a lot of clutter.

The third major hurdle was that r_oldwater defaulting to 0, which caused my frame rate to be like 5-10 on the Start map.

Finally, there's the difficulty in finding what settings are available, such as all the various console variables, like the one above -- there's no good documentation. I would have never known to try that to fix my issue.

So yeah, with all those issues, I was like, "Forget this..." and I'd move on to something else.


But I will say, once past all that, Quakespasm is a really nice engine. It may even run a bit smoother in places as compared to Mark V. Well, I am stuck with the DX version of Mark V now, since the newer GL ones just crash for me... so... that may make a difference. The fog certainly looks better in Quakespasm as compared to DX Mark V (but that's also true of GL Mark V vs DX).


My first point of feedback would be that the r_oldwater setting should really default to 1... since it seems to be such a power-hungry effect to have active (in my case any way). I tried enabling it in Mark V, and got the same result -- baaaaaad FPS. But Mark V has r_oldwater 1 by default.

In the menu, I really like the "Scale" slider. Very nice. I had to set up keys in Mark V to achieve the same effect by altering 3 different console variables. The nice slider seems to adjust everything at once (that's definitely something Mark V should add).

The "instant Quit" upon selecting Quit from the menu. Hm, not sure how I feel abut that. I don't love it but I don't hate it. The new Console background is the same type of thing -- not sure if I like it or not, but FvF has its own console replacement anyway, which still looks close to the original Quake one, so it doesn't matter much.

Hey, the "Always Run" menu option is a definite improvement in the way it functions. In most Quake clients (like Mark V), having "Always Run" on seems to place more emphasis on your forward movement, causing the side-stepping movement to be way too slow (when you gotta side-step to get out of the way of a rocket, you want to sidestep FAST!). The way Quakespasm implemented it seems to instead function just like a run key (+speed), which places emphasis on your side-stepping speed while only slowing your forward speed down a little (there's still an overall speed limit you can't pass when moving "diagonally"). Even better, when "Always Run" is enabled, your usual +speed key acts to slow you back to normal walking speed. That's a nice touch (Baker, Mark V needs all of this! :D ).

Uh, where's the clock ? The usual clock in DM mode is MIA. Is there a console variable to enable it? But watch out that it doesn't overlay the "player squares" that appear where the clock would normally be -- just limit the number of those "squares" that appear there.

Also, there are no pings by the scoreboard when you press tab while playing online. That's a pretty common feature, and pretty much expected these days.

Speaking of the scoreboard (and all other things that are printed in the center of the screen, like centerprints and "loading" images), the ProQuake method of positioning all these things near the top of the screen is the best way to go. Then they don't block your view in the middle of the screen. Every modern Quake client should be imitating Proquake in this respect. EVERY MODERN QUAKE CLIENT, Baker :D


(continued below, because maximum character count is only 5000, haha) 
Quakespasm Pt. 2 
Wow, MP3s load fast! I guess some of those DLLs are doing their job. The MP3s seem to load with no delay at all. My gosh, Mark V takes like 10 seconds to load an MP3 track (all the while your game is frozen). Can we get this in Mark V? Like, seriously. I won't even complain if it will require some extra DLLs!
Though it seems the menu option to enable/disable external sounds does not take effect until level change (Mark V enables/disables the music right away. Well, after the loading delay, that is).

Speaking of those DLLs, I don't suppose they would go into the PAK file to make them more tidy? Probably not, eh? Well, the next best option would be to move all the Quakespasm-related files (DLLs and PAK) into a Quakespasm folder within the Quake folder (this is like how Qrack does it).... Quakespasm would still know where to find them, and they would be out of the way. I think this would be a significant improvement.

Is there a way to toggle high-quality textures on and off? Mark V has external_textures to toggle.... I like to be able to turn them on and off in game, to make comparisons and to test loading time. There doesn't seem to be a way to turn them off at all in Quakespasm?

And... how do I get high-quality monster textures to work? I tried them in Qrack format (png), I tried them in Mark V format (tga), I tried them in various locations (progs folder or textures folder), but they don't show up. Documentation, please!

I do note that the high-quality wall textures load correctly in my modified dm6 (it's got some small extra areas added to the standard DM6 map). For some reason, Mark V does not load the custom textures in it, and reverts back to the standard textures for the map.


Speaking of my modified DM6 and Mark V (and this is really a Mark V bug report, but I'm on a roll), for some weird reason, when I run FvF and go to start a new Single Player game, I am dropped into my DM6 at a DM spawn point (I did add SP spawn points to the map) instead of the Start map! What's up with that? No other engine does that (including Quakespasm or older Fitzquake Mark V or Proquake....). Some weird interaction of Mark V and FvF, or the modified DM6? It's not really important, because FvF doesn't actually have a single player mode... It's just weird.


gl_overbright_models does not look good for me. Makes the Quake solder way too washed out when he's standing in a bright area, especially if he's wearing white. Same in Mark V. I just disable it.

I like that r_wateralpha controls all the liquids by default. In recent Mark V, it seems each setting must be made separately (like r_lavaalpha). This appears to be a result of Quakespasm using defaults of 0 for like r_lavaalpha, and also allowing the r_wateralpha to affect all liquids. That's a much better way of handling it, which still allows fine-tuning of separate liquids if desired. Mark V could benefit from this.

Hey, the "under lava" blend looks perfect, right out of the box in Quakespasm. Has the intensity of it been changed? Quakespasm doesn't seem to have the ability to alter it manually.... Good thing it looks perfect as-is! But I'm curious as to why it does, when it looks so blinding in Mark V at the default Quake values.

Models with missing skins come up as white in Quakespasm. This is old GLquake behavior, but it should really be handled like Winquake does, by using the default texture. For example, if a monster or projectile has multiple skins for a mod (FvF does this a lot), but the client does not have those skins installed -- so the like mod is assigning skin_1 or skin_2 to a model, but if the client doesn't have them he should just see the default skin_0 for that model. Mark V does show the default skin in these cases.

Hm, scr_showfps doesn't stay set for the next time you start Quakespasm.... That seems to be standard behavior for Quake clients, but this seems like one of the settings that should be stuck in the cfg file and saved.


(continued) 
Quakespasm Pt. 3 
Keeping in mind I'm running on a netbook with a resolution of 1280x600,
If I set Quakespasm to a 800x600 window, the actual space inside the window (game area) is 600 tall, but the title bar and border extend farther.
In Mark V (and Proquake, etc), the entire window (including title bar and border), is 600 tall.
This means that in Quakespam, there would be a tiny portion of the screen cut off at the bottom of my actual screen, because I can't move the top of the window all the way off the top of the screen.
I'm not really saying one way is more correct (though the standard, I think, is that the 800x600 defines the dimensions of the entire window, including borders).
So I end up setting my window to a weird size so it all fits my screen, 750x550 (I've used this with Mark V and Proquake sometimes too), but when I do that, Quakespasm's color depth is locked at 16 bpp and can't be changed in the menu.
If I go back to an 800x600 window, the color depth is again changeable in Quakespasm's settings, though I really can't tell any difference at all in the graphics when I change it (in full-screen or window). My desktop is set at 32 bit color. I don't have any real issues with any of this -- I'm just reporting my findings, heh.

I do have a slight issue that the Contrast slider does not do anything for me (no matter the BPP or full-screen/window settings)... so the Brightness slider is my only option for adjusting things, and that tends to make colors less vibrant. Mark V's Contrast slider works fine for me.

The weapon model is too low. I guess that's the Fitzquake default.... Mark V allows (and defaults to) the Proquake way of showing the weapon, which makes it less hidden at the bottom. Well, normally Quakespasm hides the weapon behind the transparent HUD anyway, but I like to set my HUD to opaque. And I like to see more of my gun.

While on that topic, the Mark V "transparent weapon when invisible" is a nice option Quakespasm could use.

Demos don't load at all upon startup? Is there an option for that?

The r_noshadow_list has same problems as Fitzquake: There is no bolt1.mdl in Quake. That should be bolt.mdl. Baker did add bolt.mdl to Mark V, but he forgot to remove the bolt1.mdl. Also, k_spike.mdl (the Death Knight fireball attack) and lavaball.mdl really should be added to the list, as they are glowing things that should not be casting shadows.

Hm, I miss the stain maps from Mark V....

And I would suggest adding Proquake's RCON function to Quakespasm (as Baker did for Mark V -- thanks!!). It is extremely useful to be able to admin a Proquake server while I'm connected and playing. This is a pretty big criteria for me when selecting a Quake client, though it may not matter at all for most people.

And of course I always suggest adding support for Colors 14/15. Heh, They are in Quake... it's just that the client doesn't allow them to be selected. I think it's an easy thing to modify (later versions of ProQuake have it).


I guess in the end Quakespasm and Mark V are pretty close, with each having pros and cons compared to the other.... 
 
In most Quake clients (like Mark V), having "Always Run" on seems to place more emphasis on your forward movement, causing the side-stepping movement to be way too slow (when you gotta side-step to get out of the way of a rocket, you want to sidestep FAST!).

Apparently, your mod uses a slow default for cl_sidespeed.

The actual Quake default was always somewhere around the max speed, making strafing very fast regardless of autorun. I don't know why they set it up like this, but my guess is it was an attempt to assist keyboard-only players in dodging.

The result is that the autorun toggler in the menu most likely just ignores cl_sidespeed and only affects cl_forwardspeed and cl_backspeed. 
 
re: mp3 loading speed slower in Mark V

Quakespasm uses a software library for media playback, Mark V uses Windows hardware accelerated playback. On the computers I have tried Mark V on (probably around 20), it typically loads instantly. I think it stop/pause/restart instantly, but Quakespasm can't.

The software library Quakespasm uses is more reliable because it isn't subject to Windows settings or Windows .dlls, but uses more CPU.

/Mark V is a "pure client", it doesn't use 3rd libraries (that's why doesn't need .dlls). Quakespasm uses SDL2. Spike statically linked Quakespasm-Spike, so it doesn't need dlls and the library instructions are rolled into the .exe.

Quakespasm contrast not working

Quakespasm contrast not working is probably the result of one the command line options required to make Quakespasm run on your netbook. Try removing one of those command line options and see if it runs.

Quakespasm it uses a shader for brightness/contrast, it only affects the Quake window --- not the entire desktop.

Mark V by default uses the Windows API, but it affects the fullscreen so in windowed mode the rest of the desktop screen is affected by your brightness settings --- but it has no effect on frames per second or cpu usage (it's free).

r_lavaalpha etc

Hehe, ericw/Quakespasm did a push to get different transparent level for different liquids. Hence the feature in Mark V.

Quake defaults

AFAIK, Mark V uses 100% Quake defaults and 100% Quake behaviors with minor exceptions (mouse look defaults on).

I don't like all the defaults, I think ring of shadows hue is too dark.

You might not like how standard Quake "always run" is less than perfect, but I'm seeking to exactly mirror GLQuake/WinQuake/FitzQuake in behavior.

External textures

You must use the DarkPlaces texture naming convention. They must be in .tga format.

Mark V recognizes
(1) one format --- it's TGA
(2) one folder for things to go -- the DarkPlaces location
(3) one naming format -- the DarkPlaces one

DarkPlaces Examples:

progs/backpack.mdl_0.tga
progs/spike.mdl_0.tga
progs/armor.mdl_0.tga // green skin
progs/armor.mdl_1.tga // yellow skin
progs/armor.mdl_2.tga // red skin

I don't care about the Qrack place/name --- DarkPlaces is the engine that people make skins for. Everyone should use the DarkPlaces name/format *and* only the DarkPlaces name/format. The naming convention Qrack uses for skins comes from the FuhQuake Quakeworld client, which provides no naming convention for sprites. The Qrack naming conventon is flawed. 
Context On The External Textures 
The FuhQuake texture naming convention not only has a bad naming convention, it stuff like specific folder names for different models. Qrack uses the same, as does ezQuake.

It's insane.

Poor FTE (Spike's engine obv) obviously caters to people familiar with ezQuake and he has check for textures in like 16 different places in some cases. It's slowish and can add to load time (think of a map with 160 textures) and then multiply by supported graphics formats and then how a file can be in a pak or not.

So the rogue FuhQuake/ezQuake/Qrack naming convention is not only slow -- and not only confusing to users --- but the code looks like spaghetti.

The other problem is if you are a user, how are you going to find the texture if it could be in so many different places.

It's crazy

/Mini-rant, but DarkPlaces naming convention injects 2 forms of minimalistic sanity! 
First | Previous | Next | Last
This thread has been closed by a moderator.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.