Godot 4 · GDScript
Sauvegardes cloud
Les sauvegardes cloud permettent a un joueur de conserver sa progression entre les appareils. Chaque sauvegarde reside dans un emplacement numerote (1-10) et est un objet de donnees libre valide selon le schema que vous definissez dans le panneau.
Configuration du Panneau
Dans le panneau, activez la sauvegarde cloud et definissez le schema de sauvegarde : les champs que votre objet de sauvegarde peut contenir et leurs types. Le nombre d'emplacements et la limite de taille dependent de votre plan.
Les sauvegardes sont validees selon ce schema sur le serveur : un champ absent du schema, ou un type incorrect, est rejete.
Sauvegarder dans un Emplacement
Ecrivez (ou ecrasez) un emplacement avec vos donnees de sauvegarde. Ecoutez save_completed.
Gamdato.save_completed.connect(_on_saved)
Gamdato.save_game(1, {"level": 5, "coins": 120, "unlocked": ["sword"]})
func _on_saved(ok: bool, slot: int, meta: Dictionary, error_code: String) -> void:
if ok: print("Emplacement %d sauvegarde (%d octets)" % [slot, meta.size_bytes])
else: print("Echec de la sauvegarde : %s" % error_code)error_code peut etre plan (sauvegardes cloud absentes de votre plan), too_large, storage_full ou validation (les donnees ne correspondent pas au schema).
Charger un Emplacement
Relisez un emplacement. Un emplacement vide n'est pas une erreur : found vaut simplement false.
Gamdato.save_loaded.connect(_on_loaded)
Gamdato.load_game(1)
func _on_loaded(slot: int, found: bool, data: Dictionary, error_code: String) -> void:
if found:
_apply_save(data)
else:
_new_game()# save_loaded(slot: int, found: bool, data: Dictionary, error_code: String)
# found = false for an empty slot (not an error)
# data = the Dictionary you saved, verbatim:
{ "level": 5, "coins": 120 }Lister les Emplacements
Listez quels emplacements sont utilises, avec leur taille et leur date de derniere mise a jour (sans les donnees). Utile pour un menu de selection de sauvegarde. Arrive via saves_listed.
Gamdato.saves_listed.connect(_on_saves)
Gamdato.list_saves()
func _on_saves(saves: Array) -> void:
for s in saves:
print("Emplacement %d - mis a jour %s" % [s.slot, s.updated_at])# saves: Array, each used slot (metadata only, no data):
{
"slot": int,
"size_bytes": int,
"updated_at": String
}
# save_completed -> meta has the same shape (slot, size_bytes, updated_at).Supprimer un Emplacement
Retirez un emplacement. Supprimer un emplacement vide est sans danger (il signale tout de meme un succes).
Gamdato.save_deleted.connect(_on_deleted)
Gamdato.delete_save(1)
func _on_deleted(ok: bool, slot: int, error_code: String) -> void:
if ok: print("Emplacement %d efface" % slot)