Classic Ultima Online on Godot 4 .NET
A multi is a list of components (item, x, y, z, visible) that the client and the shard place as one object: houses, keeps, boats, castles. GUO’s tools learn how the client’s own buildings are put together, generate new ones, check them, and prove them in game on a private shard.
Nothing here writes to your UO install. New multis go into a staged data set (ADR-0022, and Author UO Data), and the client loads it on top of the install.
python tools\multi\run.py mine catalogue the client's multis and the buildings in a facet (about 10 s)
python tools\multi\run.py build DESC.json expand a description, validate it, render previews
python tools\multi\run.py write NAME write it into the stage and read it back
python tools\multi\run.py prove NAME --clip OUT.mp4 place it on the private shard, walk in the door, film it
python tools\multi\run.py show ID render any multi, the client's or yours
For a scene of several multis there are scene-build, scene-write and
scene-prove in the same tool (python tools\multi\run.py -h lists every
command). launchers\world\multi.bat and launchers\world\decorate.bat run
the tools from the launchers folder.
tools/multi/examples/ holds generic descriptions: seven houses (one and two
storeys) and a small castle scene. The description format, the catalogue and
the built multi’s sidecar are documented in docs/data_formats.md section 16.
The validator checks every multi before it’s written:
walkcheck and prove then walk it in game: a scripted client follows the
tour stops and reports each one it reached.
tools/decorate furnishes a generated house from what UO’s own interiors hold:
python tools\decorate\run.py mine
python tools\decorate\run.py decorate NAME --seed 7
python tools\decorate\run.py preview DESC.json
The database and previews come from your client data, so they stay in
build/ and are never committed.
/uo-multi and /uo-decorate agent skills run these flows in order (see
Working with AI Agents).