Differences between Q1, Quake World and Net codebases (qc)
Differences between Q1, Quake World and Net codebases (qc)
edit by Spirit: This thread was taken over by offtopic arguing, please see the forked new thread at http://forums.inside3d.com/viewtopic.php?f=9&t=4850
-----
What is the difference between the QuakeC codebase of Quake, Quake World and NetQuake?
-----
What is the difference between the QuakeC codebase of Quake, Quake World and NetQuake?
Re: Differences between Q1, Quake World and Net codebases (q
Quake's a dumb client.
Quakeworld is not. It tries to extrapolate from what it recieves instead and relies more on broadcast messages.
Also Quakeworld generally strips a lot of things, so if you love particle() and punchangles, you're going to have to adjust.
Quakeworld is not. It tries to extrapolate from what it recieves instead and relies more on broadcast messages.
Also Quakeworld generally strips a lot of things, so if you love particle() and punchangles, you're going to have to adjust.
i should not be here
-
- Posts: 34
- Joined: Sat Feb 25, 2012 6:44 am
- Location: Adelaide, South Australia
- Contact:
Re: Differences between Q1, Quake World and Net codebases (q
...leileilol wrote:Quake's a dumb client.
Re: Differences between Q1, Quake World and Net codebases (q
Dumb meaning its not intelligent in terms of latency prediction. Though, it's all i've used for quake1. Since movement/shots fired are sync'd u dont seem to notice much sub 50 ping. In QW u can run around like a freakin hippy at a nudist colony but have to wait for latency to get your shots out, which seem to come late but hit direct, something odd about that gameplay. QW mods though are WAY behind the times. CTF is not active and CA uses 1997 code bluh plain f'ugly.
EDIT: KTX is not a QuakeC mod, so this is the exception!
EDIT: KTX is not a QuakeC mod, so this is the exception!
Last edited by r00k on Sat Apr 14, 2012 8:05 am, edited 2 times in total.
Re: Differences between Q1, Quake World and Net codebases (q
the differences between the qc code is that qw mods are not generally allowed to affect the player's movement (jump heights, swim speed, etc) without asking the engine to do it for it (ie: .gravity and .maxspeed instead of dumping code in playerpostthink). This is because the client needs to match, and if it doesn't then you get juddery movement/jumps.
qw qc code avoids the use of MSG_BROADCAST. Its available, but its better to use MSG_MULTICAST (really though, you're better off using the proper extension builtin instead of directly using WriteByte).
qw qc code doesn't support particle(). there are some replacement TE_foo effects for commonly used effects, but that's pretty much just blood.
qw's te_gunshot has a count argument, resulting in a single te_foo in quakeworld where you'd have 12 separate bandwidth suckers in nq.
qw qc code permits multiple thinks on a single entity in a single frame, keeping timing more correct even with an overburdened server (other programs stealing cpu etc).
qw qc code runs players out of order (when handling packets received from the client) instead of all ents thinking in entnum order. Note that DP defaults to be more like QW here, its just a sideeffect of prediction.
svc_setview does not exist in quakeworld. spectators are an engine feature and mods do not need to do anything for them.
vanilla quakeworld does not support .spawnflags based spawn filters - it'll always act as if deathmatch 1 is set. custom qw engines have reverted to nq behaviour here.
quakeworld has userinfo stuff, which permits per-user settings and options which are readable by the gamecode. nq depends fully upon settings stored on the server.
most qw mods do not support single player (see .spawnflags comment). the server still supports all the builtins the ai uses, just that most mods lack monsters and thus lack ai too. quakeworld's traditional only-dedicated-servers stance kinda removes the need for single player support in mods.
for a full list of the differences between nq and qw (and h2) gamecode, see FTE's progstype variable.
in general the changes required to convert a mod from nq to qw equate to: replacing defs.qc for the qw systemdefs/systemfields/builtins, removing the .velocity changes in client.qc, particle() -> te_[lightning]blood, .punchangles->svc_big/smallkick, EF_MUZZLEFLASH->svc_muzzleflash, te_gunshot -> te_gunshot+writebyte(count), bprint(msg)->bprint(PRINT_HIGH,msg), svc_cdtrack changes, svc_intermission changes.
certain mods have additional dependancies (eg: svc_setview), but the above should cover vanilla qc.
for much of it you can use #ifdefs with fteqcc or frikqcc and write a mod that directly supports either.
qw qc code avoids the use of MSG_BROADCAST. Its available, but its better to use MSG_MULTICAST (really though, you're better off using the proper extension builtin instead of directly using WriteByte).
qw qc code doesn't support particle(). there are some replacement TE_foo effects for commonly used effects, but that's pretty much just blood.
qw's te_gunshot has a count argument, resulting in a single te_foo in quakeworld where you'd have 12 separate bandwidth suckers in nq.
qw qc code permits multiple thinks on a single entity in a single frame, keeping timing more correct even with an overburdened server (other programs stealing cpu etc).
qw qc code runs players out of order (when handling packets received from the client) instead of all ents thinking in entnum order. Note that DP defaults to be more like QW here, its just a sideeffect of prediction.
svc_setview does not exist in quakeworld. spectators are an engine feature and mods do not need to do anything for them.
vanilla quakeworld does not support .spawnflags based spawn filters - it'll always act as if deathmatch 1 is set. custom qw engines have reverted to nq behaviour here.
quakeworld has userinfo stuff, which permits per-user settings and options which are readable by the gamecode. nq depends fully upon settings stored on the server.
most qw mods do not support single player (see .spawnflags comment). the server still supports all the builtins the ai uses, just that most mods lack monsters and thus lack ai too. quakeworld's traditional only-dedicated-servers stance kinda removes the need for single player support in mods.
for a full list of the differences between nq and qw (and h2) gamecode, see FTE's progstype variable.
in general the changes required to convert a mod from nq to qw equate to: replacing defs.qc for the qw systemdefs/systemfields/builtins, removing the .velocity changes in client.qc, particle() -> te_[lightning]blood, .punchangles->svc_big/smallkick, EF_MUZZLEFLASH->svc_muzzleflash, te_gunshot -> te_gunshot+writebyte(count), bprint(msg)->bprint(PRINT_HIGH,msg), svc_cdtrack changes, svc_intermission changes.
certain mods have additional dependancies (eg: svc_setview), but the above should cover vanilla qc.
for much of it you can use #ifdefs with fteqcc or frikqcc and write a mod that directly supports either.
-
- Posts: 34
- Joined: Sat Feb 25, 2012 6:44 am
- Location: Adelaide, South Australia
- Contact:
Re: Differences between Q1, Quake World and Net codebases (q
I think the word your looking for is inferior, it's inferior compared to today. That doesn't mean it's dumb, at the time it was way ahead and made what multiplayer is today. And hate me, but I prefer the grainy/dirty look of Quake over the smoothed out and clean clients.r00k wrote:Dumb meaning its not intelligent in terms of latency prediction. Though, it's all i've used for quake1. Since movement/shots fired are sync'd u dont seem to notice much sub 50 ping. In QW u can run around like a freakin hippy at a nudist colony but have to wait for latency to get your shots out, which seem to come late but hit direct, something odd about that gameplay. QW mods though are WAY behind the times. CTF is not active and CA uses 1997 code bluh plain f'ugly.
EDIT: KTX is not a QuakeC mod, so this is the exception!
Re: Differences between Q1, Quake World and Net codebases (q
No it isn't, and he isn't looking for "superior" either. We aren't little children.Dirge Inferno wrote: I think the word your looking for is inferior,
You misunderstood the term "dumb". Even Carmack has described Quake being a dumb client.
i should not be here
Re: Differences between Q1, Quake World and Net codebases (q
'dumb client' is a perfectly correct term to describe NQ. google for 'dumb terminal' and other 'dumb' things in computing.
the vanilla doom engine is not a dumb client, but quake is. the difference is that doom and other games of its era were peer-to-peer engines and all run the gamecode individually as a way to keep sync, where quake merely displays what its told to display. The only thing that quake displays that its not told to display is the console, the view angles, and the particles, and I suppose some flickering lights. Everything else is positioned exactly as the server tells it (give or take a little interpolation).
compared to any other game ever, quake really is a dumb client. its like playing web-based games using only html and no javascript.
basically its the difference between sending images from the server, and having code running on the client generating the image locally. just that the 'image' in this case is the gamestate snapshot.
the vanilla doom engine is not a dumb client, but quake is. the difference is that doom and other games of its era were peer-to-peer engines and all run the gamecode individually as a way to keep sync, where quake merely displays what its told to display. The only thing that quake displays that its not told to display is the console, the view angles, and the particles, and I suppose some flickering lights. Everything else is positioned exactly as the server tells it (give or take a little interpolation).
compared to any other game ever, quake really is a dumb client. its like playing web-based games using only html and no javascript.
basically its the difference between sending images from the server, and having code running on the client generating the image locally. just that the 'image' in this case is the gamestate snapshot.
-
- Posts: 34
- Joined: Sat Feb 25, 2012 6:44 am
- Location: Adelaide, South Australia
- Contact:
Re: Differences between Q1, Quake World and Net codebases (q
Dumb; simplify or reduce the intellectual content of something so as to make it accessible to a larger number of people.leileilol wrote:No it isn't, and he isn't looking for "superior" either. We aren't little children.Dirge Inferno wrote: I think the word your looking for is inferior,
You misunderstood the term "dumb". Even Carmack has described Quake being a dumb client.
If John called Quake a dumb client then it's obvious he doesn't care about making games anymore and only cares about the $$. Anyway it's not, it's a great game.
Re: Differences between Q1, Quake World and Net codebases (q
Nope, "dumb client" is used in the very same context as "dumb terminal", and no amount of trying to ascribe other motivations will prove otherwise.
The slashdot post linked dates from 1999 so any attempt to use it as evidence for JC's attitude today is completely invalid - I'd suggest actually reading it next time. Further proof? Here's one from 1996 - http://www.team5150.com/~andrew/carmack ... #d19960802
People here aren't stupid. People here have been part of the Quake community since the 90s and know this stuff already. That kind of talk ain't gonna wash.
The slashdot post linked dates from 1999 so any attempt to use it as evidence for JC's attitude today is completely invalid - I'd suggest actually reading it next time. Further proof? Here's one from 1996 - http://www.team5150.com/~andrew/carmack ... #d19960802
Definition of "dumb terminal" - http://www.computer-dictionary-online.o ... 20terminalI am sad to see the elegent client-as-terminal setup go away
Which quite accurately mirrors the NetQuake client, just handling output and input but with all significant processing happening on the server.A type of terminal that consists of a keyboard and a display screen that can be used to enter and transmit data to, or display data from, a computer to which it is connected. A dumb terminal, in contrast to an intelligent terminal, has no independent processing capability or auxiliary storage and thus cannot function as a stand-alone device.
People here aren't stupid. People here have been part of the Quake community since the 90s and know this stuff already. That kind of talk ain't gonna wash.
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
We knew the words, we knew the score, we knew what we were fighting for
-
- Posts: 34
- Joined: Sat Feb 25, 2012 6:44 am
- Location: Adelaide, South Australia
- Contact:
Re: Differences between Q1, Quake World and Net codebases (q
I never said people here were stupid, and dumb client isn't exactly an official definition it's slang talk. And I did read it, sorry. "That kind of talk", what?
Re: Differences between Q1, Quake World and Net codebases (q
You didn't say people are stupid, but you're sure treating us as if we were.Dirge Inferno wrote:I never said people here were stupid, and dumb client isn't exactly an official definition it's slang talk. And I did read it, sorry. "That kind of talk", what?
This kind of talk, by the way:
If you read the slashdot post, you would have known that it dates from 1999 and therefore has no bearing whatsoever on JC's attitude today.Dirge Inferno wrote:If John called Quake a dumb client then it's obvious he doesn't care about making games anymore and only cares about the $$. Anyway it's not, it's a great game.
A quick google for "dumb client" would have also helped with explaining what is meant. And regarding slang talk, a whole lot of computing terms originated as slang talk too. Where do you think "bug", for example, came from? "dumb terminal" is a phrase that has been in use for a long long time, it's reasonable to expect that when someone mentions "dumb terminal" the intended meaning is clear to the audience, particularly when the audience has the required background and knowledge. Any attempt to try prove otherwise (e.g. "If John called Quake a dumb client then it's obvious he doesn't care about making games anymore and only cares about the $$") is a waste of your own time. Don't even go there. Or do, if you want "Death Metal 2000" all over again.
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
We knew the words, we knew the score, we knew what we were fighting for
-
- Posts: 34
- Joined: Sat Feb 25, 2012 6:44 am
- Location: Adelaide, South Australia
- Contact:
Re: Differences between Q1, Quake World and Net codebases (q
How so?mh wrote:You didn't say people are stupid, but you're sure treating us as if we were.
The desire to make money will always overthrow the desire to make magic.mh wrote:This kind of talk, by the way:
If you read the slashdot post, you would have known that it dates from 1999 and therefore has no bearing whatsoever on JC's attitude today.
Sorry I use a real dictionary for words, not the internet.mh wrote:A quick google for "dumb client" would have also helped with explaining what is meant. And regarding slang talk, a whole lot of computing terms originated as slang talk too. Where do you think "bug", for example, came from? "dumb terminal" is a phrase that has been in use for a long long time, it's reasonable to expect that when someone mentions "dumb terminal" the intended meaning is clear to the audience, particularly when the audience has the required background and knowledge.
What?mh wrote:Any attempt to try prove otherwise (e.g. "If John called Quake a dumb client then it's obvious he doesn't care about making games anymore and only cares about the $$") is a waste of your own time. Don't even go there. Or do, if you want "Death Metal 2000" all over again.
Re: Differences between Q1, Quake World and Net codebases (q
Don't feed this troll please.
Improve Quaddicted, send me a pull request: https://github.com/SpiritQuaddicted/Quaddicted-reviews
-
- Posts: 34
- Joined: Sat Feb 25, 2012 6:44 am
- Location: Adelaide, South Australia
- Contact:
Re: Differences between Q1, Quake World and Net codebases (q
I'm not a troll.