[crossfire] Client display logic rewrite

Andreas Kirschbaum kirschbaum at myrealbox.com
Fri Aug 12 04:08:59 CDT 2005


I'm currently fixing the display issues in the client (big faces not
being properly cleared).

Currently (I think) I have a working client and I'm checking the server
for more issues.


There is a mismatch between the protocol specification in
doc/Developers/protocol and the server implementation. For the effects
of a map_scroll command to the (big face) information previously sent by
a map1a command the protocol specification states

|
     
      The server does remember the heads for out of normal map bounds.
     
     |
     
      However, these values are not shifted when the map scrolls.  Taking
     
     |
     
      the example of an image at 27,20 above, if the player moves to the
     
     |
     
      east, the server will send the map scroll command, send the face at
     
     |
     
      26,20, and send either a clear or update for 27,20.
     
     
But the actual server implementation differs: the server just forgets
the out-of-normal-map-bounds information after a map_scroll.

What should I do here?

a) fix the documentation (map_scroll implicitly clears out of map bounds
   information), or

b) fix the server code (send a suitable map1a command to clear/update
   out of map bounds information after a map_scroll)?

To me, solution a) seems appropriate since I don't think it will be very
common that a big face will not shift whenever a map_scroll is sent.
Therefore (normally) the server will have to clear the "old" big faces
anyways. So we would save a little bandwidth with solution a). (And
changing the protocol specification would not break anything more than
we have now since that is what the server currently implements.)


Another question: I did fix all clients (x11, gtk, gtk2) and (where
appropriate) with -smooth, -sdl, and -opengl. Unfortunately, I cannot
test gtk2 -opengl because it crashes at program start up with a
"BadMatch" error. Is this a problem with my X11 setup or is the client
broken?

    
    


More information about the crossfire mailing list