🔥 Představte si, že váš hráč stráví hodiny sbíráním mincí, levelováním postavy a odemykáním skinů – a pak všechno zmizí! 😱 Žádný dobrý game developer to nedopustí. DataStore Service v Robloxu je vaši záchrannou kotvu pro uložení dat hráče. V tomto průvodci se dozvíte všechno podstatné: od základů po pokročilé tipy. Buďte připraveni na rychlý úspěch ve vašem projektu! Pokračujte a naučte se, jak to udělat správně ještě dnes.
Co je DataStore Service a proč ho potřebujete? ⭐
DataStore Service je vestavěná služba Robloxu pro trvalé ukládání dat hráčů na serverech Robloxu. Na rozdíl od dočasných proměnných přežije data odpojení hráče, aktualizace serveru nebo restart hry. Ideální pro leaderboards, inventáře, levely a další progress.
- ✅ Bezpečné: Data jsou šifrovaná a zálohovaná.
- ✅ Škálovatelné: Funguje pro miliony hráčů.
- ✅ Nejnovější verze: Podporuje GlobalDataStore a OrderedDataStore pro rankingy.
Pokračujte níže – brzy uvidíte první kód! 👇
Předpoklady před spuštěním ✅
- 1️⃣ Roblox Studio nainstalované (nejnovější verze).
- 2️⃣ Povolení DataStore Service v Game Settings > Security > Allow Third Party Sales (ne, jen Enable Studio Access to API Services).
- 3️⃣ ServerScript v ServerScriptService (ne LocalScript!).
Toto zajistí, že váš skript bude fungovat i v publikováné hře. Teď k jádru!
Krok 1: Načítání dat hráče (Load Data) 📥
Nejdříve načtěte data při vstupu hráče. Použijte PlayerAdded event a pCall pro zachycení chyb (DataStores mají limity requestů).
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData") -- Název vašeho store
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Parent = leaderstats
local success, data = pcall(function()
return playerDataStore:GetAsync(player.UserId .. "_coins")
end)
if success and data then
coins.Value = data
print("✅ Data načtena pro " .. player.Name .. ": " .. data .. " mincí")
else
coins.Value = 0 -- Výchozí hodnota
warn("⚠️ Chyba načítání dat pro " .. player.Name)
end
end)
Tento kód vytvoří leaderstats a načte "Coins". UserId zajišťuje unikátnost klíče. Testujte v Studio s "Start Server".
Krok 2: Ukládání dat hráče (Save Data) 💾
Ukládejte data pravidelně nebo při odchodu hráče. Použijte PlayerRemoving pro auto-save.
game.Players.PlayerRemoving:Connect(function(player)
local success, errorMsg = pcall(function()
playerDataStore:SetAsync(player.UserId .. "_coins", player.leaderstats.Coins.Value)
end)
if success then
print("💾 Data uložena pro " .. player.Name)
else
warn("❌ Chyba ukládání: " .. errorMsg)
end
end)
Pro periodické ukládání přidejte loop každých 5 minut (vážte se na limity: 60 + numPlayers * 10 requestů/min).
Pokročilé tipy: AutoSave a více dat 📈
Uložte více hodnot najednou pomocí tabulky:
local playerData = {
coins = player.leaderstats.Coins.Value,
level = player.leaderstats.Level.Value,
inventory = {"Sword", "Shield"}
}
pcall(function()
playerDataStore:SetAsync(player.UserId, playerData)
end)
Načítání:
local data = playerDataStore:GetAsync(player.UserId) or {coins=0, level=1, inventory={}}
Srovnání metod DataStore
| Metoda |
Popis |
Použití |
| GetAsync(key) |
Načte data |
Load při join |
| SetAsync(key, value) |
Uloží data |
Save při leave |
| UpdateAsync(key, transform) |
Aktualizuje atomicky |
Prevence duplicit |
| RemoveAsync(key) |
Smaže data |
Reset účtu |
⭐ UpdateAsync je nejbezpečnější pro concurrent přístup!
Řešení běžných chyb a limity ⚠️
- ❌ Datastore request throttled: Přidejte
wait(1) nebo retry logiku.
- ❌ 403 Forbidden: Zapněte API v Game Settings.
- ❌ Velká data: Max 260KB na klíč (nebo použijte více storeů).
Pro robustnost obalte vše v pcall a logujte chyby do Outputu.
Best practices pro profesionální hry 👑
- 1️⃣ Sessions locking: Uložte session ID pro detekci reconnectu.
- 2️⃣ Backup do OrderedDataStore pro leaderboards.
- 3️⃣ Testujte v Live Game (ne jen Studio).
- 4️⃣ Používejte ProfileService pro složitější scénáře (community modul, DevForum).
🎉 Gratulujeme! Teď umíte uložit data hráče pomocí DataStore Service profesionálně. Implementujte to do vaší hry a sledujte spokojené hráče. Máte otázky? Zkuste v komentářích nebo experimentujte dál. Vaše hra bude next level! 🚀