A scalable Roblox framework that handles data saving and replication, provides monetisation features, supports self-contained systems, and uses the Services Controllers Components pattern.
This framework requires Node.js and Rojo - see the docs here: Node.js, rojo docs
For older versions of this framework (0.1.2 and earlier), follow these instructions instead.
To setup, run:
wally install
This will install the necessary dependencies (Promise, Trove etc.) and put them in the /Packages directory.
Run:
rojo build -o build.rbxl
to build a Roblox place file. Any time you add a new folder as a descendant of src, run:
node tools/genRojoTree.js
to regenerate the default.project.json file, and then run
rojo serve
to re-sync to Studio.
To create a new project, clone this repository and run:
npm installThen
npx woolly setupto set up the project.
To avoid typing npx before every command, run
npm linkand you should be able to run commands without npx like:
woolly setup
woolly gen
woolly build
woolly serveNote npm link might need to be run as an adminstrator, for example by sudo npm link.
Here are the most useful commands to get up and running quickly:
npx woolly build [Place]- Builds your project into /builds/.rbxl.
npx woolly serve- Starts rojo serve with the current place.
- Keeps Studio synced with your local files.
npx woolly gen- Regenerates places/.project.json from your source files.
Scaffold new modules and systems:
npx woolly create service CurrencyService
npx woolly create component ItemButton
npx woolly create system Inventory
npx woolly create controller InventoryController --system Inventory
npx woolly create data_type Fruits --system Inventory
npx woolly create class ItemStand --target serverTips:
- Add --place to create inside a specific place (e.g. Lobby place).
- Add --system to place inside a system (e.g., _systems/Inventory/...).
- After creating, Rojo mappings are auto-generated.
Please see /docs for documentation on the various types of file. Below is a quick summary of these types:
server-only singleton modules that manage the logic for a specific system in your game.
client-only singleton modules that manage the client logic for a specific system in your game.
client class modules that handle UI elements and self-contained client systems.
modules that contain useful methods that aren't game-specific
contains ids, constants, and tunables and is accessed through a central registry.