gemCrystal Save Integration

Crystal Save Integration: RememberCharacterPreset

RememberCharacterPreset is the Character Creator bridge to Crystal Save. It keeps the same model-agnostic philosophy: appearance data is captured from Character Creator state, not tied to one hardcoded character file.

Why It Exists

Without this bridge, save/load often needs many per-mesh/material remember components. With this bridge, one component captures and restores the full appearance snapshot through CharacterPresetManager.

What It Saves

The snapshot is a CharacterPreset, including:

  • equipped item IDs

  • blendshape values

  • body part scale multipliers

  • uniform scale

  • tracked material floats/colors/textures

Source:

  • Assets/Arawn/CharacterCreator/CrystalSaveBridge/RememberCharacterPreset.cs

  • Assets/Arawn/CharacterCreator/Runtime/CharacterPreset.cs

Requirements

  • Crystal Save installed with remember system available

  • compile symbols that enable this bridge: MEMORYPACK and ARAWN_REMEMBERME

  • CharacterPresetManager on the same GameObject (RequireComponent)

If the symbols are missing, RememberCharacterPreset is not compiled.

Use the setup wizard:

  1. Open Tools/Character Creator/Character Creator Setup Wizard

  2. Enable Add RememberCharacterPreset

  3. Complete Apply Setup

The wizard will:

  • ensure RememberComposite exists on the character root

  • register RememberCharacterPreset in RememberComposite._rememberTypes

  • call RememberComposite.RefreshComponents()

  • set a default savedPresetName if empty

Manual Setup

  1. Add CharacterPresetManager to the character root.

  2. Add RememberComposite to the same root.

  3. Add RememberCharacterPreset via RememberComposite remember type list (or Add Component menu path: Crystal Save/Remember Components/Remember Character Preset).

  4. Verify the remember component exists on the same object as CharacterPresetManager.

Inspector Fields

  • savedPresetName: name written into the captured preset (default: "CrystalSave Preset").

  • autoRefreshTrackingBeforeCapture: when enabled, runs AutoConfigureExplicitColorSlots(resetExisting: false) and AutoConfigureMaterialTracking(resetExisting: false) before capture to reduce manual tracking setup.

Save/Load Lifecycle

On save:

  1. Crystal Save calls SerializeComponentData()

  2. RememberCharacterPreset captures current look using CapturePreset(...)

  3. Preset is serialized to UTF-8 JSON bytes and stored in save data

On load:

  1. Crystal Save restores the object and component data

  2. RememberCharacterPreset.DeserializeComponentData(...) parses saved JSON

  3. CharacterPresetManager.ApplyPreset(...) restores the look

Named Presets vs Crystal Save Snapshot

  • Named presets (SavePreset, keys, gallery UI) are user-facing content.

  • RememberCharacterPreset snapshot is save-game component state.

  • You can use both at the same time.

Troubleshooting

Problem
Cause
Fix

RememberCharacterPreset not visible in Add Component

compile symbols not present

Ensure Crystal Save + required symbols (MEMORYPACK, ARAWN_REMEMBERME) are active

Appearance does not restore after load

missing or misconfigured CharacterPresetManager reference flow

Keep RememberCharacterPreset and CharacterPresetManager on same GameObject

Material colors not restored as expected

tracking data was incomplete at save time

Keep autoRefreshTrackingBeforeCapture enabled or configure tracking manually

Duplicate player character after load

Crystal Save restored instance plus custom spawn logic also ran

Avoid double-spawn flow; bind UI to restored runtime instance

Last updated