(subject missing)

J C Lawrence claw at under.engr.sgi.com
Thu Mar 26 09:32:06 CET 1998


<<Original text was reformatted for readability>>

Date: Thu, 26 Mar 1998 16:24:03 +0100
From: Bert Peers <rat at larian.com>
To: swd at dogstar.mit.edu
Subject: Re: What ship movement info passes from client/server?

Dan Stimits wrote:

> This will sound complicated, but is very easy, and is basically an
> extension of adding the bank.  I don't know if anyone here has ever
> programmed in Postscript (I love this stack based language...too bad
> my printer doesn't), but there is something there called a Bezier
> curve...PEX has support for something similar called a B-Spline
> curve.  B-Splines are very efficient to compute and draw by
> computers, and Bezier curves in Postscript are what power the
> graphics display in NeXT computers.  We could get a tremendous
> smoothness increase in the most lagged net conditions by using
> these.

I'm afraid I don't think this is a good idea... B-Splines are meant to
have an interpolating curve without the RungeKutta oscillating effect
common in polygonal interpolations...  so it makes a great tool for
tracing out be-here-at-time-t points when building an animation, or to
fit surface splines through 3D scanner data to compress surface
descriptions, but I don't feel it's appropriate for this task.

Basically, a spline is just a connected set of locally smooth (C2
continuous) polygonal fragments; so cubic splines are, when seen
through a localizing timewindow, not any different from an ordinary
acceleration-driven cubic motion.  So rather than dealing with splines
you could as well feed an acceleration vector into a dynamic system
and see how the velocity and subsequentially the position change
smoothly.

Besides imho pulling in overkill math, you're also confusing the
client and server issues, if I may say so...  What you want is smooth
out shipmovement on the client side caused by chunky updates from the
server that make your vessel hop whenever lag is too high..  However,
for all you know, the ship *is* moving perfectly smooth on the server,
it's just your client that's having trouble to mimic the movement
onscreen because it's unavoidably lagging (and subsampling) positions.
So providing a less choppy experience is entirely a client issue, and
messing up the communication protocol, or worse yet, the server info
itself, to smooth things out is considered A Very Bad Idea by game
devps.

What you want to do is check out client techniques for nonlinear
predictions.  

Recently some flightsim was released that can be played over the net
at 200 ms lag or even worse; you won't notice as the client is always
predicting where you (and your enemies) are going to, based on current
velocities, and if a new server package arrives that tells the client
that it's assumptions are all wrong, due to unexpected wild behavior,
it interpolates smoothly from the current false position to the real
one in just a few frames, to avoid any planes hopping around, the "huh
?  one sec it's there and now it's over *there* ?!?" effect seen in
Quake.

I think this is what you (perhaps unknowingly) were suggesting, since
that's what a spline really does : based on current interpolated
positions, and on hard continuity constraints, there is only 1 degree
of freedom in placing subsequent trajectory parts, so you can't be off
too much by following the trajectory formed by a good guess...
 Okay, I hope that didn't sound too arrogant :) and maybe it'll help
you look at the better-client problem from the right angle (no pun)

Cya, Bert
http://www.larian.com/rat

(~~~~~~~~~~~~~~~~~[ WolfPack Developmers' List ]~~~~~~~~~~~~~~~~~~~~~~)

     XShipWars: http://dogstar.mit.edu/bajor3d/
     Bajor3D: telnet://dogstar.mit.edu:1701
              swserv://dogstar.mit.edu:8472
     IRC: us.austnet.org  Channel: #wolfpack  (Fri, Sat, Sun)

     To unsubscribe, send e-mail to swd-request at dogstar.mit.edu
       with a message body of "unsubscribe"
(_____________________________________________________________________)

--
J C Lawrence                               Internet: claw at null.net
(Contractor)                               Internet: coder at ibm.net
---------(*)                     Internet: claw at under.engr.sgi.com
...Honourary Member of Clan McFud -- Teamer's Avenging Monolith...



More information about the mud-dev-archive mailing list