I have server objects that have corresponding client objects. The data to be kept in sync is inside the server object's key/value dictionary. To keep the client objects in sync with the sever objects, I want the server to send the key/value dictionary every frame for each object.
What data-structure/algorithm will allow me to send a list of key/value dictionaries using the least amount of bits?
Bonus constraint 1: For each type of object, the values of some keys change more often than others. Bonus constraint 2: Memory usage on the server side is relatively expensive.
You don't need to send the whole dictionary. Instead, send just what's changed.
You don't need to send it each frame. Instead, send it on regular intervals that have nothing to do with the frame rate.
An important idea to keep in mind in the second point is that clients can predict changes in game state - the game can go on to be simulated in between receiving information from the server, and then only has to correct the mistakes after it receives authoritative information from the server again.