Overview
Systems
EngineSystems are complete, ready-made game features built on top of Engine's services, such as an economy, inventories, moderation, leaderboards and password locks.
What a system is
An EngineSystem is a finished game feature: the kind of thing most experiences need and every team ends up building again. Systems are built from services and packages, save their own data, replicate to clients and work as soon as you get them.
local Engine = require(game:GetService("ServerScriptService"):WaitForChild("Engine"))
local EconomySystem = Engine:GetSystem("EconomySystem")
EconomySystem:CreateCurrency("Coins", { Leaderstat = true })Like services, a system is loaded the first time you get it, and loading a system starts it: for example, ModerationSystem starts loading player records and hooking the chat.
All systems
| System | Realm | What it does |
|---|---|---|
| EconomySystem | Server, Client | Currencies in player profiles, shops, timed rewards with streaks, trades, Robux products and offline transactions. |
| InventorySystem | Server, Client | Items and containers in player profiles, Roblox Tools, equipment with stats, crafting, chests, world pickups, selling and item shops. |
| LeaderboardSystem | Server, Client | Global leaderboards with daily, weekly and monthly resets, live in-server boards and leaderstats. |
| ModerationSystem | Server, Client | Sanctions that follow players across servers, roles, escalation, reports, chat moderation, commands and an audit log. |
| PasswordSystem | Server | Password hashing, password rules, generated passwords and PINs, and locks that limit guessing. |
Systems work together
Systems use each other where it makes sense, so you get the integrations for free:
- EconomySystem uses LeaderboardSystem for
LeaderstatandLeaderboardcurrencies, and DataService for balances. - InventorySystem uses EconomySystem for sell prices, item shops and recipe costs, and DataService for inventories.
- ModerationSystem posts its audit log to StatisticsService and its webhooks.
- EconomySystem and ModerationSystem report to StatisticsService when
LogToStatisticsis on.
Server and client halves
Systems marked Server, Client have a client half you get the same way from a LocalScript. The client half reads what the server replicates (balances, boards, moderation state) and sends requests that the server checks again, so a client can never change a balance or apply a sanction on its own.
-- LocalScript
local Engine = require(game:GetService("ReplicatedStorage"):WaitForChild("Engine"))
local EconomySystem = Engine:GetSystem("EconomySystem")