Search the docs

Find a guide, global, type or member

Get started

Glowstone experiences are Minecraft games written in Luau, the typed Lua that Roblox made, and run on Glowstone's Ember servers. You write them in Glowstone Create, a desktop IDE that knows Ember's API: it completes, type-checks and formats your scripts as you go.

Install Glowstone Create

Download Glowstone Create for macOS, Windows or Linux and open it.

Start from a template

Choose New experience… on the welcome screen. Each template is a whole, working game you can pull apart:

  • Coin Rush: race to grab the gold coins scattered around the map; first to three wins. The smallest whole game, and the best place to start.
  • Bed Wars: teams defend their beds on floating islands and buy gear with generator loot. Shows teams, shops and rotating maps.

A project is a folder on disk, in Documents/Glowstone unless you pick somewhere else. Open it in VS Code with luau-lsp too if you like: Glowstone Create writes the type files and settings it needs.

What's in a project

experience.toml    the experience's name, player counts and map
main.luau          the entry script, run when a match starts
content.luau       custom blocks, items, mobs and recipes (optional)
maps/*.embermap    the maps matches are played on
assets/            models and textures for your content

The manifest is small. Coin Rush's:

id = "coinrush"
name = "Coin Rush"
minPlayers = 1
maxPlayers = 8
countdownSeconds = 5
map = "coinrush"
entry = "main.luau"

Your first change

Open main.luau and find where players join:

players.onJoin(function(player)
	player:sendMessage("<yellow>Welcome to my game!")
end)

Text is MiniMessage, so <yellow> colours it. Hover any name for its docs, or look it up in the API reference: players and Player are good first stops.

Put it on Glowstone

On Glowstone your game is an experience, and you make it in the dashboard: sign in with the Microsoft account you play Minecraft on, choose New experience, and give it a name. Its address, like @you/coin-rush, follows the name until you change it, and so does its content namespace, which is fixed once the experience is made. Then add a world for each game it runs; one is plenty to start.

A new experience is private. When it's ready for players, ask for it to go public.

Next, read how what you make is organised: experiences, worlds and builds.