# Creator Docs

> Build multiplayer games for disko, publish them to the registry and host rooms.

disko lets you build small multiplayer games that people play together in
the browser. You write the game; disko takes care of networking, physics and
keeping every player's screen in sync.

> [!NOTE]
> disko is in alpha. APIs may change between releases without compatibility
> guarantees.

## The three pieces

Everything in disko is one of three things.

A **game** is your code: the rules, the field, what happens when someone
scores. It's a small JavaScript or TypeScript project.

A **room** is where a game is played. It's a running program that players
connect to. The room decides who can join, keeps the chat, and chooses which
game is loaded.

The **registry** stores published games. When you publish, your game becomes
a release with a fixed version number, so a room can load exactly that
version, today or in a year.

```mermaid alt="You publish a game to the registry; a room loads a release from the registry; players join the room from their browsers."
flowchart TB
  you["You"] -- publish --> registry[("Registry")]
  registry -- load a release --> room["Room"]
  room <-- play --> players["Players' browsers"]
```

You don't need a room of your own to start. While you develop, `disko dev`
runs a private test room for you.

## Start here

1. [Install](/get-started/install) the tools.
2. [Create your first game](/get-started/first-game) and play it in a test
   room.
3. [Publish a release](/get-started/publish) to the registry.
4. [Host a room](/get-started/host-a-room) that loads it.

## Guides

- [Games](/games/project-structure): how a game project is laid out, the Menu
  and HUD, the physical world, players and actions, and the `disko:` standard
  library.
- [Rooms](/rooms/launch): starting rooms from Node, events and chat, loading
  games, and running on a server.
- [Registry](/registry/games-and-namespaces): namespaces, visibility,
  releases, private games and CLI tokens.
- [Agents](/agents/coding-agents): building with coding agents.

## Reference

The [reference](/reference/game) lists every function and option. It's
generated from the TypeScript declarations that ship with disko, so it always
matches what you install. Every build problem and CLI error has its own page
under [Error codes](/errors).

## For agents

[`/llms.txt`](/llms.txt) indexes every page. Each page is also available as
plain Markdown at its URL plus `.md`, for example
[`/get-started/install.md`](/get-started/install.md).
