SaveSystem - сохранения поверх DataStore
Профили игроков с повторными попытками, миграциями схемы и корректным сохранением при выключении сервера.
DataStore сам по себе ненадёжен: он отвечает ошибкой под нагрузкой и ничего не знает о том, что схема ваших данных изменилась между релизами. Модуль закрывает четыре случая, из-за которых прогресс теряется. Повторяет запрос до четырёх раз с растущей паузой. Прогоняет профиль через цепочку миграций по номеру версии. Дописывает несохранённое через BindToClose при выключении сервера. И, что важнее всего, возвращает nil при неудачной загрузке, чтобы вы не пустили игрока с пустым профилем: самая частая причина жалоб на пропавший прогресс - не сбой DataStore, а автосейв, записавший пустоту поверх настоящих данных. Внутри: SaveSystem.luau с типами Luau, пример подключения с leaderstats и README с разбором ограничений.
Возможности
- Повторные попытки с паузой 0.5, 1, 2, 4 секунды
- Миграции схемы по номеру версии
- Автосейв и дозапись при выключении сервера
- Отказ вместо пустого профиля при сбое загрузки
- Строгая типизация Luau
В комплекте
- SaveSystem.luau - модуль
- Example.server.luau - готовый пример
- README.md - установка, API, ограничения