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
Baker 
Yes, would you make that video demonstrating 999's brokenness? Or at least briefly talk about it? Cause I'm curious to know. 
@ORL 
Yes, in time I will make a video.

mh has an expression "once you see something, you can't unsee it".

I think seeing in this case is going to be necessary. 
Protocol 999 
I'm the original designer.

The core idea is actually quite solid. It's based on 666, but with the addition of a bunch of opt-in features. The client and server negotiate which features to use, and the whole thing can gracefully degrade if a feature is unsupported.

It was always more about higher precision angles and more TE_ effects than big coords, or at least that's how it seems to me thinking back, but big coords was just one of the things it could also support. The important thing though is that it's extensible nature means that you could plug in your own big coords system if you wanted.

Being built on 666 means that it inherits all of an NQ protocol's weaknesses. That's not an attack on 666, it's an observation on NQ protocols in general. There are much better ways of doing all of this stuff; supporting big coords, more precision, more effects AND being more efficient in the data stream. NQ is a bit brute force, which is fine in simpler setups but hits scalability ceilings much faster. 
 
mh: it was always more about higher precision angles ...

Translated: nice smooth rotating doors and draw bridges.

(like Remake Quake could do -- as opposed to clunky hipnotic doors)

Fitz 666 didn't have enough angle precision resulting in walking on a drawbridge coming down to not feel jerky and the same for getting pushed by an opening door. Also the higher precision angles were used for some rotating effects in QuakeC. 
So... 
999 should be used on any map with bsp rotation such as drawbridges, pushable gates (ne_ruins), rotating path changers (like Dismal Oubliette but rotaty), etc.

OR maps as big as Orl's.

Still not sure what the problem with it is. 
 
It should probably just be renamed to "ORL Protocol." 
@qmaster 
Nope. 999 does nothing for hipnotic rotation at all.

If you want to see real rotation, you'll have to play Remake Quake and trigger the draw bridge or find a rotating door.

Must use the Remake Quake engine -- Quakespasm doesn't support true rotation (nor does Mark V, it did briefly once upon a time but it led to the discovery of some oddness with existing Quake maps -- even a couple of stock Quake ones -- and was removed).

Sadly, true rotation sadly interferes some with existing maps where entities or even maps have the angles key set (and they shouldn't be). I think dis_sp3 is an example. 
 
a lot of games come with two *.exe's
one for windows 32 bits and one for windows 64 bits...quakespasm have quakespasm.exe and quakespasm-sdl2.exe... even quake has two exe's (normal and opengl)

maybe would be cool to have two markv.exe's, one for old maps and one for new maps with true rotation :)

just my two cents :) 
MH 
There's something strange I've spotted on your GLQuake code, in R_BuildLightMap.

This is your source:

for (j=0 ; j<smax ; j++)
{
t = *bl++;
t >>= 8;
if (t > 255)
t = 255;
dest[j] = t;
}


But this is the original source:

for (j=0 ; j<smax ; j++)
{
t = *bl++;
t >>= 7;
if (t > 255)
t = 255;
dest[j] = 255-t;
}


What's the reasoning behind that?
(255 - (t >> 7)) == (t >> 8) ?

Oh, wait, I've found it:
"shift the lightmap by 8 (jnstead of by 7) in R_BuildLightmap"
Overbrights, ok.

However, by doing that you lose precision, resulting in more abrupt discrepancies in light values across different surfaces, which is likely another reason why the lightmapped water in your GLQuake engine looks worse than in Retroquad.

Compare these shots:
GLQuake
Retroquad (with soft depth disabled) 
 
Yeah, that's overbrights. Yeah, it loses 1 bit of precision, but it still has 256 gradations of light - software Quake only had 64.

Rotation: higher precision can't fix Hipnotic rotation, that was born broke (fun fact: the hackiest mod is Nehahra, the second-most hackiest is Hipnotic). I can't recall the exact use case but it would have been something like a drawbridge that had the herky-jerkies with standard 8-bit angles. 
 
Retroquad uses the full 8 bits of precision, and it also compensates for the loss of precision. It has nothing in common with WinQuake when it comes to shading & texturing.

The fact is that the same light can be raycast to slightly different levels across the edges shared between different surfaces. The less precision is used, the bigger this difference can become. 
 
The full range of light scales per the BSP format can't be represented by standard 2x overbrights. "z" is double-bright, so with 4 lightsyles combined I make that 11 bits per channel, and that's not including dynamics.

I guess that the point is, you're always going to be losing precision. 
@Tribal 
maybe would be cool to have two markv.exe's, one for old maps and one for new maps with true rotation :)

32-bit vs. 64 bit doesn't have anything to do with rotation. Remake Quake engine with true rotation is a 32-bit.

Half-Life has had true rotation since 1998 and it evident in all aspects of the game.

There really aren't any advantages for 64-bit on Windows that I can name, except 64-bit uses a bit more memory because pointers are twice the size.

The Linux build of Mark V, for instance, has always been 64 bit. 
 
I guess it wasn't clear that I'm implying that the loss of precision can be compensated for by doing t = (t + (1 << 7)) >> 8. It's exactly the same principle of adding 0.5 to the velocity to fix the gravity issues in low framerates. It's obvious.

Anyway, it may be not enough. Besides this compensation, Retroquad performs color correction, gamma correction, brightness correction and multiple kinds of error diffusion.

Maybe the results will be better when your code gets ported to Mark V or other advanced engines. 
@Baker 
The win32/win64 bits was used just as an example of games that come with two exe's. I didn't want to imply that it has something to do with true rotation :)

Well, forget my lame example... My point is, why not compile two markV.exe's? One to play old maps and one (with true rotation) to play new maps that can use this feature? =D 
Yeah, Sure Not Quite Mark V But Whatever 
A induces B.

Image ---> video 
@mankrip 
That's just rounding to nearest rather than rounding down.

Believe me, I've rewritten the lightmapping code to use L16, RGB16, RGB32F, RGB10A2 and other formats over the years. I've written GPU lightmap implementations where the 4 styles are combined on the GPU with zero precision loss. I've stored exponential factors in the alpha channel and unpacked them in a shader. I've even done 4x overbrights with standard RGB8 lightmaps, losing 2 bits of precision.

This is not a big deal. For lightmaps the extended range is more important.

I guess a version 3 using L16 lightmaps might be in order to prove this. 
 
And just in case this needs to be explicitly stated.

The lightmapped water path uses exactly the same code as regular lightmapped surfaces. In GLQuake that's just multiplying 2 numbers, and nobody can claim that one way of multiplying 2 numbers gives a better or different result than another.

Frankly, I'm sick of hearing "Retroquad is better because..." - where can I download Retroquad, run it, study it's code and learn from it? Nowhere. You may as well be talking about touched-up screenshots for all the practical use that is. I've heard the mouth, show me the trousers. 
Arcane Sprites And Particles 
I was talking with some others about the way that Arcane's particle effects are rendered in different engines. I was wondering if you had any plans to bring Quakespasm's level of detail to the engine. QS doesn't really do a whole lot but there are some extra sprites for models like the flame. Their absence is pretty striking in Mark V. Here's what I mean:

QS:
https://i.imgur.com/5lvrO9y.jpg

Mark V:
https://i.imgur.com/rmgvRMq.jpg

I didn't even think that QS was doing anything in particular regarding Arcane's extra particle effects. I do know that QSS takes it a step further with smoke but I'm not expecting that level of detail in Mark V. I also know it's a pain when users make requests like this but don't get me wrong, I'm not asking for this to be turned into an existing engine. I just like the extra sprites and I was wondering if there were any plans for something like this. 
Their Absence Is Pretty Striking In Mark V 
not sure what you mean, i believe the particles not showing up on mark V - it's on your side

i have no probs here
https://imgur.com/a/YBJ9pFq 
 
I have a feeling that you're not using a default setup. The flame itself in your photo looks like a sprite or even just a bunch of particles lumped together. In a clean install of Mark V and a fresh install of Arcane 1.7.1 with default settings, flames don't look like that. 
 
Version 3, with GL_LUMINANCE16 lightmaps; thse are 16-bit lightmaps with 7 more bits of precision than GLQuake without overbrights and 8 more bits than GLQuake with overbrights. I'd encourage anyone who thinks that bits of precision in lightmaps are super-impotrant to run this and see if they actually are. I'd even encourage double-blind tests.

http://www.quaketastic.com/files/misc/Q1LitWater_3.zip 
@Poorchop 
yeah, the patricles depend on temp1 in AD cfg settings 
Ah The Flames 
it's QMB enabled in my case, you can turn them off 
GPU Lightmaps Implmentation 
Quake 2 engine, D3D9, with GPU-animated lightstyles and GPU dynamic lights; renders the lightmaps at the full original precision of the BSP light data lump; unlimited dynamic range for added dynamic lights.

http://www.quaketastic.com/files/misc/Quake2GPULightmaps.zip

It's a long time since I worked on this so I don't know how robust it is, but it should be fine for playing through the original SP missions. 
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.