SimEthereal uses fast and small UDP messaging to share object state between clients
and the server. It operates in an "authoritative server" environment and only the deltas
of a "known good state" are sent so that redundant information can be eliminated.
The "known good state" is synchronized through a sort of transient reliable protocol
that uses a double-ack approach so that messages are always valid.
Each message packs as much state in as possible to try to fit under standard MTU sizes to keep the UDP packets from being split. As such, it's possible, in the worst case, to fit more than 80 object updates in a single 1500 byte message.
Main goals:
- Fast: optimize for message latency and keep overhead low
- Low bandwidth: pack as much state as possible into a single message
- Easy to plugin to jMonkeyEngine applications: uses the JME network service model
- Flexible: provide state syncing without dictating where the state comes from or how it will be used.