We have redirected you to our new domain: store.godotengine.org. Please update your bookmarks!

Description
Changelog
Reviews

Enhanced Save System

Overview

Enhanced Save System is a comprehensive save system plugin for Godot, providing a modular save solution with input remapping, auto-save, save screenshots, and encryption features.

Features

Core Features

  • Pure JSON Storage :Fast, human-readable, no reference resolution overhead
  • Modular Polymorphism :Each ISaveModule subclass manages its own data domain
  • Dual-track Save :
    • Global save (global.json):Settings, statistics, and other slot-independent data
    • Slot save (slot_01.json … slot_N.json):Level progress, player state, etc.
  • Writer Accumulation Mode :Collect all module changes first → write to disk once (reduce I/O)
  • Auto-save :Configurable auto-save interval and slot
  • Save Screenshots :Automatically capture screenshots when saving game state
  • Save Encryption :Optional save file encryption
  • Import/Export :Support for save file migration
  • Input Remapping :Built-in input key customization system

    Module System

  • player_module :Player state management
  • level_module :Level progress management
  • settings_module :Game settings management
  • stats_module :Game statistics management
  • keybinding_module :Input key management

    Installation

  1. Copy the addons/enhance_save_system directory to your Godot project's addons directory
  2. In Godot editor, go to Project > Project Settings > Plugins and enable "Enhanced Save System"
  3. The plugin will automatically register SaveSystem as an AutoLoad singleton

    Quick Start

Basic Usage

# Save global + current slot
SaveSystem.quick_save()

# Load global + current slot
SaveSystem.quick_load()

# Save to specific slot
SaveSystem.save_slot(2)

# Load from specific slot
SaveSystem.load_slot(2)

# Export slot save
SaveSystem.export_slot(1, "user://
backup/slot1.json")

# Import slot save
SaveSystem.import_slot(1, "user://
backup/slot1.json")

Register Custom Modules

# Register custom module in scene's 
_ready function
func _ready():
    SaveSystem.register_module
    (MyCustomModule.new())

Configuration Options

In Godot editor, select the SaveSystem node in AutoLoad, you can configure the following options in Inspector:

  • max_slots :Maximum number of slots (1-based)
  • auto_register :Whether to automatically scan and register modules in Modules/ directory
  • auto_load_global :Whether to automatically load global save on startup
  • auto_load_slot :Slot to automatically load on startup (0 = no auto load)
  • game_version :Game version written to save metadata
  • auto_save_enabled :Whether to enable auto-save
  • auto_save_interval :Auto-save interval (seconds)
  • auto_save_slot :Auto-save slot
  • save_screenshots_enabled :Whether to enable save screenshots
  • screenshot_width :Screenshot width
  • screenshot_height :Screenshot height
  • encryption_enabled :Whether to enable save encryption
  • encryption_key :Encryption key

    Signal List

  • global_saved(ok) :Global save write completion
  • global_loaded(ok) :Global save read completion
  • slot_saved(slot, ok) :Specific slot write completion
  • slot_loaded(slot, ok) :Specific slot read completion
  • slot_deleted(slot) :Slot file deleted
  • slot_changed(slot) :Current active slot changed

    Directory Structure

enhance_save_system/
├── Components/         # UI components
   └── InputRemapping/  # Input remapping components
├── Modules/            # Save modules
   ├── keybinding_module.gd
   ├── level_module.gd
   ├── player_module.gd
   ├── settings_module.gd
   └── stats_module.gd
├── core/               # Core functionality
   ├── i_save_module.gd
   ├── resource_serializer.gd
   ├── save_resource.gd
   ├── save_system.gd
   ├── save_writer.gd
   └── slot_info.gd
├── demo/               # Example scenes
├── templates/          # Template files
├── plugin.cfg
└── save_plugin.gd

Custom Modules

Create Global Module

  1. Copy templates/custom_global_module.gd to your project
  2. Modify class name and module key
  3. Implement collect_data and apply_data methods
  4. Call SaveSystem.register_module() to register the module

    Create Slot Module

  5. Copy templates/custom_slot_module.gd to your project
  6. Modify class name and module key
  7. Implement collect_data and apply_data methods
  8. Call SaveSystem.register_module() to register the module

    Input Remapping

Usage

  1. Add keybinding_ui.tscn component to your scene
  2. Or create it with code:
var keybinding_ui = preload("res://
addons/enhance_save_system/
Components/InputRemapping/
keybinding_ui.tscn").instantiate()
add_child(keybinding_ui)

Example Scenes

The plugin includes the following example scenes:

  • SaveDemo.tscn :Basic save functionality demo
  • enhanced_save_demo.tscn :Enhanced features demo
  • encryption_test.tscn :Encryption functionality test
  • import_export_demo.tscn :Import/export functionality demo

    Performance Optimization

  • Reduce I/O Operations :Use Writer accumulation mode, write to disk once
  • Asynchronous Operations :Save operations are executed in the main thread, but designed to minimize blocking
  • Modular Design :Each module only handles its own data, improving maintainability

    Compatibility

  • Supports Godot 4.0 and above
  • Pure GDScript implementation, no external dependencies

    License

MIT License

Changelog for version v1.1

No changelog provided for this version.

Reviews (0)

enhance_save_system has no reviews yet.

Login to write a review.