tabooharmony/roblox-brain

roblox-server-data

Use when building or fixing Roblox cross-server data: OrderedDataStore leaderboards, MessagingService, MemoryStore, world state, seasons.

View source

How to use

  1. Copy the installation command and review the source package before installing it in your own agent environment.
  2. Check the source document for required tools, credentials and supported hosts.
  3. Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/tabooharmony/roblox-brain --skill roblox-server-data

Before you start

  • Installation does not include a model subscription, API allowance or permission to access your files.
  • Repository stars and installation counts describe activity, not an independent quality or security test.
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

Roblox Server & Shared Data

When to Load

Load for leaderboards, messaging, MemoryStore coordination, world state, seasons, or guilds. Player persistence: roblox-data; Open Cloud: roblox-cloud.

Quick Reference

OrderedDataStore (Leaderboards)

  • Sortable DataStore: string keys (tostring(UserId)), integer sort values; GetSortedAsync → pages; BatchGetAsync multi-key read (missing keys omitted).
  • Budget bursts via GetRequestBudgetForRequestType(OrderedWrite) (per server: 30 + numPlayers×5 writes/min).
  • Leaderboards only, never player saves. Keep player_<UserId> a static key substring so RTBF templates match.

MessagingService (Cross-Server)

  • SubscribeAsync / PublishAsync; no delivery or ordering guarantee — design for idempotency.
  • Request/response: {reqId} correlation + ack + timeout; no ack ≠ not executed — replay same reqId, don't double-grant.
  • Budget broadcast receives, not just sends; limits and polling trade-offs: full.md. <!-- temporal: 2026-10 -->

GlobalDataStore (Shared State)

  • Persistent non-player state (guilds, seasons, counters). Use UpdateAsync; never for player session data.

MemoryStoreService (Temporary Coordination)

  • Queues and sorted maps for expiring matchmaking, leases, coordination.
  • Remove a read batch only after successful, idempotent processing.
  • Sorted-map paging: last item's {key, sortKey} = next exclusive bound. Quotas are game-level (one shared pool): request units 1000+120×CCU/min, memory 64 KB+1.2 KB/user, value ≤32 KB, TTL 45 days; batch calls bill per item. <!-- temporal: 2026-10 -->

Cross-Server Patterns

  • Register servers with expiring heartbeats; notify via MessagingService.

User Identity

  • Identify users with player.User (User.Id, DomainType, DomainId); UserId stays valid. Domain IDs are per-experience: key cross-server data on UserId.

Pitfalls

  • MessagingService: fire-and-forget, unordered; not for time-critical work
  • GlobalDataStore: same rate limits as player DataStores
  • Never store Instances; SetAsync overwrites — use UpdateAsync for shared counters
Store selection and workflows: references/full.md

Related by task

from this repository

More skills

All skills