Da tanto tempo Fortuna tira i dadi, tiene il conto delle monete e fa girare le campagne sui server Discord. Dietro le quinte, però, il bot era diventato un unico, enorme programma che gestiva tutto in una volta sola — e le crepe cominciavano a vedersi. Così abbiamo fatto ciò che ogni progetto di lunga vita prima o poi affronta: lo abbiamo ricostruito da zero.
Il nuovo Fortuna risponde più in fretta, regge meglio sotto carico, è più semplice da migliorare per noi ed è pronto a crescere insieme al tuo tavolo. Gran parte di questo lavoro è avvenuta in luoghi che non vedrai mai, ed è proprio questo il punto. Ma i risultati si fanno sentire ovunque tu lo usi davvero. Ecco la storia completa di cosa è cambiato e perché conta.
Il Fortuna originale era costruito su uno schema molto comune: un bot che mantiene una connessione permanente e sempre aperta con Discord — ciò che Discord chiama gateway — e resta in ascolto di tutto ciò che accade su ogni server a cui è collegato, in ogni momento. Per reggere il carico man mano che il bot cresceva, quella connessione era stata suddivisa in più copie parallele, chiamate shard: ognuna un processo a sé, da sorvegliare, riavviare e mantenere in salute.
Funziona, e ha funzionato per anni. Ma ha un costo concreto. Un bot sempre connesso consuma di continuo memoria e mantiene uno stato, anche quando nessuno sta digitando un comando. Ogni server, canale e membro che poteva vedere aggiungeva peso. Quando uno shard inciampava, un'intera fetta di server poteva risentirne. E ogni nuova funzionalità andava infilata con cura in un programma che stava già facendo una dozzina di cose contemporaneamente.
Volevamo qualcosa di più snello. Qualcosa che lavori quando c'è da lavorare, resti silenzioso quando non serve e sia composto da pezzi piccoli, riparabili o scalabili uno alla volta.
I bot Discord moderni hanno un'opzione migliore per i comandi: invece di tenere aperta una connessione e restare in attesa, il bot può lasciare che sia Discord a chiamarlo solo quando qualcuno usa davvero uno slash command. Discord impacchetta il comando, lo invia come una singola richiesta web sicura, e il bot risponde. Nessuna connessione permanente, nessun peso a vuoto. Quando non succede nulla, il bot consuma quasi niente.
È questo il cuore del nuovo progetto. Abbiamo diviso il vecchio monolite in due pezzi ben distinti:
Pensalo come un ristorante. Il vecchio Fortuna era un unico cuoco in affanno che cercava di prendere le ordinazioni, gestire la sala e mandare avanti la cucina tutto insieme. Il nuovo Fortuna ha una cucina che si accende all'istante appena arriva un'ordinazione (fortuna-http) e un solo addetto attento all'ingresso che tiene d'occhio chi entra (fortuna-gateway). Ognuno fa bene il suo lavoro, e nessuno rallenta l'altro.
I discorsi sull'architettura vanno benissimo, ma ecco cosa noterai davvero sul tuo server.
Risposte più scattanti. Poiché il nucleo dei comandi fa una cosa sola e non si trascina alcun peso inutile, risponde in modo rapido e costante. C'è molto meno da aspettare prima che un comando vada a buon fine.
Maggiore affidabilità. I due pezzi sono indipendenti. Se l'aiutante dei tiri in chat ha bisogno di un riavvio, i tuoi slash command continuano a funzionare senza il minimo intoppo. I problemi restano circoscritti invece di propagarsi a tutto il bot.
Più stabile sotto pressione. Un nucleo dei comandi stateless non accumula peso man mano che si aggiungono server e giocatori. Le serate frenetiche si comportano molto più come quelle tranquille.
Miglioramenti più rapidi. Con un nucleo pulito e modulare, possiamo aggiungere e correggere funzionalità senza disturbare tutto ciò che le circonda. I nuovi comandi si inseriscono in modo ordinato, il che significa aggiornamenti che ti raggiungono prima.
Una ricostruzione è anche l'occasione per rilasciare le cose che da tempo volevamo aggiungere. Il nuovo Fortuna porta con sé un bel pacchetto di funzionalità:
/lc per i membri e /mod_lc per i moderatori che gestiscono i saldi. Premi e ranghi restano legati alla tua comunità./config raccoglie in un unico posto le impostazioni per-server, così ogni comunità può adattare Fortuna al proprio modo di giocare./handouts, proprio come dovrebbe fare un buon tavolo virtuale./checkin rende semplice segnare le presenze e tenere il gruppo in carreggiata.Tutto questo affianca le cose che Fortuna ha sempre fatto bene: tiri di dadi ricchi e completi (sia tramite slash command sia digitando i tiri direttamente in chat), il premio giornaliero, i ranghi, il negozio e tutto il resto.
Uno dei più grandi miglioramenti di qualità della vita è integrato direttamente nel nuovo nucleo: la localizzazione completa. Fortuna ora parla tutte le lingue di Discord — oltre trenta locale — e sceglie automaticamente quella giusta in base alle impostazioni Discord di ogni utente. Nomi dei comandi, descrizioni e risposte arrivano nella lingua del giocatore, con una sensata catena di fallback così che nessuno si ritrovi mai davanti a una traduzione mancante. Che il tuo tavolo giochi in portoghese, inglese, spagnolo, francese, giapponese o qualsiasi altra lingua, Fortuna va incontro a ciascuno là dove si trova.
Se ti piacciono i dettagli tecnici, ecco alcune delle scelte di cui siamo orgogliosi — e puoi tranquillamente saltare questa sezione se non fanno per te.
Ogni richiesta di comando proveniente da Discord viene verificata crittograficamente tramite firme Ed25519 prima che Fortuna agisca, così il bot risponde soltanto a richieste autentiche e non manomesse. Il nucleo dei comandi gira su Bun con il leggero framework Hono; l'aiutante dei tiri in chat è un piccolo programma Go compilato staticamente che resta in idle con un'impronta minima. Entrambi vengono distribuiti come immagini pulite e containerizzate, il che rende i deploy rapidi e ripetibili. E abbiamo integrato un vero monitoraggio degli errori, così che quando qualcosa va storto ne veniamo a conoscenza e possiamo correggerlo in fretta — facendo sempre attenzione a non registrare mai nulla di sensibile.
Il motore di dadi condiviso è la stessa matematica affidabile che alimenta i nostri altri strumenti, quindi un tiro significa esattamente la stessa cosa, che tu lo faccia su Discord o in qualsiasi altro punto dell'ecosistema.
Niente di tutto questo cambia lo spirito di Fortuna. È ancora il bot amichevole che tira i tuoi dadi e tiene in ordine la tua campagna. Ciò che è cambiato sono le fondamenta sottostanti: più snelle, più stabili e costruite in modo da poterlo continuare a migliorare senza mai intralciarti.
Aggiungi Fortuna al tuo server, prova i nuovi comandi e dicci cosa ti piacerebbe vedere in futuro. I dadi sono pronti quando lo sei tu.