[crossfire] Re: Map Protocol Question
Mark Wedel
mwedel at sonic.net
Thu Jul 7 01:45:21 CDT 2005
Alex Schultz wrote:
>
Wouldn't it work if you made the server behave properly, then let existing
>
clients just send their mapredraw anyways? It might be a tad bit of extra wasted
>
bandwidth, but it would make new servers behave properly to the protocol spec
>
and old clients wouldn't be hurt, and just continue to waste bandwidth with the
>
mapredraw to a similar to how they do already.
The server is arguably behaving properly - as said, the design is that the
server basically just sends what changes. The event that causes those changes
isn't a concern to the server
Originally, the client did not have any fog of war, so this was all very
simple - the server and client would remain in sync, as the server would send
updated info for all spaces that have changed.
However, when fog of war was added, it was necessary for the client to know
when its fog of war data was no longer valid - hence the addition of the newmap
command. Originally, this was basically something to just tell the client 'get
rid of your fog data' - the server would still do the 'right' thing and only
update the spaces that changed, and the client was still supposed to remember
what data was visible.
I imagine it became too much a problem to try and figure out what spaces the
client should keep, and which it should get purge - it just became simpler to
purge all the data and do a mapredraw. So I imagine that is how we got to that
state.
Now, when maps are being changed, it probably is more efficient to have a
server->client command that basically says 'I'm clearing everything' - that
would be more efficient than the server sending the coordinates and whatnot for
a bunch of spaces that need to be cleared.
The easiest way to handle this is to probably add something like a newmap1
command. The client can negotiate its understanding of that with the setup
command like the other stuff. IF the client gets that command, it acts liek it
does now - clear out its fog data, and the server knows that if it sends that
command, it also clears out all its data. So when the client gets it, it then
knows it doesn't have to send a mapredraw request to the server.
However, if doing, that goes back to a discussion from last week about fog map
caching and stuff - the newmap1 command would be the obvious place to include
map name and any other pieces of data.
More information about the crossfire
mailing list