[crossfire] Re: Map Protocol Question

Andreas Kirschbaum kirschbaum at myrealbox.com
Mon Aug 22 02:23:37 CDT 2005


Alex Schultz wrote:
>
     
      Quoting Andreas Kirschbaum <
      
      kirschbaum at myrealbox.com
      
      >:
     
     >
     
      > - client receives "map_scroll +1/0"
     
     >
     
      >   client basically ignores it because it has a cleared map state
     
     >
     
     
     >
     
      This ignoring as I see it is the main issue with the current
     
     >
     
      semantics. For one thing the python bot that I started on a while ago
     
     >
     
      wouldn't ignore the map_scroll in this case, and therefore there isn't
     
     >
     
      such a display error in that respect (though it's probably not a good
     
     >
     
      thing to model a proper implimention based on because it has even more
     
     >
     
      display errors).
     
     
Maybe I did use the wrong words here, but the client does not just
ignore the map_scroll command: I tried to say that the client currently
has an empty map. Now he receives the map_scroll command and properly
scrolls the map view. But since an empty map scrolled by one tile is
still an empty map I said it "basically ignores" the map_scroll command.


>
     
      > - client receives "map1a <difference of Scorn to gatehouse>"
     
     >
     
      >   Note: this information is not correct because it is a difference
     
     >
     
      >         from Scorn, not a difference from an empty map. This is why
     
     >
     
      >         some tiles show up as blank for a short time: all tiles that
     
     >
     
      >         did not change are displayed blank (client already has
     
     >
     
      >         cleared his map view).
     
     >
     
     
     >
     
      I'm not exactly sure this is an issue *if* the client doesn't ignore
     
     >
     
      the map_scroll.
     
     
This is not the problem I tried to explain: the client does *not* ignore
the map_scroll command (see above), but the problem is that the server
sends:

1. newmap

2. difference S->G

3. difference E->G

(with S=Scorn, G=gatehouse, E=empty)


Therefore the client updates his map view as follows:

1. newmap: client clears his map view; it is now E.

2. diff S->G: client "patches" his map view (currently E) with a
   difference S->G. This is not correct because that difference should
   be applied to the map view S, but not to E.

3. diff E->G: client "patches" his map view (currently "E patched by
   S->G", which is often "G with a few blank holes in it"). Again, this
   is not correct because this difference should be applied to the map
   view E but not to "G with holes".

    
    


More information about the crossfire mailing list