Crossfire Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Client pickup modes (was CF: Newbie hints)



On Dec 22,  3:38am, Aaron Baugher wrote:
> Subject: Re: CF: Newbie hints
> From: Preston.F.Crow@Dartmouth.EDU (Preston F. Crow)

> > I suspect that you can't fully implement pickup modes on the client as
> > the server may get ahead of the client, particularly when running.

 This is true.

>
> I think you're right.  I was hoping to add a little code to add arrows
> to my pickup list, but a quick look through the client source has me
> thinking that this stuff is in the server, and the client just sends a
> 'pickup X' command when I do 'pickup X.  For that matter, is it
> possible to add commands at all in the client, or does the client just
> pass everything to the server?  I've just started looking through the
> source, so I'm sure this'll become obvious soon.

 Some stuff can be handled by the client.  However, the client does not have as
much information as the server.  Pickup by value density could not be done in
the client, because price is never sent to the client (if you examing an
object, you will get the price, but this creates even more synchronization
issues.)  Arguably, this is probably pretty realistic and should be done -
examining something to determine its worth should not be so trivial that you
can pick up stuff beyond a certain value in a space virtually instanteously.

 Some of this also gets into playability.  How realistic do we want to get onto
the pickup of items?  Realistically, it should also take longer to pick up 20
items than it takes to pickup 1, but with pickup mode 4, both are the same (1
tick).

 pickup/search modes would not be a problem if the player is moving slowly
(walking).  Some form of synchronization could perhaps be added, so the client
would know not to send another move command until it has gotten information
about that space from the server.  This would effectively slow the player down,
but this may be realistic.

 As for what the client can and can not do - client is really a display
mechanism.  The client is not considered trusted, so all data has to be updated
on the server (this even applies for containers, since some decrease weight,
and the server needs to know that so that it can adjust the players weight
accordingly).  Client could implement pseudo containers (group objects based on
name so they don't clutter up the main inventory and accessed sort of via
containers).

 The client has a mix of actual player level commands it sends to the server
(pickup, north, cast, etc), and lower level protocol commands (move object from
ground to inventory, request image, ...)

 Client side pickup mode/search would certainly want to utalize the lower level
client command to move objects around.


-- 

-- Mark Wedel
mark@pyramid.com
-
[you can put yourself on the announcement list only or unsubscribe altogether
by sending an email stating your wishes to crossfire-request@ifi.uio.no]