Roblox: データ管理サービスDataStore2について
今回はRobloxゲーム内でのデータ永続化や管理を効率的に行うためのツール'DataStore2'を紹介します。
DataStore2
DataStore2とは、Roblox用のデータストアのアッパーライブラリです。
Roblox標準のデータストアに比べて、大幅に高速にデータストアを操作できるのが特徴で、Dungeon Quest(6億以上の訪問)やBaldi's Basics(1.4億以上の訪問)など、多くの人気ゲームでも採用されているみたいです。
また他にも、以下のような機能があるためとても便利なサービスです。
- キャッシング機能
- データ損失防止
- 自動バックアップ
- 非同期操作
使用例:プレイヤーのコインとレベルの管理
実際にDataStore2の使用例を見てみましょう。
local DataStore2 = require(game.ServerScriptService.DataStore2)
-- 各データを結合する
DataStore2.Combine("PlayerData", "coins", "level")
-- プレイヤー参加時にデータストアを設定する
game.Players.PlayerAdded:Connect(function(player)
local coinStore = DataStore2("coins", player)
local levelStore = DataStore2("level", player)
-- データを表示するリーダーボードの設定などを記載...
end)
-- コインを追加する
function addCoins(player, amount)
local coinStore = DataStore2("coins", player) -- "coins"からplayerのデータを取得
coinStore:Increment(amount)
end
-- レベルを1上げる
function levelUp(player)
local levelStore = DataStore2("level", player) -- "level"からplayerのデータを取得
levelStore:Increment(1)
end
-- プレイヤーが退出する時にデータを保存する
game.Players.PlayerRemoving:Connect(function(player)
DataStore2.SaveAll(player)
end)
このようにDataStore2を使うと、データストアの作成や更新が容易にできるようになります。
注意点
ドキュメントには以下のように注意書きがありました。
However, you'll notice that if you play the game in studio, your points won't save. This is because DataStore2 does not save in studio by default. Usually, you don't want to save in studio because you don't want broken data while you're developing, and you don't want to have to wait for your data to save every time.
Studioでゲームをプレイするとデータが保存されないみたいです。これは、開発中にデータが壊れるのを避けるためと、データが保存されるのを毎回待たなくていいようにという理由からとのことです。
まとめ
今回はDataStore2の紹介と、チュートリル的な簡単な実装例をまとめてみました。
Robloxで楽にデータを管理したい方はぜひ使ってみてください!
Discussion