Skip to content
Engine

Overview

Services

EngineServices add capabilities Roblox does not have built in, from session-locked player data to mesh fracturing, parallel compute and a reactive UI framework.

What a service is

An EngineService is a new engine capability: something you would otherwise build yourself from low-level Roblox APIs. Services are used the same way as Roblox services, through a getter:

local Engine = require(game:GetService("ServerScriptService"):WaitForChild("Engine"))

local DataService = Engine:GetService("DataService")
local NetworkService = Engine:GetService("NetworkService")

A service is loaded the first time you get it, and every call after that returns the same table. Services you never use are never loaded. See Services, Systems & Packages for how services differ from systems and packages.

Where they run

RealmMeaning
SharedThe same service exists on the server and on the client. What it does on each side is described on its page.
ServerOnly on the server. Requiring it from a LocalScript errors.
Server, ClientA server half and a client half with different APIs, such as DataService (profiles on the server, replicated data on the client).

See Server and Client.

All services

Data and Security

ServiceRealmWhat it does
DataServiceServer, ClientPlayer profiles with session locking, autosave and replication, plus DataStores, MemoryStores, topics, shared documents and purchase receipts.
CryptographyServiceServerSecure random numbers, SHA-2/SHA-3/BLAKE2, HMAC, authenticated encryption, signed tokens, Argon2, scrypt and one-time codes.
MonetizationServiceServer, ClientProducts, game passes, subscriptions and avatar items with safe receipts, regional prices, policy checks and a purchase ledger.
StatisticsServiceServerRoblox Analytics events, funnels, counters, automatic tracking, Discord webhooks and daily totals.

Players and Networking

ServiceRealmWhat it does
PlayerServiceSharedNames, badges, membership, device, settings, policies, character, avatar, friends and groups, cached and retried.
NetworkServiceSharedNamed remotes with validation, rate limiting, request/response Promises, batching, streams and middleware.

Runtime

ServiceRealmWhat it does
SchedulerServiceSharedSpread heavy work over frames with time budgets, priorities and throttling.
ComputeServiceSharedParallel Luau on Actors: worker pools, parallel for-loops and task graphs.
TimeServiceSharedScaled game time, a day/night cycle with seasons, game-time timers and real-world dates.
PerformanceServiceSharedFPS, memory and ping, a device benchmark and automatic quality levels.
JunkServiceSharedClean-up scopes for players, characters and rounds, and a leak detector.

World

ServiceRealmWhat it does
GeometryServiceSharedBuild MeshParts from code, heightmaps and density fields; slice, deform and simplify meshes.
DestructionServiceSharedBreakable parts and models: health, mesh fracturing, explosions, debris and structural collapse.
SpatialServiceSharedSpatial indexes for proximity queries, and zones with Entered and Exited events.
EffectServiceSharedPooled, quality-scaled visual effects that the server can broadcast.

Audio and Interface

ServiceRealmWhat it does
AudioServiceSharedNamed sounds, a mixer with buses and ducking, playlists and adaptive layered music.
UIServiceSharedA declarative, reactive UI framework with components, themes, animation and screens.

Configuring a service

Every service reads its settings from a configuration module. Each service page ends with a table of every setting and its default. To change one for your game, add a ModuleScript with the service's name to the Configuration folder. See Configuration.