LuminariMUD Server Runtime

LuminariMUD Server Runtime An architecture diagram generated by Archify. MUD Clients · telnet, Mudlet, web · Architecture component MUD Clients telnet, Mudlet, web Descriptor I/O · sockets + telnet options · bin/luminari - one process, main-thread gameplay Descriptor I/O sockets + telnet options Game Loop · main thread, 100 ms ticks · bin/luminari - one process, main-thread gameplay Game Loop main thread, 100 ms ticks Command Interpreter · cmd_info[] dispatch · bin/luminari - one process, main-thread gameplay Command Interpreter cmd_info[] dispatch Game Systems · combat, magic, characters · bin/luminari - one process, main-thread gameplay Game Systems combat, magic, characters In-Memory World · rooms, mobs, objects, zones · bin/luminari - one process, main-thread gameplay In-Memory World rooms, mobs, objects, zones Event Runtime · timing wheel + domain events · bin/luminari - one process, main-thread gameplay Event Runtime timing wheel + domain events Login + Creation · nanny() connection states · bin/luminari - one process, main-thread gameplay Login + Creation nanny() connection states DG Scripts + Specials · triggers, spec_dispatch() · bin/luminari - one process, main-thread gameplay DG Scripts + Specials triggers, spec_dispatch() Bridges + AI · Discord, I3, terrain, Ollama · bin/luminari - one process, main-thread gameplay Bridges + AI Discord, I3, terrain, Ollama MariaDB · accounts, help, regions, saves · Architecture component · MariaDB MariaDB accounts, help, regions, saves World + Player Files · lib/world, lib/plrfiles · Architecture component World + Player Files lib/world, lib/plrfiles telnet input queue CON_PLAYING ACMD() handler.c login states due deadlines owner callbacks command triggers accounts SQL saves index_boot() watched fds bin/luminari - one process, main-thread gameplay Legend Frontend Backend Database Security Message bus External

One thread owns the game

  • • game_loop() waits on the reactor, then drains input, commands, output, and due events
  • • Commands run immediately; timed work lives on a 5-level, 64-slot timing wheel
  • • Bridge sockets and the AI result pipe reach the loop only as watched descriptors

Where state lives

  • • Authored world: lib/world flat files, loaded by index_boot() at boot
  • • Accounts, help, regions, pets, and object saves: MariaDB through a pooled client
  • • Characters: lib/plrfiles, written by save_char_checked()

Revision-pinned evidence

  • • Repository: github.com/LuminariMUD/Luminari-Source
  • • Source snapshot: master @ 0bc67f2
  • • Open any SRC marker to jump to the exact lines at that commit