На певному етапі кожен початківець у 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. Раніше — просто занадто багато нових понять одразу.

Якщо дитина вже зробила перший рівень і хоче, щоб гра «пам'ятала» гравця — це природний наступний крок. Приходьте на заняття, покажемо, як не наступити на ці граблі з першого разу.