News | Forum | People | FAQ | Links | Search | Register | Log in
Mark V - Release 1.00
http://quakeone.com/markv/

* Nehahra support -- better and deeper link
* Mirror support, "mirror_" textures. video
* Quaddicted install via console (i.e. "install travail")
* Full external texture support DP naming convention
* Enhanced dev tools texturepointer video inspector video
* IPv6 support, enhanced server capabilities
* Enhance co-operative play (excels at this!)
* Software renderer version (WinQuake)
* "Find" information command (ex. type "find sky")

Thanks to the beta testers! NightFright, fifth, spy, gunter, pulsar, johnny law, dwere, qmaster, mfx, icaro, kinn, adib, onetruepurple, railmccoy

And thanks to the other developers who actively provided advice or assistance: Spike (!), mh, ericw, metlslime and the sw guys: mankrip and qbism.

/Mac version is not current yet ...; Linux will happen sometime in 2017
First | Previous | Next | Last
#1634 
Nice to mention this, it's one of the most overlooked things in custom engines.

But I'd like to add that Quake is actually inconsistent when it comes to video aspect, because the 3D renderer was coded for a 320x240 4:3 screen (square pixels), while the 2D renderer (and artwork) was made for a 320x200 4:3 screen (non-square pixels).

Doom's "3D" renderer was indeed coded for non-square 320x200 4:3 pixels, IIRC, because it didn't support other resolutions (before WinDoom). Quake was the first id engine with multiple resolution support, so it's quite poorly coded for it in some areas. 
 
I'd be cautious about how this change would look in a hardware accelerated engine. On the surface it seems easily achievable by just rescaling your ortho projection and 3D viewport by the appropriate amount, but there's gonna be a whole lot of edge cases with texture filtering that will need to be worked over. 
 
But I'd like to add that Quake is actually inconsistent when it comes to video aspect, because the 3D renderer was coded for a 320x240 4:3 screen (square pixels), while the 2D renderer (and artwork) was made for a 320x200 4:3 screen (non-square pixels).
the only thing is that it wasn't. original software renderer actually could do a valid 3D picture with virtually any resolution and pixel aspect, and if you choose 320x200 (640x400) you will get just right picture in every aspect (no pun intended) 
Milkey Wilkey 
The particle renderer, which is part of the 3D renderer, was explicitly coded for 320x240, with double height scaling for 320x480.

The underwater warp is also inconsistent across screen resolutions and was coded for a 320x240 video buffer, as explained in this standardized test. It also means that it's impossible to always get a fully aspect-correct image in ANY resolution in the original renderer, because while the HUD only displays properly in 320x200, the underwater warp's waves only displays properly at square-pixel screen aspects (320x240, 512x384, etc).

The original software renderer is not consistent even across multiple HUD sizes.

The software renderer also screws up skies and particles when the FOV changes.

But most people never pay enough attention to notice all the problems in the renderer. 
 
I... uh... um.. er.... :u

Ok, yeah, I'm bringing up the contentious topic that we just put to rest, but bear with me... you will NOT see the ending coming!

Ok... So, I was considering what mh was saying about "expectations" that people supposedly have about the loading order for content like models, in regard to the pak files vs unpacked files having preference (default from original Quake is pak).

Previously I pointed out why this isn't just for mods (mine or anyone else's) -- it's also for standard Quake if you want to use the player.mdl from this pack: http://quakeone.com/forums/quake-mod-releases/works-progress/9573-authentic-model-improvement.html

I looked at the readme file included with that, and it just says, "To use these new models place the 'progs' folder inside the 'Id1' folder in your Quake directory."

Ok, so it's apparently not the model creator's expectation that pak files should take precedence, so he must have been using one of the modern engines that changed the behavior.

So then I did a web search to see how other people might answer the question, "how to replace player.mdl in quake." The first link that pops up is a Quakeone forum post (naturally) where someone was asking just that: "Easiest way to replace player model?"

On page 1 of that topic, someone mentions creating a mod folder and dropping the file in the progs folder of the mod, and another person mentions something about looking in the pak file.

Then at the top of page 2 of that thread: http://quakeone.com/160346-post11.html

the guy is told, "Yes. You can just create a "progs" folder into id1, drop the model into and you're done."

Ok, so again, expectation seems to be that just dropping in the unpacked model should work, and the final post in the thread has the guy saying he did just that and it works... with DirectQ....

Yes, that's the kicker. The guy asking the question said he was using DirectQuake (he said that on page 1 as well).

DirectQuake is mh's own Quake engine, and IT HAS UNPACKED FILE PREFERENCE. :u

I decided I'd better test this for myself, so I found and downloaded DirectQ (for some reason it's not that easy to find), version 1.8.8 (because 1.9 crashed for me), and sure enough, it's just as simple as dropping the unpacked player.mdl into id1/progs/ and it works in DirectQ!

So... like... um.... Do I need to repeat that? mh has been BLASTING me for daring to ask for a feature THAT HE ALREADY PUT IN HIS OWN ENGINE :u


So yeah, Baker, please import this wonderful feature that mh was wise enough to implement in DirectQ :D

;) 
 
I have admitted that I've been wrong about things in the past. DirectQ was riddled with mistakes, I freely admit it, and that's one reason why it's no longer developed. You don't get to score points that way I'm afraid. 
...back To Sanity... 
I'm more inclined to believe that the 2D GUI gfx were actually designed with a 1:1 mapping of texels to pixels in mind, rather than any specific resolution. 320x200 is just an accident of history.

I did code up aspect adjustment just to see how it looks and as expected it's pretty crap when texture filtering kicks in.

It might be OK as an option but otherwise I'd leave the default alone. 
MH 
I'm more inclined to believe that the 2D GUI gfx were actually designed with a 1:1 mapping of texels to pixels in mind

Look at the pentagram icon. It should be a perfect circle, which only happens at 320x200. At 320x240, it becomes oval.

Also, the console background itself was obviously made with a non square pixel aspect in mind, and it has text pasted over it by the engine. With square pixel aspect, that text's aspect becomes different from the aspect of the rest of the engine's texts.

The help screens, which were made to cover the whole screen, are also 320x200.

And lastly, enlarging the 2D art vertically when using square pixels makes more sense than reducing the 2D art vertically when using non-square pixels. If the 2D art was reduced vertically, the help screens wouldn't cover a whole 4:3 screen. 
 
By the way, non-square 2D pixels should be optional, because several mods uses custom GUI artwork with square pixel aspect.

When rewriting the GUI renderer, I'm going to make it use an optional non-square scaling enabled by default. 
 
I think about the 2D rendering differences.

As there is no separation between the software renderer vs. the Open GL build -- it is FitzQuake calling the shots and saying what to draw and the location -- using a canvas system that WinQuake never had.

The source code in Mark V doesn't actually trace back to WinQuake, not even for the WinQuake build.

Which is way different than mankrip's engine or qbism super8 or engoo.

It is also why Mark V has immensely more versatile video capability than any other WinQuake. The video code is literally 100% FitzQuakian.

Shorter version: Eventually the aspect ratio thoughts will happen once the engine eventually settles down where there aren't "big leaps forward" looming. 
 
Eventually the aspect ratio thoughts will happen once the engine eventually settles down where there aren't "big leaps forward" looming.

Same thing here about colored lighting. It would be a pain to implement it now, only to rewrite everything when the new color transformation system gets implemented. 
 
Just to clarify what I mean: here's som screenshots with various combinations of aspect correction and texture filtering.

The "200 Height" shots are using the old 320x200 resolution but at a 4:3 aspect.

Pay particular attention to the menu slider bars. This is what I mean by a 1:1 mapping of texels to pixels.

http://www.quaketastic.com/index.php?dir=files/screen_shots/200_Height_Tests 
MH 
Oh, yeah. Now I know what you mean.

When you said "1:1 mapping of texels to pixels", you didn't limit the meaning to square pixels. A 4:3 320x200 screen will have non-square pixels, but the texels also have the same non-square aspect, so the screen will display the texels in a square ratio to the pixels.
A 4:3 320x240 screen multiplies the rows to compensate for the "non-square texel to square pixel" aspect when necessary.

Yes, such scaling generates notable artifacts at lower resolutions, which is another reason to make the 2D aspect correction optional. But at higher resolutions, the artifacts becomes unnoticeable. Also, some custom texture filters may help. 
 
You don't really get to do custom texture filters with hardware acceleration though. Well you can, but you have to write them yourself in fragment shaders so a lot of popular engines don't get to play. Otherwise texture sampling is fixed functionality.

Forgot to mention - one thing I really like about Quake's 2D graphics is the fact that they're so crisp and clear, and this is as a result of the precise pixel work that went into creating them. It's something that you might not notice at first, but any kind of texture filtering on them blurs out a lot of the fine detail. 
Texture Filtering 
*shudders*

Would be nice for some maybe to have a gl_hudfiltermode convar. 
Really Though 
If there was a Quake engine that supported temporal antialiasing (TAA), then texture filtering would be completely unnecessary. 
MH 
I've cropped your unscaled screenshot to 320x200, and did some tests using The GIMP:
320x200 source

320x240 mockup, nearest scaling

320x240 mockup, bilinear scaling

Bilinear scaling in The GIMP shows that it's possible to scale Quake's 2D GUI in a way that looks good. It may be complicated to get that same quality using hardware rendering, but it's definitely possible. 
Tool_inspector, Why Are You This Way? 
Mark V Question 
How can I keep Mark V from messing up my Quakespasm cfg? I switch back and forth between these engines and right now I exec a specific config for QS after using Mark V but it's still a bit messy. I gather that this is some kind of anti-cheat thing from some research here.

What am I missing? How can this be more seamless? 
@dumptruck_ds 
two separate quake directories.
alternatively change all your config.cfg files to readonly so that nothing can overwrite them. 
@Spike 
Meh. Well, at least I have options. 
 
I gather that this is some kind of anti-cheat thing from some research here.
I don't think it's anti-cheat, what happens is when you exit an engine, it overwrites config.cfg with only the cvars / keybindings that engine is aware of.

So it's more of a limitation of the original quake config system, when extended to engines with diverging sets of cvars/keybindings.

I'm not too familiar with what has been tried to remedy this. 
 
Would be nice if the engines had their own sub config.cfg for the "new" non-vanilla id, non-standard cvars it has implemented.

config.cfg
config-quakespasm.cfg
config-markv.cfg

...and so on. That way we could keep my vanilla config and each engine looks for that and then loads theirs. Even if there is overlap the engine in question would ignore the others. I assume it's not this simple and would require co-operation to make it a "standard." 
 
No, it actually is that simple. It's something like 4 lines of code. In Cmd_Exec_f detect config.cfg and write in the engine cfg, in Host_WriteConfiguration write out the engine cfg.

I have no idea why it's not done. I'd love to see it done. 
 
and write both a config.cfg and config-engine.cfg with the same contents, as encouragement for other engines to follow suit... well, that and so new engines pick up usable defaults too.

however it would also need to be gamedir aware for all those mods that came with a config.cfg provided, so they don't read settings from id1/config-engine.cfg in preference to those in mod/config.cfg.
if engines had done the same with config.cfg vs default.cfg, we wouldn't have mods doing the stupid thing of including config.cfg files!.. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.