[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