DalilaMud
An Italian text-based multiplayer RPG (MUD) — a heavily customized CircleMUD 3.0 fork, rescued from its old VM, moved to git and macOS, and now being modernized.
What it is
DalilaMud is a MUD — a Multi-User Dungeon, a fully text-based role-playing game where multiple players explore and live in the same world by typing commands. It’s a heavily customized, Italian-language fork of the classic CircleMUD 3.0, grown one system at a time over the years.
The customizations
On top of stock CircleMUD, a lot of bespoke systems have been built:
- an elaborate crafts and professions system in Italian (smith, tailor, cook, alchemist, architect, jeweller, herbalist… and many more);
- clans, wilderness, an arena and auctions;
- in-game OLC editors to build the world from inside the game;
- DG Scripts for event logic;
- player housing.
From VM to git (2026)
For years the code lived only on a VM, edited live. In 2026 I copied it into a local
dev environment, put it under git for the first time, and ported it to build
natively on macOS/clang (the source was written in decades-old C conventions). During
the import I also tracked down and fixed a couple of historical oddities — including a
bug that bloated the saved-”mob” file enormously because it wrote uninitialized memory to
disk: fixed with a simple memset before saving.
Modernization: from files to a database
The next big step is replacing the four flat-file save systems (characters, mobs, objects, houses) with a real database. It starts with the characters — already in XML, so the most structured — migrating to SQLite with a pragmatic approach: columns for the fields the game actually queries (level, class, last login…) and JSON for everything else (stats, skills, active effects), so adding a new field stays a code change rather than a schema change.
The nice part: all persistence funnels through a handful of functions (load_char /
save_char), so I rewrite those without touching the 120+ call sites scattered across
the rest of the code.
Stack
C · CircleMUD 3.0 · Docker · SQLite (migration in progress)