Development

The Engine Beneath the Realm

Ancient bronze machinery and rune-lit gears turning beneath a fantasy city while wardens inspect the mechanism

The best engine work is almost invisible. Doors open. Names survive. The world returns from a reboot exactly where it should.

Over the last year, LuminariMUD’s foundations went through a sustained rebuild. Source files moved into a coherent src/ tree. Autoconf and build definitions were modernized. A one-command setup path learned to create configuration, symlinks, world indexes, required text files, player directories, and a minimal bootable world while tolerating a database that had not yet been configured.

A name can now move safely

The old character-rename path changed only part of an identity, risking orphaned accounts, inventories, pets, mail, quests, introductions, and cached subscriptions. The new transactional service treats a rename as one operation across the player index, pfile, account link, nineteen active database keys, auxiliary files, live descriptors, and caches. Payload hashes and postconditions guard object and companion data, while failure injection tests prove that interrupted work rolls back instead of presenting partial success.

A modern compiler and real gates

The codebase migrated to GNU C23 and repaired the diagnostics exposed by that stricter toolchain. CI now builds the production sources, verifies database schema components, runs linked gameplay suites, fuzzes protocol input, checks end-to-end flows, and measures coverage. Obsolete mirror tests were replaced by tests that exercise the code actually shipped.

Runtime negotiation, Intermud3, buffers, logging, database access, copyover recovery, player death, object loading, and many compiler warnings received hardening passes. A curated set of tbaMUD improvements was ported rather than copied wholesale, with new upstream regression tests. Light Step now checks traps correctly, and Repulsion no longer bypasses combat gating.

This dispatch is for the machinery beneath the magic: fewer hand-built deployments, fewer silent partial saves, stronger proof before release, and a codebase prepared for the next decade rather than merely the next reboot.