Skip to content

Installation

BlinkBlox comes in two parts. The compiler is a command-line program, blinkblox, that turns a .blink schema into Luau modules on disk. The Studio plugin, BlinkBlox Editor, does the same inside Roblox Studio with no external tooling. Both accept the same schema language and produce the same modules, so pick whichever fits how you work. You can use both.

Rokit is the recommended installer. It pins the version in your project’s rokit.toml, so everyone who clones the project gets the same compiler.

From your project directory:

Terminal window
rokit add XopoIII/BlinkBlox blinkblox

This downloads the build for your platform and records it in rokit.toml. blinkblox is now on your PATH inside the project. To pin an exact version, name it:

Terminal window
rokit add XopoIII/BlinkBlox@1.2.1 blinkblox

To move to the newest release later:

Terminal window
rokit update XopoIII/BlinkBlox

Add --global to rokit add to install it for every project on the machine instead.

Check that it runs:

Terminal window
blinkblox --version

It prints BlinkBlox followed by the version number. The command-line page covers every flag.

A game does not depend on BlinkBlox at runtime: it uses the modules the compiler generated, which need nothing else. The Wally package is for code that runs the compiler itself inside Roblox – a plugin, an in-Studio build step, an editor – and holds the same lexer, parser and generator as the command line and the Studio plugin, in one module.

wally.toml
[dev-dependencies]
BlinkBlox = "xopoiii/blinkblox@1.2.1"
local BlinkBlox = require(Packages.BlinkBlox)
local Output = BlinkBlox.Compile([[
event Hit {
From: Client,
Type: Reliable,
Call: SingleSync,
Data: u8
}
]])
-- Output.Server, Output.Client and Output.Types are the modules' source text.

Compile(Schema, Options?) returns the three modules’ text and a list of the warnings it raised, rather than printing them. A schema that does not compile raises its diagnostic; inside Roblox it is formatted with rich text, as the Studio plugin shows it. Options.Profile compiles under a profile, and Options.Files maps the names an import writes to the schemas it reads: import "Shared" reads Files.Shared. BlinkBlox.VERSION is the version the modules’ headers name.

The plugin, BlinkBlox Editor, gives you an editor with syntax highlighting, autocomplete and live diagnostics, and generates the modules straight into your place.

Install it from the Creator Store. Studio keeps it up to date from there.

The plugin and the compiler are released together from the same source and stamped with the same version. Keep them on the same release: the generated modules carry that version, and it is the first thing to compare when two builds disagree.