Getting Started
Introduction
Engine extends Roblox with custom services, systems, and packages. Install it once from the Engine plugin and use it the way you use Roblox's own services.
What is Engine?
Engine is a framework for Roblox experiences made by Arthonier. It adds three kinds of ready-made code to your game, and you use all of it through a single module:
| Tier | What it is | Examples |
|---|---|---|
| Services | New engine capabilities that Roblox does not have built in. | DataService, NetworkService, DestructionService, UIService |
| Systems | Complete game features built from those capabilities. | EconomySystem, ModerationSystem, LeaderboardSystem |
| Packages | Pure Luau building blocks without side effects. | Promise, Signal, State, Serde, Octree |
Arthonier builds and maintains all three. You use them and, where you need to, change their settings for your game. You never have to copy Engine's code into your project or keep it up to date by hand.
Server Script
local Engine = require(game:GetService("ServerScriptService"):WaitForChild("Engine"))
local DataService = Engine:GetService("DataService")
local EconomySystem = Engine:GetSystem("EconomySystem")
local Promise = Engine:GetPackage("Promise")Why Engine?
- It feels like Roblox.
Engine:GetService("DataService")works likegame:GetService("Players"). Methods, properties and events follow Roblox's naming, and every event is a Signal you:Connectto. - Safe by default. Player data is session-locked, purchases are granted exactly once, remotes validate and rate-limit their arguments, and anything a client asks for is checked again on the server.
- Only what you use is loaded. A service starts the first time you get it. Services you never touch cost nothing.
- Configurable, not forkable. Every setting has a sensible default. Change only the settings you need, in one small module per service, and your changes survive every update.
- Always up to date. With automatic updates, every new server loads the newest Engine. With manual updates, you decide when to move to a new version from the plugin.
- Strictly typed. Engine is written in strict Luau, and every reference page lists the types a module exports.
How it fits together
ServerScriptService
└── Engine ModuleScript: require this on the server
├── Loader Script: starts Engine when the server starts
├── Configuration Folder: your settings, one ModuleScript per module
└── MainModule The engine itself (manual updates only)
ReplicatedStorage
└── Engine Created by Engine at startup: require this on the clientThe Engine plugin creates this for you. The Loader script boots Engine as soon as a server starts, so ReplicatedStorage.Engine exists before players' scripts run.
Where to go next
- Installation: add Engine to your game with the plugin.
- Quick Start: save player data, add a currency and talk to the client in a few minutes.
- Services, Systems & Packages: how the three tiers are organised.
- Configuration: change settings for your game.