roblox-server-data について
ランキング、サーバー間メッセージ、共有状態、一時的な調整を扱う Roblox 開発者向けのリファレンススキルです。サービスの選び方や制限、信頼性を保つ処理パターンを説明します。
主な機能
- 01OrderedDataStore のランキングとページング
- 02MessagingService によるサーバー間通信
- 03GlobalDataStore の共有状態
- 04MemoryStoreService による一時調整
- 05ユーザー識別とサーバー間キーの選択
活用シーン
- 01サーバー間ランキングの実装
- 02期限付きマッチメイキングとサーバーリースの調整
- 03ギルド、シーズン、共有カウンターの管理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-server-dataインストール後、Claude Code で/roblox-server-dataを入力して読み込まれたか確認します。
同梱ファイルreferences/full.md
詳細
Roblox サーバーと共有データ
読み込むタイミング
リーダーボード、メッセージング、MemoryStore の調整、ワールドの状態、シーズン、ギルドを扱う場合に読み込みます。プレイヤーの永続化には roblox-data、Open Cloud には roblox-cloud を使用します。
クイックリファレンス
OrderedDataStore(リーダーボード)
- ソート可能な DataStore:文字列キー(
tostring(UserId))、整数のソート値を使用します。GetSortedAsync→ ページ。BatchGetAsyncは複数キーを読み込みます(見つからないキーは省略されます)。 GetRequestBudgetForRequestType(OrderedWrite)を使ってバーストを調整します(サーバーあたり:書き込みは毎分 30 + numPlayers×5)。- リーダーボード専用とし、プレイヤーのセーブには使用しないでください。RTBF テンプレートと一致するよう、
player_<UserId>を静的なキー部分文字列として保持してください。
MessagingService(サーバー間)
SubscribeAsync/PublishAsyncを使用します。配信も順序も保証されないため、冪等性を考慮して設計してください。- リクエスト/レスポンス:
{reqId}による相関付け、確認応答、タイムアウトを使用します。確認応答がないことは、実行されていないことを意味しません。同じ reqId で再試行し、二重に付与しないでください。 - 予算は送信だけでなくブロードキャストの受信にも適用されます。制限とポーリングのトレードオフについては full.md を参照してください。
GlobalDataStore(共有状態)
- プレイヤー以外の永続データ(ギルド、シーズン、カウンター)に使用します。
UpdateAsyncを使い、プレイヤーのセッションデータには使用しないでください。
MemoryStoreService(一時的な調整)
- 有効期限付きのマッチメイキング、リース、調整にはキューとソート済みマップを使用します。
- 読み取りバッチは、冪等な処理が成功してから削除してください。
- ソート済みマップのページング:最後の項目の
{key, sortKey}が次の排他的な境界になります。クォータは ゲーム単位(共有プール 1 つ)です。リクエストユニットは毎分 1000+120×CCU、メモリは 64 KB+1.2 KB/ユーザー、値は ≤32 KB、TTL は 45 日です。バッチ呼び出しは項目ごとに課金されます。
サーバー間パターン
- 有効期限付きのハートビートでサーバーを登録し、MessagingService で通知します。
ユーザー ID
- ユーザーの識別には
player.User(User.Id、DomainType、DomainId)を使用します。UserIdは引き続き有効です。ドメイン ID はエクスペリエンスごとの ID であるため、サーバー間データのキーにはUserIdを使用してください。
注意点
- MessagingService:ファイア・アンド・フォーゲットで、順序は保証されません。時間に厳しい処理には使用しないでください
- GlobalDataStore:プレイヤーの DataStore と同じレート制限が適用されます
- Instance は保存しないでください。
SetAsyncは上書きするため、共有カウンターにはUpdateAsyncを使用してください
ストアの選択とワークフローについては、references/full.md を参照してください
コメント
Markdown 対応