Skip to content

Agent Index

Kit Oliynyk edited this page Nov 2, 2026 · 1 revision

TL;DR: The map of this wiki for AI agents and tools, in llms.txt shape. Read the two pages under "Read first", then the reading list for your task. Use when: you are an agent (or a person) starting any task on DreamLand code, scripts, areas or text. Source of truth: the pages themselves. Each page's header names its own sources in code. Verified: 2026-11-02 against dreamland_code e77625eb

DreamLand developer wiki

DreamLand is a trilingual (English, Ukrainian, Russian) text MUD of the DikuMUD/ROM/Anatolia line. A C++ engine holds the core, and the Fenia scripting language runs most of what players see. This wiki covers the engine, Fenia, building, localization, clients and how to contribute. It does not cover live server operations, player data or quest solutions.

Read first

  • Wiki-Conventions: how pages are named, built and verified, and what the header block means
  • Repositories: which repo holds what, and how they mount at runtime
  • Glossary: words used in a fixed sense

Tasks

All pages

Start here

  • Home: What DreamLand is and where to start, by role.
  • Agent-Index: This page: the map of the wiki for agents and tools.
  • Repositories: DreamLand lives in about a dozen repositories under the dreamland-mud GitHub organization.
  • Glossary: Short definitions of the words this wiki uses in a fixed sense: vnum, prototype, instance, pulse, tick, round, codesource, behavior, trigger, reset, remort, qp, mudtag, Flexer pad, buildplot and a few more.
  • Wiki-Conventions: Every page has an ASCII name that never changes, a fixed four-line header, a verification stamp and one home for each fact.

Get running

  • Local-Setup: Build the server on Ubuntu 18.04 or 20.04 with gcc 9 or newer, install it into a runtime directory, clone dreamland_world and dreamland_fenia_public into it and start bin/dreamland etc/dreamland.xml.
  • Local-Testing: On a local server you play an immortal with Fenia rights.
  • Troubleshooting: When the server will not start or dies, read the last lines of the newest log first.

Contribute

  • Contribute: DreamLand is open source (GPLv3) and short of hands in six areas: building zones, scripting in Fenia, C++, the web client and site, translation, and help writing.
  • Contributing-Workflow: Fork, branch, change, open a pull request, keep your fork in sync with upstream.
  • Code-Style: Check for null explicitly, skip guards that the engine already guarantees, guard everything that runs after a wait, put repeated patterns in a helper, roll luck through the shared chance helper, and never leave a loop without an exit.
  • Accessibility: Blind players use the game with screen readers, so no fact may live only in color, an image or an ASCII drawing.
  • Writing-Player-Text: Anything a player reads is written in all three languages, uses ASCII punctuation, keeps one alphabet per word, talks to the player as "you" (ты, ти), marks gender with {S tags, and stays inside the 18+ rating.
  • Game-Design-Principles: Balance is a triangle of slight edges, never hard counters.

Build areas

  • Building: Areas are built in game with the OLC editors, on the buildplot (a separate copy of the world for builders) or on a local server.
  • OLC: OLC is the in-game editor plugin.
  • OLC-Rooms: redit edits a room prototype in place.
  • OLC-Mobiles: medit edits a mob prototype.
  • OLC-Objects: oedit edits an object prototype.
  • OLC-Resets: A room has an ordered list of resets.
  • OLC-Line-Editor: Multi-line text in OLC (room and object descriptions, helps, extra descriptions) is edited in a line editor modelled on Unix ed, or in a browser editor (webedit) in the web client.
  • OLC-Other-Editors: Besides rooms, mobs and objects, OLC has editors for help articles, skills, skill groups, commands, socials, races, religions, behaviors, config files and area quests.
  • Area-Format: An area is one XML file with six sections: header, helps, mobiles, objects, rooms and quests.
  • Area-Quests: An area quest is a list of steps stored in the area file.
  • Mob-Forms-and-Parts: A mob's body is a set of forms (what kind of creature it is) and parts (what it has).

Fenia

  • Fenia: Fenia is DreamLand's own scripting language.
  • Fenia-Language: Fenia is an untyped, JavaScript-like language.
  • Fenia-Triggers: Every event a Fenia script can hook, by entity: mobs, items, rooms, affect handlers, areas, global events, AI decisions, and the functions the engine calls by name.
  • Fenia-Gotchas: Traps that make Fenia code fail without a stack trace, each with its fix.
  • Fenia-API: Fenia's API is the set of C++ wrappers in plug-ins/feniaroot.
  • Fenia-Scripts: A Fenia script is a code source stored in the Fenia database.
  • Fenia-Behaviors: A behavior is a named bundle of Fenia triggers, default properties and a help article.
  • Fenia-Skills-and-Spells: A spell or skill keeps its configuration in world XML and its logic in Fenia hooks: run<Target>, preRun<Target> and apply<Target> for spells, run, preRun and apply for skill commands.
  • Fenia-Cookbook: Worked examples and short recipes for Fenia in the current style: a mob with random actions, an exit redirect, a delayed conversation, a global trigger, a thread, and about twenty one-screen tasks.
  • Fenia-Grammar: The formal grammar of Fenia as the parser accepts it today, with tokens and operator precedence.

Engine

  • Engine-Architecture: A small core library (src/) plus about fifty plugins (plug-ins/, shared objects) make one process.
  • Engine-Time-and-Pulses: The server runs one loop at 4 pulses per second.
  • Output-Format: Every message a player sees goes through one custom formatter (MsgFormatter), not libc printf.
  • Mechanics-Combat: Melee and spells run through two damage pipelines that apply protections in a fixed order.
  • Mechanics-World: Rules of the world outside the fight itself: light and darkness, charmed followers and orders, permanent affects, what the server saves to disk and when, limited items, corpses, aggression, religion defaults.
  • Data-Configs: Game data lives in dreamland_world, mounted at the runtime table directory.
  • Item-Power: Every source of item stats prices them on one scale called M (one measure).

Localization

  • L10n: DreamLand speaks English, Russian and Ukrainian.
  • Text-Markup: Player text carries inline tags that start with {.
  • L10n-Cpp: C++ output is localized by wrapping the Russian literal in _("...") (resolved per recipient) or l(ch, "...") (resolved now for one viewer) and adding the English and Ukrainian text to the catalog.
  • L10n-Fenia: In Fenia, wrap the Russian text in ._("...") and pass the result straight to act, say, recho, echo or psay.
  • L10n-Translating-Content: Content translation fills empty English and Ukrainian fields from the Russian source, after a light Russian cleanup.
  • Help-Articles: Help articles live in several XML homes, each with its own article class.

Clients

  • Clients: You can play DreamLand in a browser at https://dreamland.rocks/play, in Mudlet with an auto-installed package, or in any telnet client on dreamland.rocks port 9000.
  • Client-Web-Development: The web client (mudjs) is a React and Vite app that speaks the JSON WebSocket protocol to the game.
  • Client-Web-Protocol: The web client and the server talk over one WebSocket with JSON frames {"command": name, "args": [...]} in both directions.
  • Client-Mudlet-and-GMCP: The Mudlet package is Lua in src/, built into one Dreamland.xml.

More

  • Player-FAQ: DreamLand is a free, 18+ text game you play in a browser or a MUD client, in English, Ukrainian or Russian.
  • History: DreamLand descends from DikuMUD through Merc, ROM and Anatolia, was forked in 1998, went dark for about five years and came back on 2018-04-24.
  • World-Canon: The canonical names of DreamLand in English, Russian and Ukrainian: the world and its regions, every zone, the 13 classes, 23 playable races, the Eight Paths and Path of Freedom, 44 gods and cults, 10 clans.

Clone this wiki locally