MMO Project supports two delivery modes for character state updates after inventory, equipment, status, and skill mutations. Legacy mode sends a fullDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/TaylorZaneKirk/MMO-Project/llms.txt
Use this file to discover all available pages before exploring further.
world_snapshot after every mutation. Delta mode sends lightweight character_state_updated messages that contain only the streams that changed, identified by a monotonically increasing revision number. Both modes can coexist on the same server.
Opting in
The client sendsruntime_delta_protocol: 1 as part of login_request to enroll the session in delta mode:
runtime_delta_protocol or send null remain in legacy snapshot-refresh mode for the duration of that session. The mode is fixed at login and cannot change mid-session.
Both delta and legacy clients receive one full world_snapshot immediately after enter_world_response. That snapshot seeds the initial revision values for delta clients.
character_state_updated S→C
Sent only to delta clients after a committed inventory, equipment, status, skill, or private-ground-item mutation. Each message contains only the streams that changed; unchanged streams arenull.
The character whose state changed.
Monotonically increasing revision number for this character’s stream. Each committed mutation increments this value by exactly one.
An object containing one field per tracked stream. A
null value means that stream did not change in this mutation.Revision tracking
Delta clients maintain two revision counters:| Counter | Source messages |
|---|---|
character_revision | world_snapshot, character_state_updated |
map_revision | world_snapshot, movement_applied, player_state_update, npc_state_update, ground_item_spawned, ground_item_removed |
last_seen + 1, a message was lost or delivered out of order. The client must trigger a resync.
Map stream messages
Public ground-item changes are delivered as map stream events to all players on the map — including both delta and legacy clients:ground_item_spawned— a dropped item has become publicly visible; carriesmap_revisionground_item_removed— a ground item was picked up or otherwise removed; carriesmap_revision
map_revision from these messages the same way they track it from movement_applied, player_state_update, and npc_state_update.
Resync
When a delta client detects a revision gap, it sendsworld_resync_request with its last-known revision values and a description of the problem:
The stream names believed to be stale. For example
["inventory"], ["map"], or ["inventory", "map"].The last
character_revision value the client successfully applied.The last
map_revision value the client successfully applied.A descriptive string identifying the cause, e.g.
"character_revision_gap" or "map_revision_gap".world_snapshot that resets both character_revision and map_revision to their current authoritative values. This is the only recovery mechanism for stale streams in this protocol slice.
Legacy fallback
Legacy clients — those that did not sendruntime_delta_protocol: 1 on login_request — continue to receive a full world_snapshot after every inventory, equipment, status, or skill mutation. They do not receive character_state_updated messages.
Delta clients never receive mutation-triggered world_snapshot messages. They receive only the initial enter-world snapshot and resync snapshots. All subsequent state changes arrive as character_state_updated deltas or map stream events.
Snapshot fields carrying revisions
The following messages carry revision values that delta clients must track:| Message | Revision field |
|---|---|
world_snapshot | character_revision |
world_snapshot | map_revision |
character_state_updated | character_revision |
movement_applied | map_revision |
player_state_update | map_revision |
npc_state_update | map_revision |
ground_item_spawned | map_revision |
ground_item_removed | map_revision |
The
temporary_modifier field on skill entries is currently always 0. This field is reserved for future buffs, debuffs, stances, and techniques. Clients should read and store it but must not display non-zero values from it until that system is implemented.