GameMaker Studio · GML
Saves na nuvem
Os saves na nuvem permitem que um jogador mantenha o progresso entre dispositivos. Cada save fica em um slot numerado (1-10) e é uma struct de formato livre validada contra o esquema que você define no painel.
Defina um Esquema de Save
No painel, declare os campos que um save pode conter e seus tipos. O servidor valida cada save em relação a ele.
Os slots vão de 1 a 10. Salvar em um slot usado o sobrescreve.
Salvando
Envie uma struct para um slot e leia save_completed da fila.
var data = { x: obj_player.x, y: obj_player.y, money: global.money, map: global.mapid };
gmda_saveGame(1, data); // slot 1 -> save_completedA struct é enviada como JSON. Mantenha os saves razoavelmente pequenos.
Carregando
Solicite um slot e leia save_loaded. Um slot vazio não é um erro: e.response.save é undefined; quando o slot está em uso, e.response.save.data é a sua struct, exatamente como foi salva.
gmda_loadGame(1); // -> save_loaded
// no loop de poll:
case "save_loaded":
if (e.success && is_struct(e.response.save)) {
var data = e.response.save.data;
obj_player.x = data.x;
global.money = data.money;
}
break;// save_loaded -> e.response.save (undefined when the slot is empty):
{
"slot": 1,
"data": { "level": 5, "coins": 120 }, // your struct, verbatim
"updated_at": "2026-06-07T18:00:00.000Z"
}
// read it with: if (is_struct(e.response.save)) { var data = e.response.save.data; }Listando Saves
Liste os slots usados com seus metadados (sem o conteúdo) e leia saves_listed.
gmda_listSaves(); // -> saves_listed (e.response.saves)# 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).Excluindo um Save
Remova um slot e leia save_deleted.
gmda_deleteSave(1); // -> save_deleted