Vai al contenuto
SIMONE PIZZI
Progetti ↗
Favella 1

Favella Studio: non sarà perfetto, ma fa il suo

Ad agosto avevo detto che l’IDE era un esperimento incompiuto. Poi il motore è cresciuto, Il Viaggiatore lo ha messo sotto torchio, ed è nato Favella Studio: uno strumento che fa il suo dovere.

Data
Lettura
11 minuti
Sezioni
11
Copertina: Favella Studio: non sarà perfetto, ma fa il suo

Ad agosto, quando ho scritto l’articolo sul congedo dello sviluppo e sulla liberazione del codice, avevo chiuso con una frase che allora mi sembrava definitiva: l’IDE era uno sfizio rimasto a metà, un esperimento privato da lasciare in pasto a GitHub per chiunque avesse avuto la curiosità di raccoglierlo. Avevo tirato una riga, convinto che il mio compito fosse finito lì, tra il manuale impaginato e il motore consegnato alla comunità.

E invece certe idee hanno una loro ostinazione silenziosa. Se costruisci un linguaggio di programmazione che promette di farti creare videogiochi scrivendo in italiano naturale, prima o poi ti scontri con la realtà: pretendere che le persone scrivano centinaia di righe a mano dentro un blocco note, ricordandosi a memoria ogni desinenza, ogni verbo di libreria e ogni regola di punteggiatura, è un po’ come progettare una casa accogliente e poi chiedere agli ospiti di montarsi le porte da soli prima di entrare. Serviva una porta aperta. È nato così Favella Studio.

Non è uno strumento perfetto, diciamolo subito con la consueta franchezza. Si porta dietro il peso inevitabile di Electron, su schermi molto piccoli chiede di fargli spazio con un po’ di respiro, e quando una regola ha troppe condizioni annidate alza le mani e ti suggerisce di sistemarla nel testo. Ma fa il suo dovere, e lo fa esattamente come lo sognavo: toglie di dosso la paura della sintassi e ti rimette davanti alla cosa più bella del mondo, cioè inventare una storia.

Prima di entrare nei dettagli tecnici e raccontarvi come è cresciuto tutto, voglio però fermarmi un momento per un ringraziamento speciale e doveroso al Professor Leonardo Boselli. Da sempre Leonardo riserva uno spazio generoso, attento e competente ai miei progetti, seguendone le evoluzioni con una passione rara e preziosa. Proprio di recente ha dedicato a Il Viaggiatore e all’ecosistema di FAVELLA 1 una disamina video accuratissima, mostrando in azione come un’avventura testuale moderna possa prendere vita sul nostro schermo. Potete guardarla qui sotto (o direttamente su YouTube):

Video YouTube

Il video sta su YouTube e si carica solo se lo avvii: da quel momento YouTube (Google) riceve il tuo indirizzo IP.

Guardalo su YouTube ↗

Il motore che ha dovuto imparare a capire le persone

Tra la versione 1.0.0 di giugno e l’attuale 1.4.2, il motore di FAVELLA 1 è cambiato profondamente. A giugno avevo scritto che «completo» non vuol dire finito, e i mesi successivi hanno dimostrato quanto quella frase fosse vera. Avere una grammatica rigorosa sulla carta non significa avere un interprete che sappia dialogare con un giocatore in carne e ossa.

Il primo scoglio era la severità ingiusta dei turni. Nelle prime versioni, se battevi un tasto sbagliato o cercavi di andare verso un’uscita inesistente («ovest» dove c’era solo una parete), il motore rispondeva «Non puoi andare in quella direzione» e intanto faceva scattare il turno. Nelle storie a tempo o con parametri di sopravvivenza — come in Il Viaggiatore, dove la sete cresce implacabile ogni tre passi — un semplice refuso di battitura ti costava una razione d’acqua o un pezzo di vita. Dalla 1.3.0 e con la rifinitura della 1.4.1 abbiamo stabilito un principio fondamentale: il tempo del mondo scorre solo se l’azione ha un senso nel mondo. Se il comando non viene capito o se sbatti contro un muro, l’orologio resta fermo, non si creano istantanee inutili per il comando ANNULLA e il giocatore non viene punito per una distrazione della tastiera.

Poi sono arrivati i verbi di libreria essenziali che prima costringevano gli autori a scrivere acrobazie: apri e chiudi, accendi e spegni, mangia e bevi, aspetta, le direzioni verticali (su, giù, entra, esci), la ricerca per parole piene (evitando che cercando «ave» venisse pescata la chiave) e la gestione delle anafore nei comandi a due oggetti: ora puoi scrivere prendi la chiave e la torcia in un colpo solo, oppure mettila nello zaino senza dover ripetere il nome per intero.

E infine c’è stato il collaudo umano, quello che nessun test automatico potrà mai rimpiazzare. Durante una partita a Il Faro Spento, Matthia si è trovato bloccato davanti a una botola chiusa con un lucchetto. Aveva la chiave giusta nell’inventario e ha provato, con logica impeccabile, formule come apri la botola con la chiave, usa la chiave per aprire la botola, usa la chiave ed apri la botola. Il motore rispondeva ostinatamente «Non si apre», perché l’autore aveva scritto la regola soltanto per usa la chiave sulla botola. È da quella frustrazione reale che è nata la versione 1.4.2: la lingua deve piegarsi a come la gente pensa e parla, non costringere chi gioca a indovinare la singola preposizione che l’autore aveva in testa.

I pulsanti-verbo: quando la parola incontra il tocco

Con la versione 1.4.0 è arrivata un’altra rivoluzione silenziosa nell’architettura del motore. Le avventure testuali sono nate sulla riga di comando, ma oggi chi gioca su un portatile seduto sul divano, o su uno schermo touch, non sempre desidera digitare ogni singola frase carattere per carattere.

Abbiamo smontato l’antico meccanismo basato sui semplici print() di Python e trasformato l’intera uscita del gioco in un flusso di eventi strutturato. Questo ha permesso di introdurre i pulsanti-verbo: l’interfaccia analizza in tempo reale lo stato della partita ed espone i verbi e gli oggetti accessibili. Puoi giocare scrivendo come sempre, oppure toccare «Dai» → «la mela» → «alla guardia», e il comando viene inviato al motore esattamente come se fosse stato digitato a mano. La cosa fondamentale è che i pulsanti non imbrogliano: mostrano solo ciò che il protagonista può legittimamente vedere e sapere, preservando intatti gli enigmi e i segreti della narrazione. E se un autore vuole un’esperienza puramente classica, basta una riga nel testo: I comandi si scrivono. per nascondere i pulsanti, o al contrario I comandi si scelgono con i pulsanti. per un’avventura guidata.

Il Viaggiatore: la cavia che ha fatto maturare la lingua

In tutto questo percorso, Il Viaggiatore ha smesso di essere una semplice demo dimostrativa ed è diventato il vero banco di prova sul campo. Portarlo a essere un videogioco desktop completo per Windows e Linux — con il suo trailer in codice sincronizzato alla musica e l’interprete Python che gira in WebAssembly senza toccare la rete — è stato il miglior banco di collaudo possibile.

È stato giocando e facendo giocare Il Viaggiatore che sono emerse le incongruenze più sottili. Per esempio la necessità di un’apparenza iniziale degli oggetti: se una mappa è appoggiata su un mobile, la descrizione della stanza deve menzionarla finché nessuno la tocca, ma una volta raccolta nella bisaccia quella frase deve sparire per sempre. Così è nato il costrutto Il posto della mappa è "Su un mobile, una MAPPA piegata."., che Inform chiama initial appearance. E ancora, il sistema dei salvataggi: non salviamo fotografie binarie della memoria, ma registriamo la sequenza esatta dei comandi impartiti validata da un’impronta SHA-256. Quando si ricarica la partita, il motore rigioca la storia in una frazione di secondo. Il risultato? Un salvataggio non si corrompe mai e sopravvive perfino agli aggiornamenti e ai bugfix del testo della storia.

Nasce Favella Studio: l’officina visiva

Tutti questi tasselli — il motore a eventi 1.4, i pulsanti-verbo, i dialoghi avanzati e le regole addolcite — avevano bisogno di un luogo dove convivere. L’antico prototipo che avevo mostrato nei video era grezzo e fragile. Abbiamo così ricostruito le fondamenta da cima a fondo: Electron, React, Vite e TypeScript, con il motore Python di FAVELLA che lavora dietro le quinte come processo supervisato via JSON-RPC.

La prima tentazione, come capita spesso a noi sviluppatori, era stata quella di fare il verso a VS Code: decine di finestrelle minuscole, barre laterali stipate di icone microscopiche e un’area di testo soffocata. Una pessima idea per chi deve concentrarsi sulle parole. Abbiamo cestinato quel disordine e riorganizzato l’intero studio in cinque grandi ambienti di lavoro, disposti esattamente lungo il percorso con cui una storia prende forma:

1. La Storia

È la scrivania dell’autore. Un editor basato su Monaco (il motore di VS Code) con la colorazione sintattica studiata appositamente per FAVELLA: le parole chiave del linguaggio risaltano in ciano, i testi narrativi in verde smeraldo, e i punti fermi — che nella nostra sintassi delimitano le istruzioni — si accendono in ambra. Chi lavora a opere lunghe può dividere la storia in più capitoli con la clausola Includi "capitolo.fav".: l’esploratore laterale mostra la gerarchia dei file, permette di crearne di nuovi al volo e garantisce che la compilazione e la ricerca degli errori lavorino sempre sull’opera nel suo insieme.

L’editor di testo di Favella Studio con evidenziazione del codice e navigazione dei file
L’editor principale: i colori della sintassi riprendono l’impostazione grafica del manuale cartaceo.

2. Il Mondo e la Mappa

Definire la geografia di un’avventura testuale a colpi di coordinate scritte a mano può diventare un incubo. Nella sezione Mondo, la scheda Mappa disegna in tempo reale la topologia delle stanze. Ogni stanza è un nodo sulla griglia: basta trascinare una connessione da una stanza all’altra per stabilire i passaggi, oppure fare clic su una freccia per modificare la direzione. E la magia è che si tratta di una sincronizzazione a due vie: modifichi la mappa e il testo sorgente si aggiorna all’istante; cambi una frase nel file e la mappa si ridisegna da sola.

La mappa interattiva delle stanze in Favella Studio con collegamenti bidirezionali
La mappa interattiva: le stanze e i collegamenti si modificano visivamente senza perdere la coerenza del testo.

3. Gli Oggetti e le Cose

Nel pannello Oggetti puoi inventare chiavi, lanterne, documenti o casseforti senza doverti ricordare se serva scrivere «nella stanza» o «sul tavolo». L’ispettore permette di impostare la posizione iniziale, il tipo di oggetto, le proprietà opposte (come aperto/chiuso o acceso/spento) e il contenuto dei contenitori, componendo automaticamente le preposizioni articolate corrette.

L’ispettore degli oggetti di Favella Studio con parametri di posizione e proprietà
L’ispettore degli oggetti: tipi, collocazioni e proprietà modificabili da maschere dedicate.

4. I Personaggi e il Copione dei Dialoghi

I dialoghi a scelta multipla sono sempre stati uno dei punti di forza di FAVELLA 1. In Favella Studio non si presentano come un groviglio incomprensibile di salti logici, ma come un vero copione teatrale. Ogni personaggio ha le sue schede: per ogni battuta puoi scrivere il testo pronunciato dall’interlocutore, aggiungere le risposte a disposizione del giocatore, e associare a ciascuna scelta le relative condizioni (per esempio, mostrare una domanda solo se possiedi una lettera) e le conseguenze sul mondo.

L’editor visivo dei dialoghi e dei personaggi strutturato come un copione teatrale
Il copione dei dialoghi: battute, risposte e bivi narrativi organizzati a schede ordinate.

5. Le Regole e gli Eventi

È la stanza dei bottoni logici. Invece di combattere con la grammatica dei blocchi condizionali, l’editor delle Regole ti guida nella costruzione di clausole Prima di, Invece di o Dopo di. Vuoi impedire al giocatore di aprire una cassa se non ha la chiave? Oppure vuoi che al quinto turno scoppi un temporale? Una maschera guidata raccoglie l’evento o l’azione, la condizione da verificare e le modifiche da applicare al mondo, traducendo il tutto in prosa italiana impeccabile.

L’editor visuale delle regole, eventi a tempo e condizioni logiche
La gestione delle regole: comporre condizioni ed eventi senza timore di sbagliare la formula.

6. La Prova immediata

Premi F5 e la storia prende vita all’istante, senza dover esportare nulla né aprire terminali esterni. Nella sezione Prova hai davanti la partita vera e propria, completa dei pulsanti-verbo, con accanto il pannello di stato che mostra la posizione, le variabili e l’inventario aggiornato a ogni mossa. Se preferisci isolare il gioco dalla scrittura, un clic apre la finestra dedicata a schermo intero in stile Godot, consentendoti di collaudare l’atmosfera dell’avventura proprio come la vivrà chi la giocherà.

La schermata di collaudo della partita integrata in Favella Studio con pulsanti-verbo e ispettore
La prova sul campo: partita interattiva con pulsanti-verbo e monitoraggio dello stato in tempo reale.

Quello che c’è e dove scaricarlo

Nel giro di pochi giorni, tra il primo rilascio della 1.0.0 e gli aggiornamenti 1.1.0 e 1.1.3, lo Studio ha guadagnato l’auto-updater integrato (che segnala e scarica le nuove versioni in background da GitHub), la possibilità di rinominare o eliminare elementi propagando le modifiche su tutti i file del progetto, e il pulsante Riordina (Ctrl+Alt+R) che rimette in ordine pulito l’intero listato sorgente.

Come dicevo in apertura, non è uno strumento privo di difetti: c’è ancora qualche dettaglio visivo da affinare e la compilazione su progetti mastodontici richiede il suo mezzo secondo di pazienza. Ma è un programma vero, concreto, distribuito sotto licenza libera MIT.

Gli installer per Windows (setup .exe) e i pacchetti per Linux (AppImage) sono disponibili gratuitamente nella pagina delle Releases del repository GitHub di FAVELLA 1. Per gli utenti macOS, data la complessità delle firme digitali di Apple, abbiamo predisposto una guida essenziale (BUILD-MACOS.md) che consente di compilarsi l’eseguibile sul proprio computer con un singolo comando da terminale.

Tutto l’ecosistema — il manuale di 59 pagine, la guida rapida, il motore e la galleria con Il Viaggiatore giocabile direttamente dal browser — continua a vivere sulla casa ufficiale favella.eu.

Per me si chiude un cerchio lungo mesi. Quel ragazzino che quarant’anni fa restava a bocca aperta davanti al cursore lampeggiante di un’avventura testuale, oggi ha uno studio completo in cui quel cursore parla la sua stessa lingua. Adesso tocca a voi scriverci dentro.

Ogni tanto scrivo una lettera

Nessuna cadenza fissa, nessun riassunto automatico: parte solo quando ho qualcosa da raccontare. In fondo a ognuna c'è il link per uscire.

↑ Su

Cerca nel sito

Condividi

L'indirizzo di questa pagina:

Scrivi a Simone

Segnalazioni, correzioni, o solo per dire che una cosa non funziona: quest'ultima è la più utile di tutte.