View previous topic :: View next topic |
Author |
Message |
Downsider

Joined: 16 Sep 2008 Posts: 478
|
Posted: Fri Aug 28, 2009 4:56 pm Post subject: Question about QuakeWorld |
|
|
How is movement handled in QW?
Is it entirely clientside, then positional packets sent to the server?
Is movement logic done on both client and serverside, and it simply sends key inputs?
Is there a way to replicate it using CSQC, rather than a total rewrite of the network code? |
|
Back to top |
|
 |
Spike
Joined: 05 Nov 2004 Posts: 944 Location: UK
|
Posted: Sat Aug 29, 2009 11:35 am Post subject: |
|
|
movement is calculated both clientside and server side.
clientside is just a prediction with the unacknowledged movement frames applied to the last-received server state.
the actual predicition for the standard player physics is exposed via a builtin named 'runstandardplayerphysics', which... runs the engine's standard player physics. For a QW engine, this is QW physics.
For an example of running prediction within csqc, consult FTE's csqctest mod, in fte's trunk/quakec/csqctest subdirectory on the svn.
prediction.qc is the file that updates the current origin, while player.qc is responsible for getting the current player origin from the server and animating the player locally (the way player.qc is set up is to faciliate local animations (read: q3 player model replacements or potentially skeletal animation blends)). _________________ What's a signature? |
|
Back to top |
|
 |
Downsider

Joined: 16 Sep 2008 Posts: 478
|
Posted: Sun Aug 30, 2009 3:46 pm Post subject: |
|
|
Now, as far as I know, and correct me if I'm wrong, the Source engine uses methods similar to this?
Now, why can a player download and use a speedhack if this is the case? Wouldn't only his clientside prediction show up further ahead, and one it gets the corresponding packets from the server, it would be shot back to where he should be?
Also, is it possible to communicate client -> server variables with CSQC? |
|
Back to top |
|
 |
Spike
Joined: 05 Nov 2004 Posts: 944 Location: UK
|
Posted: Sun Aug 30, 2009 5:43 pm Post subject: |
|
|
the movement frames contain a duration. if you change that duration, you can tell the server that 500 seconds passed within a single second.
The server needs to protect against that a bit, although with major packetloss, its possible to get false positives.
and... stuffcmds. :s
localcmd("cmd blah\n");
:(
there's a sendevent builtin too _________________ What's a signature? |
|
Back to top |
|
 |
Downsider

Joined: 16 Sep 2008 Posts: 478
|
Posted: Sun Aug 30, 2009 7:11 pm Post subject: |
|
|
Thanks for the info
Cleared up a lot of confusion for me. Would you call using CSQC for movement prediction a viable route, anyway? I don't feel like porting QuakeWorld kthxbai. |
|
Back to top |
|
 |
|