Inspired by different variants of MP code, we’ve chosen to have a spacially partitioned reference world on the server, where clients are sent subset of the full world data based on selection boxes (3d) around their current positions.
The selection picks out a set of world entities, that are placed into a local world view/state message, serialized, and compared /diffed to the last sent world state. The actual data transmitted to the client then becomes only a binary patch, rather than a full serialized world view. And of course, a binary patch may be easily zipped for further size reduction.
Much learned from http://www.gameproducer.net/2006/12/16/planning-is-essential-in-writing-multiplayer-network-code/ (old but even more so valid!)