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.