Урок Roblox StudioЗанятие 5 / 8

Защита сохранений

Уменьшить риск потери прогресса

Защита сохранений
Иллюстрация к теме занятия

Цель

Уменьшить риск потери прогресса

Подготовка

ServerScriptService → Script ProgressStorage; отдельный тестовый DataStore; не запускай его одновременно со скриптом урока 76.

Пошаговая работа

  1. Создай отдельную копию проекта для урока №77.
  2. ServerScriptService → Script ProgressStorage; отдельный тестовый DataStore; не запускай его одновременно со скриптом урока 76.
  3. Используй UpdateAsync и обработку сбоев
  4. Сохрани версию структуры данных
  5. Проверь выход игрока
  6. Запусти Play и проверь результат по контрольным условиям.

Пример Luau

local store = game:GetService("DataStoreService"):GetDataStore("ProgressLessonV2")
local function saveWins(userId, wins)
    local key = tostring(userId)
    local ok, err = pcall(function()
        store:UpdateAsync(key, function(old)
            local previous = type(old) == "table" and tonumber(old.wins) or 0
            return {version = 2, wins = math.max(previous, wins)}
        end)
    end)
    if not ok then warn("Не удалось сохранить прогресс:", err) end
    return ok
end
-- Вызови saveWins(player.UserId, числоПобед) из своего
-- серверного менеджера прогресса после корректной загрузки данных.

Проверка

Сохранение не падает без объяснения при ошибке

Повторная запись меньшего количества побед не уменьшает сохранённый максимум.

Ошибка и ограничения

SetAsync перезаписывает более новое значение. Это только функция записи, а не завершённая система сохранения; требуются загрузка, очередь записей и контроль одновременных сессий.

Усложнение

Добавь миграцию старого формата

Проверь пример в тестовой Roblox Studio перед публикацией. Используй отдельные копии проектов и не подключай два конкурирующих сохранения одновременно.

Проверь свою работу

Перед тестом убедись, что ты выполнил практику самостоятельно.

Эти отметки — личная памятка, они не влияют на звёзды.

Проверь себя

Ответь на вопросы урока. Успешный тест даёт одну звезду в личном кабинете.

⭐ Проверь свои знания

5 вопросов по теме урока. За 4 правильных ответа получишь звезду. Повторные попытки разрешены.

1. Чем полезен UpdateAsync при конкурентном обновлении одного ключа?
2. Как поступить при ошибке сохранения?
3. Почему опасно хранить две независимые копии счёта без согласования?
4. Зачем хранить версию схемы данных?
5. Что проверяют после выхода и повторного входа игрока?