[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