roblox-data について
roblox-dataは、Robloxのプレイヤーデータ保存を扱う開発者向けリファレンススキルです。移行、再試行、セッション所有権を含む、安全なDataStore運用とライフサイクル処理を説明します。
主な機能
- 01テンプレートによる状態管理と移行
- 02UpdateAsyncと一時エラーへの対応
- 03ProfileStoreによるセッション所有権管理
- 04ライフサイクルに沿った保存と終了処理
- 05データ検証とキャッシュなしの書き込み確認
活用シーン
- 01バージョン付きプレイヤーセーブの設計
- 02既存プレイヤープロファイルの移行
- 03同時セッションと再試行への対応
- 04シャットダウン時の保存結果確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-dataインストール後、Claude Code で/roblox-dataを入力して読み込まれたか確認します。
同梱ファイルreferences/full.md
詳細
roblox data persistence
読み込むタイミング
プレイヤーの保存データ、移行、再試行、シャットダウン、セッションの所有権を扱う場合に読み込みます。リーダーボード/メッセージング/ワールドデータについては roblox-server-data、Open Cloud については roblox-cloud を参照してください。
クイックリファレンス
- プレイヤーの状態を保存する前に、シリアライズ可能なテンプレートとバージョンフィールドを定義します。ネストされたデフォルト値が共有されないようにテンプレートをディープコピーし、移行した後、テンプレートと照合して不足しているフィールドを補います。環境ごとにストア名を分け(
PlayerData_Studio)、Studio での書き込みが本番環境に入らないようにします。 - 読み取り・変更・書き込みには
UpdateAsyncを使用し、スロットリングや一時的なエラーに対処します。 - セッション所有権プロトコルを使用して、プロファイルの同時変更を防ぎます。
- ProfileStore を使用する場合は、ドキュメントに従って
StartSessionAsync、Profile.OnSessionEnd、EndSessionを使用します。通常の読み込みでStealは使用せず、一時的な Studio 書き込みにはProfileStore.Mockを使用します。 - 重要な変更時やライフサイクルの境界で保存します。
PlayerRemovingだけでは不十分です。BindToCloseで保留中の処理を完了します。 - プリミティブ値/配列/辞書を保存します。Instances/userdata/functions/循環テーブルは、事前に変換します。数値(NaN/inf でないこと)、文字列(
utf8.len)、ネストされたテーブルを検証します。不正な値が1つでもあると書き込みに失敗します。 - RTBF:
{UserId}の削除テンプレートと照合できるよう、キー内の静的な部分文字列としてユーザー ID を保持します(player_<UserId>)。ハッシュ化されたキーやランダムなキーでは、手動で消去する必要があります。 GetAsyncは4秒間のローカルキャッシュを使用します(DataStoreGetOptions.UseCache、デフォルトはtrue)。書き込みを検証するにはUseCache = falseを指定します。DataStoreService:GetRequestBudgetForRequestTypeをポーリングして、リアルタイムの余裕を確認します。クォータは同時接続ユーザー数に応じて増加します(エクスペリエンスの読み取り:300 + CCU x 40/分)。- 新しいコードでは
player.User(User.Id、DomainType、DomainId)でユーザーを識別します。UserIdも引き続き使用できますが、同じキー方式で2種類の ID を混在させないでください。 - 初回セッションのトレースについては、
roblox-analytics§8 を参照してください。
永続化ワークフロー:references/full.md
コメント
Markdown 対応