GameMaker Studio · GML
Облачные сохранения
Облачные сохранения позволяют игроку сохранять прогресс между устройствами. Каждое сохранение находится в нумерованном слоте (1-10) и представляет собой произвольную структуру, проверяемую по схеме, которую вы определяете в панели.
Определите схему сохранения
В панели объявите поля, которые может содержать сохранение, и их типы. Сервер проверяет каждое сохранение по этой схеме.
Слоты идут от 1 до 10. Сохранение в занятый слот перезаписывает его.
Сохранение
Отправьте структуру в слот и прочитайте save_completed из очереди.
var data = { x: obj_player.x, y: obj_player.y, money: global.money, map: global.mapid };
gmda_saveGame(1, data); // slot 1 -> save_completedСтруктура отправляется как JSON. Сохраняйте размер данных умеренным.
Загрузка
Запросите слот и прочитайте save_loaded. Пустой слот, не ошибка: e.response.save равен undefined; когда слот занят, e.response.save.data, ваша структура, как вы её сохранили.
gmda_loadGame(1); // -> save_loaded
// in the poll loop:
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; }Список сохранений
Получите список занятых слотов с их метаданными (без полезной нагрузки) и прочитайте 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).Удаление сохранения
Удалите слот и прочитайте save_deleted.
gmda_deleteSave(1); // -> save_deleted