Patches are small, typed, reversible updates applied to a running game session.
{
"patch_id": "patch_abc",
"base_version": 12,
"ops": [
{ "op": "upsert_entity", "scene": "main", "entity": {} },
{ "op": "upsert_room", "scene": "main", "room": { "id": "north", "scene": "main", "bounds": { "x": 0, "y": 100, "width": 200, "height": 80 } } },
{ "op": "upsert_mechanic", "mechanic": {} },
{ "op": "deactivate_content", "content_id": "quest_old" }
]
}- Reject patches when
base_versiondoes not match the active package manifest. - Apply all operations atomically at a simulation tick boundary.
- Roll back and report
PatchRejectedif invariants fail after apply. - Emit
PatchAppliedto the content plane for audit.
- Manifest:
GET /packages/{game_id}/manifest - Deltas:
GET /patches?since={version}or SSE/WebSocket push