I stated TCP, I never brought up UDP because I was straight-forward telling the factorio team to stop using UDP because TCP automatically comes with ACK messaging. Along with the fact that it has OOB ability, you get 2-in-1 servicing. UDP is meant for games that constantly send movement updates along with position (like first person shooters), the players do not have to worry about losing packets because the next packet will still have a position marker (this is why laggy players jitter, along with out-of-order and bad programmers). Factorio doesn't really need to worry about that with map dynamics...and that's what I've been trying to explain.This would be true if they used TCP, but they only use UDP, so they don't have those ACK messages.
If the chunk idea never happens, the very least that could happen is simply have the server have an open appended file that saves the changes of the current map...and when the file becomes X in size, a backup is saved for the entire map and a new append file is created. A packet can be sent to all clients letting them know at what incremental sync game tick the backup was generated for, and the client can also do a backup and start their own appended change file. When logging in, the client can simply say what the last game tick sync it remembers, and if the server can go back that far, it can generate a change log from the appendings (otherwise send it the new map entirely).However your idea with the sending only the changes is worth being discussed.
First of all, standard "libraries" have built-in junk. They need to in order to service as many general uses of their work as possible, but not all of it gets used in every game. There is no need for HTTP requestor pings in a game that doesn't show webpages, for example.Use a standardized and real-world-proven protocol and be done.
And it's not like you'll get something like this out of "standardized" crap (and don't say you've seen it, because this is my personal protocol):
https://dl.dropboxusercontent.com/u/246 ... s/rudp.png
Not necessary in TCP, and if you need it in UDP, you're probably doing something wrong.Instead you can send the sequence number of the highest received packet from each peer