Skip to main content

Slot Metadata

Slot metadata is the typed summary stored with a save slot.

Use it for menus, compatibility checks, and player-facing save cards.

SaveFlowSlotMetadata Fields

FieldTypePurpose
slot_idStringStable storage key.
display_nameStringPlayer-facing name.
save_typeStringmanual, autosave, checkpoint, or project-specific value.
chapter_nameStringChapter or campaign label.
location_nameStringCurrent area/room label.
playtime_secondsintTotal playtime shown in save UI.
difficultyStringOptional difficulty label.
thumbnail_pathStringOptional screenshot/thumbnail path.
created_at_unixintCreation timestamp.
created_at_isoStringCreation timestamp string.
saved_at_unixintLast save timestamp.
saved_at_isoStringLast save timestamp string.
scene_pathStringScene path captured for restore safety.
project_titleStringProject metadata.
game_versionStringGame build/version metadata.
data_versionintData version metadata.
save_schemaStringSchema label used by compatibility checks.

Extra fields should be basic Variant-safe data or typed SaveFlow data. Do not store heavy runtime objects in slot metadata.

Metadata Methods

metadata.apply_extra(extra: Dictionary) -> void
metadata.apply_patch(meta_patch: Dictionary) -> void
metadata.get_saveflow_authoring_warnings() -> PackedStringArray
metadata.get_extra_field_names() -> PackedStringArray
metadata.set_field(field_id: String, value: Variant) -> void

Use set_field() when code can target either a built-in metadata field or a custom metadata key.

SaveFlowSlotWorkflow Methods

slot_workflow.select_slot_index(slot_index: int) -> String
slot_workflow.active_slot_id() -> String
slot_workflow.set_slot_id_override(slot_index: int, slot_id: String) -> void
slot_workflow.clear_slot_id_overrides() -> void
slot_workflow.slot_id_for_index(slot_index: int) -> String
slot_workflow.fallback_display_name_for_index(slot_index: int) -> String
slot_workflow.build_active_slot_metadata(...) -> SaveFlowSlotMetadata
slot_workflow.build_slot_metadata(slot_index: int, ...) -> SaveFlowSlotMetadata
slot_workflow.build_empty_card(slot_index: int) -> Resource
slot_workflow.build_card_for_index(slot_index: int, summary: Dictionary = {}) -> Resource
slot_workflow.build_cards_for_indices(slot_indices: PackedInt32Array, summaries: Array = []) -> Array

SaveFlowSlotCard Fields

FieldTypePurpose
slot_indexintUI/order index.
slot_idStringStable storage key.
display_nameStringPlayer-facing name.
save_typeStringSave category.
chapter_nameStringChapter label.
location_nameStringLocation label.
playtime_secondsintPlaytime display data.
difficultyStringDifficulty label.
thumbnail_pathStringThumbnail path.
saved_at_unixintTimestamp.
saved_at_isoStringTimestamp string.
existsboolWhether the slot exists.
is_activeboolWhether this card is the selected active slot.
compatibleboolCompatibility result.
compatibility_reasonsPackedStringArrayHuman-readable compatibility issues.

Update a card from a summary:

card.apply_summary(summary)