DalilaMud
Un MUD (gioco di ruolo testuale multigiocatore) in italiano — fork pesantemente personalizzato di CircleMUD 3.0, salvato dalla sua vecchia VM, portato su git e macOS e in via di modernizzazione.
Cos’è
DalilaMud è un MUD — Multi-User Dungeon, un gioco di ruolo interamente testuale in cui più giocatori esplorano e vivono lo stesso mondo scrivendo comandi. È un fork pesantemente personalizzato, in italiano, del classico CircleMUD 3.0, cresciuto di sistema in sistema negli anni.
Le personalizzazioni
Sopra il CircleMUD di base sono stati costruiti tanti sistemi su misura:
- un articolato sistema di mestieri e professioni in italiano (fabbro, sarto, cuoco, alchimista, architetto, gioielliere, erborista… e molti altri);
- clan, wilderness, arena e aste;
- editor OLC in-game per costruire il mondo dall’interno del gioco;
- DG Scripts per la logica degli eventi;
- case per i giocatori (player housing).
Dalla VM a git (2026)
Per anni il codice è vissuto solo su una VM, modificato dal vivo. Nel 2026 l’ho
copiato in un ambiente di sviluppo locale, messo sotto git per la prima volta e
portato a compilare nativamente su macOS/clang (il sorgente era scritto con
convenzioni C vecchie di decenni). Durante l’import ho anche scovato e sistemato un paio
di stranezze storiche — tra cui un bug che gonfiava a dismisura il file dei “mob”
salvati, perché scriveva su disco memoria non inizializzata: risolto con un semplice
memset prima del salvataggio.
La modernizzazione: dai file al database
Il prossimo grande passo è sostituire i quattro sistemi di salvataggio su file piatti (personaggi, mob, oggetti, case) con un vero database. Si parte dai personaggi — già in XML, quindi i più strutturati — migrando verso SQLite con un approccio pragmatico: colonne per i campi che il gioco interroga davvero (livello, classe, ultimo accesso…) e JSON per tutto il resto (statistiche, abilità, effetti attivi), così aggiungere un nuovo campo resta un cambio di codice e non di schema.
Il bello è che tutta la persistenza passa da poche funzioni (load_char /
save_char): si riscrivono quelle, senza toccare le oltre 120 chiamate sparse nel resto
del codice.
Stack
C · CircleMUD 3.0 · Docker · SQLite (migrazione in corso)