MOO//ACADEMY
WELCOME TO MOO ACADEMY

Learn MOO programming: getting started

Learn MOO programming by reading a lesson, running its code, inspecting the results, and trying a change of your own.

MOO is a programming language for building shared, text-based worlds. Objects hold properties and verbs: the data and behavior that make a world work. MOO Academy gives you a browser-based learning workspace where you can explore those ideas without setting up a server. No account or prior programming experience is needed: start with values and variables, then explore objects, properties, verbs, and inheritance.

Start learning MOO coding with a lesson

Choose Training in the header and begin with the First steps track. Tracks group related lessons into a recommended order. You can browse or search the lesson list at any time; on smaller screens, open Browse lessons.

  1. Read. Follow the explanation and numbered exercise steps. Check the starting state and the labeled starter result.
  2. Run. Choose Open code, edit the example, and press Run code. Use Stop to cancel an active run.
  3. Inspect. Compare Output, Returned value, Exercise result, and any Errors. Open World to see what changed.
  4. Experiment. Try the suggested edit, predict its effect, and run again. Restore example restores the lesson’s code while keeping your world.

Some lessons check an objective; exploration lessons invite you to compare results. Read the exercise feedback before moving on with Next lesson.

If you follow a track in order, keep using its current world. Load lesson starting world is for skipping ahead, recovering from experiments, or starting fresh. It replaces that track’s world after confirmation while keeping your code and progress. You can collapse Starting State; that preference carries across lessons.

Find your way around

Lesson
The explanation, exercise, expected result, and suggested experiment.
Code
The lesson editor, Run and Stop controls, and execution feedback.
World
Inspect objects, inheritance, containment, properties, and verbs. Selecting an object to inspect does not change the object on which your code executes; the execution context is shown separately.
Eval
A console for quick MOO expressions or statements, such as ;1 + 2. It shares the current world with Code, so evaluations can change that world. It does not award lesson progress.
Reference
Builtin documentation and, in the ToastStunt profile, the imported Common Packages utility reference.

On a wide screen, lessons and the lab sit side by side. On smaller screens, switch views with the tabs. Switching views preserves your code and world.

Choose Sandbox in the header to experiment without lesson checks. Select a named world, including Common Packages in ToastStunt. Sandbox worlds are saved separately from training tracks.

Learn LambdaMOO or ToastStunt

To learn LambdaMOO, choose the LambdaMOO profile and practice the language’s core concepts. To learn ToastStunt, use the default ToastStunt profile, which also introduces extensions such as maps and the imported Common Packages utilities. Both profiles share the same lesson workflow.

The profile dropdown switches between LambdaMOO and ToastStunt. It changes the language features and available lessons. Open the ? beside it for the differences.

Code runs locally in your browser using an educational MOO runtime. It is not a connection to a live multiplayer MOO. Server integrations use the supported local models and fixtures described in their lessons; permissions, command handling, and scheduling do not reproduce a full server. For example, suspend() is capped at five seconds here.

Common Packages contains imported ToastCore utility source. Lessons labeled Real server exercise distinguish browser source inspection from code that needs an isolated native server. Read the prerequisites and expected effect before using those examples elsewhere.

Keep your work

Worlds, lesson drafts, and progress are stored in this browser. Each track and named sandbox has a separate world for each profile; lesson progress is shared between profiles. Your work does not automatically follow you to another device or browser.

Code drafts save as you edit. Eval text saves when you evaluate it. Check the save status, especially if storage is unavailable or another tab owns the workspace.

In World, Export world downloads the world’s objects and properties. Download drafts downloads code drafts and unrun Eval text as JSON; open it to copy source back into an editor. World exports and draft downloads preserve different parts of your work.

Import world replaces the current world after confirmation. Reset track world or Reset sandbox world restores that workspace’s beginning. These world actions keep your lesson drafts and progress. Export a world before replacing it if you want to keep a copy.

Continue with LambdaMOO and ToastStunt programming manuals and tutorials, or read MOO programming field notes for real servers when you are ready to move beyond the browser.

Open the learning workspace →