Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
Persistly is a cloud save SDK for Godot games.It gives Godot developers account-first cloud saves, local-first slot data, explicit sync, conflict handling, account sessions, short-lived transfer codes, and restore-ready save history through the Persistly runtime API.Best for single-player, idle, incremental, casual, and async games that need durable progress across browsers, desktop builds, and devices without building a custom backend.Includes:- PersistlyGameSaves facade for simple game integrations- save_data/load_data for one-save games- save_slot/load_slot for multi-slot games- accountData and slotInfo support- local-first save cache- explicit force sync and due sync- conflict helpers- short-lived account transfer-code helpers- Last Beacon sample project- pinned Persistly public contract bundleDocs: https://docs.persistly.app/sdk/godotDashboard: https://dashboard.persistly.app
Persistly Godot SDK
Godot runtime SDK for Persistly account-first cloud saves, local-first slot data, account sessions, and explicit sync.
Install
Copy both directories into your Godot project:
addons/persistly/
contracts/
The account-first persistly-contract-v0.4.0 bundle is included under contracts/ for release validation.
Quickstart
const PersistlyGameSaves := preload("res://addons/persistly/persistly_game_saves.gd")
var persistly := PersistlyGameSaves.new()
persistly.configure({
"runtime_key": "ps_test_replace_me",
"playerRef": "player-184",
"localAccountKey": "player-184",
})
persistly.save_data({
"level": 5,
"coins": 1200,
}, {
"slotInfo": {
"characterName": "Ayla",
"level": 5,
},
})
var loaded := persistly.load_data()
var synced := persistly.force_sync_data({"bypassCooldown": true})
save_data writes local data immediately to the default autosave slot. The first force_sync_data, sync_due_slots, or sync_due call creates the remote Persistly account and matching slot if needed. Use save_slot, load_slot, and force_sync for multiple named slots.
Account Sessions
Create an account before a slot picker when your game needs an explicit account session:
persistly.save_account_data({"diamonds": 20})
var created := persistly.create_account()
var session := persistly.get_account_session({"includeToken": true})
Attach an existing Persistly account into empty local state:
var attached := persistly.attach_account("acc_01HXYZ", "pst_account_session")
Create a short-lived transfer code on the device that already has the account session, then consume it on an empty second device:
var code := persistly.create_transfer_code({
"deviceLabel": "Steam Deck",
})
var attached := other_device_persistly.attach_with_transfer_code(
code["transferCode"],
{"deviceLabel": "Laptop"}
)
Transfer codes are short-lived and single-use. Show the code to the player, but do not log it or treat it as a password.
Use clear_local_account() before switching players on the same device. It only wipes local SDK state. Use delete_account() for permanent remote erasure.
Templates
templates/one-savefor idle, casual, and one-save games.templates/multi-slotfor manual saves, campaigns, and slot select screens.templates/account-slotsfor games with sign-in or cross-device restore.
Runtime Surface
Facade methods:
configurecreate_accountattach_accountcreate_transfer_codeattach_with_transfer_codeget_account_sessionsave_account_datapatch_account_dataget_account_dataforce_sync_accountsync_due_accountsave_dataload_dataforce_sync_datasave_slotload_slotlist_slot_dataslot_inforefresh_slotforce_syncsync_due_slotssync_duearchive_slotdelete_accountdelete_slotclear_local_accountclear_local_slotaccept_cloud_versionoverwrite_cloud_versionkeep_local_for_later
Low-level client account methods use the same public facade terms: accountData, slotInfo, and data.
create_accountload_accountsync_account_datacreate_transfer_codeconsume_transfer_codecreate_account_slotload_account_slotsync_account_slotarchive_account_slotdelete_account_slotdelete_accountget_runtime_config
Account and slot routes send X-Persistly-Account-Session. Release packages do not expose legacy compatibility aliases.
Validate Local Changes
/Applications/Godot.app/Contents/MacOS/Godot --headless --path . --script scripts/validate_contract.gd
/Applications/Godot.app/Contents/MacOS/Godot --headless --path . --script scripts/validate_client.gd
/Applications/Godot.app/Contents/MacOS/Godot --headless --path . --script scripts/validate_game_saves.gd
Live Parity Smoke
Run this only with a dev/test runtime key:
PERSISTLY_RUNTIME_KEY=ps_test_replace_me scripts/live_smoke.sh
Example Project
examples/last_beacon/ is a small endless idle demo using PersistlyGameSaves, the default autosave slot, account sessions, and local-first slot data.
Persistly is a cloud save SDK for Godot games.
It gives Godot developers account-first cloud saves, local-first slot data, explicit sync, conflict handling, account sessions, short-lived transfer codes, and restore-ready save history through the Persistly runtime API.
Best for single-player, idle, incremental, casual, and async games that need durable progress across browsers, desktop builds, and devices without building a custom backend.
Includes:
- PersistlyGameSaves facade for simple game integrations
- save_data/load_data for one-save games
- save_slot/load_slot for multi-slot games
- accountData and slotInfo support
- local-first save cache
- explicit force sync and due sync
- conflict helpers
- short-lived account transfer-code helpers
- Last Beacon sample project
- pinned Persistly public contract bundle
Docs: https://docs.persistly.app/sdk/godot
Dashboard: https://dashboard.persistly.app
Reviews
Quick Information
Persistly is a cloud save SDK for Godot games.It gives Godot developers account-first cloud saves, local-first slot data, explicit sync, conflict handling, account sessions, short-lived transfer codes, and restore-ready save history through the Persistly runtime API.Best for single-player, idle, incremental, casual, and async games that need durable progress across browsers, desktop builds, and devices without building a custom backend.Includes:- PersistlyGameSaves facade for simple game integrations- save_data/load_data for one-save games- save_slot/load_slot for multi-slot games- accountData and slotInfo support- local-first save cache- explicit force sync and due sync- conflict helpers- short-lived account transfer-code helpers- Last Beacon sample project- pinned Persistly public contract bundleDocs: https://docs.persistly.app/sdk/godotDashboard: https://dashboard.persistly.app