[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4787: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4789: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4790: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4791: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
InsideQC Forums • View topic - Differences between Q1, Quake World and Net codebases (qc)

Differences between Q1, Quake World and Net codebases (qc)

Discuss programming topics for any language, any source base. If it is programming related but doesn't fit in one of the below categories, it goes here.

Moderator: InsideQC Admins

Differences between Q1, Quake World and Net codebases (qc)

Postby JasonX » Fri Apr 13, 2012 1:54 am

edit by Spirit: This thread was taken over by offtopic arguing, please see the forked new thread at viewtopic.php?f=9&t=4850
-----


What is the difference between the QuakeC codebase of Quake, Quake World and NetQuake?
JasonX
 
Posts: 422
Joined: Tue Apr 21, 2009 2:08 pm

Re: Differences between Q1, Quake World and Net codebases (q

Postby leileilol » Fri Apr 13, 2012 10:38 am

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.
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Re: Differences between Q1, Quake World and Net codebases (q

Postby Dirge Inferno » Fri Apr 13, 2012 11:35 pm

User avatar
Dirge Inferno
 
Posts: 34
Joined: Sat Feb 25, 2012 6:44 am
Location: Adelaide, South Australia

Re: Differences between Q1, Quake World and Net codebases (q

Postby r00k » Sat Apr 14, 2012 4:09 am

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!
Last edited by r00k on Sat Apr 14, 2012 8:05 am, edited 2 times in total.
r00k
 
Posts: 1111
Joined: Sat Nov 13, 2004 10:39 pm

Re: Differences between Q1, Quake World and Net codebases (q

Postby Spike » Sat Apr 14, 2012 7:56 am

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. :P

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.
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Re: Differences between Q1, Quake World and Net codebases (q

Postby Dirge Inferno » Sat Apr 14, 2012 8:41 pm

User avatar
Dirge Inferno
 
Posts: 34
Joined: Sat Feb 25, 2012 6:44 am
Location: Adelaide, South Australia

Re: Differences between Q1, Quake World and Net codebases (q

Postby leileilol » Sat Apr 14, 2012 9:36 pm

leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Re: Differences between Q1, Quake World and Net codebases (q

Postby Spike » Sun Apr 15, 2012 6:53 am

'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.
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Re: Differences between Q1, Quake World and Net codebases (q

Postby Dirge Inferno » Sun Apr 15, 2012 1:14 pm

User avatar
Dirge Inferno
 
Posts: 34
Joined: Sat Feb 25, 2012 6:44 am
Location: Adelaide, South Australia

Re: Differences between Q1, Quake World and Net codebases (q

Postby mh » Sun Apr 15, 2012 2:36 pm

User avatar
mh
 
Posts: 2292
Joined: Sat Jan 12, 2008 1:38 am

Re: Differences between Q1, Quake World and Net codebases (q

Postby Dirge Inferno » Sun Apr 15, 2012 3:42 pm

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?
User avatar
Dirge Inferno
 
Posts: 34
Joined: Sat Feb 25, 2012 6:44 am
Location: Adelaide, South Australia

Re: Differences between Q1, Quake World and Net codebases (q

Postby mh » Sun Apr 15, 2012 4:01 pm

User avatar
mh
 
Posts: 2292
Joined: Sat Jan 12, 2008 1:38 am

Re: Differences between Q1, Quake World and Net codebases (q

Postby Dirge Inferno » Sun Apr 15, 2012 4:12 pm

User avatar
Dirge Inferno
 
Posts: 34
Joined: Sat Feb 25, 2012 6:44 am
Location: Adelaide, South Australia

Re: Differences between Q1, Quake World and Net codebases (q

Postby Spirit » Sun Apr 15, 2012 4:24 pm

Don't feed this troll please.
Improve Quaddicted, send me a pull request: https://github.com/SpiritQuaddicted/Quaddicted-reviews
Spirit
 
Posts: 1037
Joined: Sat Nov 20, 2004 9:00 pm

Re: Differences between Q1, Quake World and Net codebases (q

Postby Dirge Inferno » Sun Apr 15, 2012 4:27 pm

I'm not a troll.
User avatar
Dirge Inferno
 
Posts: 34
Joined: Sat Feb 25, 2012 6:44 am
Location: Adelaide, South Australia

Next

Return to General Programming

Who is online

Users browsing this forum: No registered users and 3 guests