На певному етапі кожен початківець у Roblox Studio впирається в одну й ту саму стіну: гравець вийшов з гри, а завтра всі його монети, рівні й прогрес зникли. Причина проста — за замовчуванням Roblox нічого не зберігає між сесіями. Для цього потрібен DataStore.
Що таке DataStoreService насправді
DataStoreService — це вбудований сервіс Roblox, який дозволяє зберігати дані гравця на серверах Roblox і завантажувати їх при наступному вході. Технічно це щось на кшталт хмарного сховища ключ-значення: у ключ записується ID гравця, у значення — його дані.
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("PlayerCoins")
game.Players.PlayerAdded:Connect(function(player)
local savedCoins = playerData:GetAsync(player.UserId)
player.leaderstats.Coins.Value = savedCoins or 0
end)
Три рядки — і гра вже «пам'ятає» гравця. Але тут і починаються складнощі.
Пастка №1: забути зберегти дані при виході
Завантажити дані — це половина роботи. Друга половина — зберегти їх, коли гравець виходить:
game.Players.PlayerRemoving:Connect(function(player)
playerData:SetAsync(player.UserId, player.leaderstats.Coins.Value)
end)
Без цього рядка вся система працює лише наполовину: дані завантажуються, але ніколи не оновлюються.
Пастка №2: перевищення лімітів запитів
У Roblox є ліміт на кількість запитів до DataStore за хвилину. Якщо викликати SetAsync на кожному кроці гри (наприклад, при кожній зміні монет) — гра почне видавати помилки при великій кількості гравців. Правильний підхід: зберігати зміни локально в грі і відправляти в DataStore рідше — раз на кілька хвилин або при виході гравця.
Пастка №3: втрата даних при збої сервера
Сервер може «впасти» до того, як спрацює PlayerRemoving. У серйозних проєктах для цього використовують автозбереження — окремий цикл, який зберігає прогрес кожні кілька хвилин незалежно від виходу гравця.
Думка викладача
«DataStore — одна з тих тем, де діти вперше стикаються з поняттям надійності системи, а не просто «зробив і працює». Це вже інженерне мислення, не просто програмування заради ефекту», — зазначає один із наших менторів курсу.
Тестування DataStore: підводний камінь для новачків
DataStore не працює у режимі Studio за замовчуванням — потрібно окремо увімкнути опцію «Enable Studio Access to API Services» у налаштуваннях гри. Без цього кроку код виглядає робочим, але жодні дані нікуди не зберігаються, і початківець довго шукає неіснуючу помилку.
Коли варто вивчати DataStore?
Ми зазвичай вводимо цю тему не на першому занятті, а коли учень вже впевнено працює зі змінними, подіями і базовими скриптами — приблизно на другому місяці курсу Roblox Studio. Раніше — просто занадто багато нових понять одразу.
Якщо дитина вже зробила перший рівень і хоче, щоб гра «пам'ятала» гравця — це природний наступний крок. Приходьте на заняття, покажемо, як не наступити на ці граблі з першого разу.