Skip to content

Save and Multiplayer

mewcodex edited this page Sep 2, 2026 · 2 revisions

Save and Multiplayer

English | 简体中文

Generated cards are data, not seed-only reconstruction. Persist and synchronize the complete ordered definition list, including card data, runtime specs, upgrades, bilingual names/descriptions, portrait identity, and effects.

Required invariants

  • Use the same stable profile ID and component/runtime schema on every peer.
  • The host chooses or generates definitions once and sends that exact list to clients.
  • Install definitions before a generated card model is rendered, deserialized, or used.
  • Preserve contiguous slot order. A card's concrete model type and Slot are its stable ModelDb address.
  • Derive seeds with a stable algorithm such as SHA-256. Runtime-dependent hashes are not network-safe.
  • Every participant needs compatible AutoAnthony and character-mod versions.

ChaosCompositePower stores the external profile ID with its structured operations. Multiplayer checksums include a stable hash of that ID, so delayed and continuous effects resolve against the correct external definition after a reload or reconnect.

Version migration

When changing an opcode, variant, slot name, or flag:

  1. Keep the old runtime route available for every currently supported save version.
  2. Migrate the structured record before installation when possible.
  3. Regenerate only definitions that cannot be parsed; do not regenerate an otherwise valid whole pool.
  4. Treat localized text as display data, never as the migration key.

If a removed card model cannot be restored, use the game's missing-card placeholder rather than mapping the old slot to a different card.

Reconnect checklist

  • Compare mod and API versions before starting the lobby.
  • Synchronize next-run settings from the host.
  • Verify definition count, slot order, stable signatures, and profile ID before entering combat.
  • Install the synchronized definitions exactly once per run state.
  • Clear run-scoped definitions only after the run is actually abandoned or completed.

Clone this wiki locally