coherence-persistence

Implements persistent coherence multiplayer state with time-anchored timers, ID preservation, and fragmented host hand-off.

Updated Jul 8, 2026
One-click install
npx skills add https://github.com/cmitchellVFS/Scrabble --skill coherence-persistence-cmitchellvfs
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: coherence-persistence
Source: https://github.com/cmitchellVFS/Scrabble/tree/main/.claude/skills/coherence-persistence
Command: npx skills add https://github.com/cmitchellVFS/Scrabble --skill coherence-persistence-cmitchellvfs

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Multiplayer games built on coherence lose world state across sessions, break entity references on save/load, and leave late-joining clients out of sync with timers, inventories, or world data. ## Core Features & Use Cases - Time-anchored state: Sync a single start timestamp and derive growth stages, cooldowns, or burn-down timers locally, so late joiners see correct state for free. - Network identity preservation: Persist ManualUniqueId and re-register it with UniquenessManager before instantiation so scene objects survive save/load cycles. - Host state hand-off: Transfer bulk payloads (save files, world seeds, inventories) to joiners via Channel.Fragmented commands with version prefixes and ack-before-pool-return patterns. - Use Case: A farming game where crops keep growing while players are offline, a player rejoins mid-session, and the host streams the full world snapshot to them on connect. ## Quick Start Ask the assistant to add persistent save/load and late-joiner catch-up to my coherence multiplayer game using the coherence-persistence patterns.

Frequently Asked Questions about coherence-persistence

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I save and load a coherence multiplayer game across sessions?▼

Persist each networked object's ManualUniqueId along with its gameplay state, then re-register the ID with the bridge's UniquenessManager before instantiating the prefab on load. This preserves entity identity so persistent-entity adoption finds the same logical object.

How do I sync timers like crop growth or cooldowns to late-joining players?▼

Sync only the start timestamp once using a CreationOnly [Sync] field, then derive the current stage locally from DateTime.UtcNow on each client. Late joiners receive the timestamp and compute the correct state immediately without extra sync traffic.

How do I send large save data to a client joining mid-session?▼

Have the joiner send a request command to the state authority, which replies with the payload over Channel.Fragmented, since default channel commands are capped near MTU (~1200 bytes). Include a version prefix and length header, and compress payloads over 1 KB with DeflateStream.

Why do my entity references break after reloading a saved coherence scene?▼

coherence assigns a new unique ID on re-instantiation by default, breaking stored references. You must capture ManualUniqueId at save time and register it with UniquenessManager before Instantiate, because CoherenceSync reads it during Awake.

When should I not use fragmented commands for state transfer?▼

Payloads larger than a few MB are a smell for in-band transfer, since a 1 MB payload takes significant time over a 100 KB/s link. For very large data, host the file on a CDN or HTTPS endpoint and send only the URL over coherence.