bloxfa.st
Docs

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

  • Node.js 20 or newer.
  • Rokit, which installs the pinned Rojo version.
  • Roblox Studio.

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

  1. Install the Rojo plugin. Either run rojo plugin install, or in Studio open the Toolbox, switch to Plugins and search for "Rojo".
  2. Open a new Baseplate place.
  3. 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.

  1. File > Publish to Roblox, and publish this place as a new experience. Name it something like "MyGame (test)".
  2. 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 5000 in 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