GodotUO

Classic Ultima Online on Godot 4 .NET


Project maintained by DatMoshu Hosted on GitHub Pages — Theme by mattgraham

Feature Layers

Everything in GUO belongs to one of five layers. The layer decides what a change must prove before it is merged, whether it is on by default, and whether it ships in the game you download. The owner approved the layers on 2026-10-13; the binding text is the layer table in AGENTS.md and CONTRIBUTING.md.

Layer What it holds On by default? In an exported game?
L0 Core port ClassicUO’s own code, carried across Yes Yes
L1 Client options GUO features a player switches on in Options No Yes, switched off
L2 Packs Art, HD art, splats, screen effects, sounds, voices, zones, themes Only what you install Never bundled; installed from the Store
L3 Editor packages The GodotUO editor: authoring, generation, AI, MCP, tours Editor only Never
L4 Labs Experiments not ready to be an option No, needs an opt-in build Never

What each layer has to prove

Rules every change follows

  1. A new chat command, profile field, Options entry, shader or edit to ported code starts with a short proposal or ADR that the owner decides. The first question: would ClassicUO ship it? If not, it belongs in a pack, the editor or Labs.
  2. One feature per pull request, about 1,500 lines or 20 files at most unless agreed first.
  3. Generating content belongs in the editor or Labs; the game only reads packs.
  4. Anything that needs an outside program has a doctor launcher, and its failure text names that launcher.
  5. Every L1 and L4 feature has a scenario under tools/scenarios/ and a line in the smoke.
  6. Content that can be a pack goes to the Store.
  7. Contributors and agents fill in the same review template: layer, toggle, parity proof, scenario, doctor and docs section.

Building with Labs

dotnet build godot\GUO\GUO.csproj -c Debug -p:GuoLabs=true

godot/GUO/src/Labs/README.md explains how a Lab registers its chat commands and Options rows.

See also