| name | state-sync |
| description | Game state synchronization, snapshot systems, and conflict resolution for consistent multiplayer experience |
| sasmp_version | 1.3.0 |
| version | 2.0.0 |
| bonded_agent | 04-state-sync-expert |
| bond_type | PRIMARY_BOND |
| parameters | {"required":["sync_model","update_rate_hz"],"optional":["buffer_size","interpolation_delay_ms"],"validation":{"sync_model":{"type":"string","enum":["snapshot","delta","lockstep","interest_management"]},"update_rate_hz":{"type":"integer","min":1,"max":128},"buffer_size":{"type":"integer","min":2,"max":10,"default":3},"interpolation_delay_ms":{"type":"integer","min":50,"max":200,"default":100}}} |
| retry_config | {"max_attempts":3,"backoff":"exponential","initial_delay_ms":50} |
| observability | {"logging":{"level":"debug","fields":["entity_count","delta_size","checksum"]},"metrics":[{"name":"sync_delta_bytes","type":"histogram"},{"name":"sync_entities_updated","type":"counter"},{"name":"sync_desync_detected","type":"counter"}]} |
State Synchronization
Ensure consistent game state across all connected players.
Snapshot Interpolation
class SnapshotBuffer {
constructor(size = 3, delay = 100) {
this.buffer = [];
this.size = size;
this.delay = delay;
}
add(snapshot) {
this.buffer.push({
time: snapshot.serverTime,
entities: new Map(snapshot.entities)
});
while (this.buffer.length > this.size) {
this.buffer.shift();
}
}
interpolate(renderTime) {
const targetTime = renderTime - this.delay;
const [before, after] = this.findBrackets(targetTime);
if (!before || !after) return this.extrapolate();
const t = (targetTime - before.time) / (after. - before.);
.(before, after, t);
}
() {
result = ();
( [id, a] before.) {
b = after..(id);
(b) {
result.(id, {
: a. + (b. - a.) * t,
: a. + (b. - a.) * t,
: a. + (b. - a.) * t
});
}
}
result;
}
}