Get started
Install and first run
Install the tools, compile the project, sync it into Studio with Rojo, and press Play in a test place.
BloxFast is a roblox-ts project. You write TypeScript in src/, rbxtsc compiles it to Luau in out/, and Rojo syncs out/ into an open Studio place. This page gets you from a fresh download to a working playtest.
What you need
1. Install the tools and packages
From the boilerplate/ folder:
rokit install
npm install
rokit install reads rokit.toml, which pins Rojo:
[tools]
rojo = "rojo-rbx/rojo@7.6.1"
npm install installs roblox-ts, the Roblox typings, Fusion 0.2 and ESLint from package.json.
2. Compile
npm run build
This runs rbxtsc, which writes Luau to out/ and the roblox-ts runtime to include/. While you work, use npm run watch instead so it recompiles on every save.
If the build prints errors, fix them before going further. Rojo only syncs what compiled.
3. Start Rojo
In a second terminal:
npm run serve
That runs rojo serve with default.project.json, which maps the compiled folders into the game:
| Folder | Where it goes in Studio |
|---|---|
out/server |
ServerScriptService.TS |
out/shared |
ReplicatedStorage.TS |
out/client |
StarterPlayer.StarterPlayerScripts.TS |
include and node_modules/@rbxts |
ReplicatedStorage.rbxts_include |
The project file also adds a Baseplate part and a SpawnLocation to Workspace, so an empty place is playable.
4. Connect Studio
- Install the Rojo plugin. Either run
rojo plugin install, or in Studio open the Toolbox, switch to Plugins and search for "Rojo". - Open a new Baseplate place.
- In the Plugins tab, click Rojo, then Connect.
The TS folders appear in the Explorer and stay in sync while serve and watch are running.
5. Make a separate test place and turn on API access
Player data, gifts, the trade log and the leaderboard all use DataStores. Studio can only reach DataStores for a published place with API access turned on.
- File > Publish to Roblox, and publish this place as a new experience. Name it something like "MyGame (test)".
- Home > Game Settings > Security, turn on Enable Studio Access to API Services, and save.
Use a separate experience for this, one real players never join. With API access on, a Studio playtest reads and writes the same DataStores the live game uses, so testing /resetdata or a migration against your real experience changes real player saves. A test experience gives you its own empty DataStores.
Without API access, Play still works. PlayerData falls back to temporary data and prints this in the Output window:
[PlayerData] Using temporary data that won't be saved. To test saving, publish the place and turn on Game Settings > Security > Enable Studio Access to API Services.
6. Press Play
You spawn in the demo hub: a plaza with coins and gems to pick up, and a stand for each system around it (eggs, the spin wheel, quests, the season pass, the shop and so on). Walk up to a stand and press E, or tap the prompt, to open that system's window. You should also see the coin counter in the top left, a side rail on each edge of the screen, and the daily reward window, which opens on its own when a reward is waiting.
The hub is built by src/server/demo and is on while DEMO.enabled is true in src/shared/Config.ts. To remove it for your own game, see Project layout.
A few things to try in the first playtest:
- Type
/give 5000in chat. In Studio everyone counts as an admin (see Admin commands). - Open Eggs on the right rail and open a Starter Egg. Click Odds to see the odds list.
- Press F6 to open the UI kit gallery, which is only built in Studio. The hub also has a gallery stand that opens it in live servers.
Scripts
| Command | What it does |
|---|---|
npm run build |
rbxtsc: compile src/ to out/ |
npm run watch |
rbxtsc -w: compile and keep recompiling on save |
npm run serve |
rojo serve: let Studio sync |
npm run place |
rbxtsc && rojo build -o game.rbxl: build a place file you can open or upload |
npm run lint |
eslint src |
npm run format |
prettier --write src |
Next
- Project layout walks through
src/. - Configuration lists the config files and what to set before launch.