Блог школы Роблоппа — Роблокс Студио, обучение, познавательные статьи и новости школы

Что такое DataStore в Роблокс Студио

Документация
DataStore — это система, которая позволяет сохранять данные игроков между игровыми сессиями. Благодаря ей игрок может выйти из игры, а после возвращения продолжить с того места, где остановился.
Например, без сохранения игрок может потерять:
  • 🪙 монеты;
  • ⭐ уровень и XP;
  • 🏆 достижения;
  • 🎒 купленные предметы;
  • ❤️ количество жизней;
  • 📋 прогресс миссий;
  • 🔓 открытые уровни и зоны.

🎮 Как это работает

Представим, что игрок достиг 15 уровня:
Игрок
Уровень: 15
XP: 750
Coins: 2500
Сохранение в DataStore

Игрок выходит из игры.
Когда он возвращается:
DataStore
Загрузка данных
Уровень: 15
XP: 750
Coins: 2500

То есть DataStore работает как облачное хранилище данных игры.

🧱 Где используется DataStore

DataStore особенно полезен для игр, где есть прогресс.

🏃 Obby

Можно сохранять:
Level = 12
Checkpoint = 8

🪙 Симулятор

Coins = 5000
XP = 1200
Level = 7

🏆 Система достижений

FirstWin = true
Collector = true
Explorer = false

📋 Система миссий

MissionProgress = 7
MissionCompleted = false

💻 Простой пример

Для работы с DataStore используется DataStoreService.
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("PlayerData")
Здесь создаётся хранилище с названием PlayerData.
Важно: DataStore должен использоваться серверным Script, а не LocalScript.

💾 Сохраняем данные игрока

Например, сохраним количество монет:
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("PlayerData")
game.Players.PlayerRemoving:Connect(function(player)
local coins = player.leaderstats.Coins.Value
local success, err = pcall(function()
playerData:SetAsync(player.UserId, coins)
end)
if success then
print("Данные сохранены")
else
warn("Ошибка сохранения:", err)
end
end)
Когда игрок покидает сервер, его количество монет отправляется в DataStore.

📥 Загружаем данные

Теперь нужно получить сохранённые данные, когда игрок входит:
game.Players.PlayerAdded:Connect(function(player)
local success, data = pcall(function()
return playerData:GetAsync(player.UserId)
end)
if success then
print("Данные загружены:", data)
end
end)
GetAsync() получает сохранённую информацию.

🛡️ Зачем нужен pcall()

Работа с DataStore связана с сетевыми запросами, поэтому возможны ошибки.
Именно поэтому используется:
pcall(function()
-- работа с DataStore
end)
Если произошла ошибка, игра не должна просто остановить выполнение скрипта.
Например:
local success, data = pcall(function()
return playerData:GetAsync(player.UserId)
end)
if success then
print("Данные загружены")
else
warn("Не удалось загрузить данные")
end

📦 Можно сохранять несколько значений

Вместо отдельного хранилища для каждой характеристики удобно сохранить данные игрока в одной таблице:
local data = {
Coins = 2500,
Level = 15,
XP = 750
}
Затем эту таблицу можно сохранить:
playerData:SetAsync(player.UserId, data)
При загрузке получим её обратно:
local data = playerData:GetAsync(player.UserId)
print(data.Coins)
print(data.Level)
print(data.XP)

⚠️ Важные правила

При создании системы сохранений не стоит записывать данные в DataStore после каждого изменения монет или XP. Это может привести к слишком большому количеству запросов.
Лучше продумать систему сохранения и обрабатывать возможные ошибки.
Также важно помнить: DataStore — это не обычная переменная. Данные находятся в хранилище и доступны между игровыми сессиями.

🏁 Итог

DataStore в Роблокс Студио — это инструмент для сохранения прогресса игроков.
С его помощью можно сделать:
игрок получил монеты → данные сохранились → игрок вышел → игрок вернулся → данные загрузились.
Именно DataStore позволяет превратить простую игру в полноценный проект с уровнями, XP, миссиями, достижениями, валютой и постоянным прогрессом.

🔗 Полезные ссылки:

🚀 Хочешь научиться делать свои игры?

Переходи на roblo.ru и запишись на обучение Роблокс Студио!
И не забудь заглянуть в наш Telegram 👉 t.me/robloppo
Made on
Tilda