Home
Anatomia della Locusta di Enrico Colombini

18 Maggio 2012

Anatomia della Locusta di Enrico Colombini

di

Viaggio nella complessità necessaria per coniugare la narrazione tradizionale con elementi provenienti dai giochi di avventura, il tutto multipiattaforma.

Altra sezione dell’intervista di Ivan Rachieli a Enrico Colombini, autore di Locusta Temporis, a partire dall’ultimo botta-e-risposta sulla differenza tra giochi interattivi e romanzi interattivi. Prima si è parlato di confine tra intrattenimento letterario e ludico, identità tra ebook e videogame e interazione negli ebook.

Ivan Rachieli: Veniamo a Locusta Temporis. La prima cosa che mi piacerebbe spiegassi ai nostri lettori è come hai progettato e costruito l’architettura della narrazione, delle interazioni e degli enigmi.

Enrico Colombini: Durante la progettazione di Locusta Temporis ho deciso di pensare al racconto interattivo come a una macchina a stati. Supponiamo che il lettore abbia la scelta se lasciare aperta o meno una finestra dalla quale, più avanti nella storia, potrà entrare un’allodola. L’unica cosa che il lettore può fare è scegliere tra due link: un link porterà alla pagina in cui la finestra rimarrà chiusa, l’altro alla pagina in cui la stessa finestra starà aperta.

Il problema è come memorizzare questa scelta, in modo da poterne tenere conto dopo qualche pagina, quando l’allodola potrà entrare e svegliare il protagonista solo se la finestra era stata precedentemente lasciata aperta. In un programma per computer mi basterebbe tenere lo stato della finestra in una variabile (scriverlo in una casella di memoria) per rileggermelo più tardi; in alcuni formati e lettori di ebook ciò potrebbe essere possibile, ma in altri no e non ci posso quindi far conto: devo comportarmi come se stessi scrivendo un libro stampato, che non possiede memoria. E nemmeno voglio obbligare il lettore a tenere nota dello stato della finestra segnando una crocetta su un’apposita casellina, come si usava negli antichi libri-gioco.

Non ho che una soluzione: far proseguire il lettore lungo due serie di pagine parallele, magari contenenti identico testo ma comunque separate tra loro; è come passare uno scambio ferroviario scegliendo tra due binari, che però rimangono paralleli. Solo più avanti nella vicenda le due serie di pagine divergeranno descrivendo eventi diversi, a seconda di quale binario sia stato imboccato all’inizio; ciascuna delle due serie di pagine rappresenta un diverso stato (finestra aperta o finestra chiusa).

Storie multiple

La scelta del lettore sposta la narrazione su un binario possibile, corrispondente a una serie di pagine almeno inizialmente parallela alle altre.

Parrebbe che con un simile meccanismo di base non si possano realizzare costruzioni troppo complesse né tantomeno enigmi interessanti, dato che ad ogni scelta aggiuntiva la complessità si moltiplica; ad esempio per memorizzare cinque scelte indipendenti servono ben trentadue serie di pagine separate. Invece è perfettamente possibile se si riesce a tenerne sotto controllo la complessità: per chi fosse interessato, ho pubblicato un articolo che esplora alcune costruzioni realizzabili con questo sistema, molte delle quali sono usate in Locusta Temporis.

Pensavo anche che fosse difficile realizzare enigmi non banali, tanto che nei primi capitoli mi sono forse concentrato un po’ troppo sui puzzle rispetto alla narrazione, ma i risultati sono stati comunque interessanti, forse anche troppo, dato che diversi lettori hanno trovato alcuni enigmi più impegnativi di quanto mi aspettassi, benché avessi fatto leggere/giocare il libro a diversi collaudatori e in vari casi avessi ridotto la difficoltà dei puzzle. Probabilmente la forma libro fa sembrare le stesse situazioni più complesse di quanto apparirebbero se incontrate in un gioco.

Qui ci starebbe anche una questione di progetto dei racconti interattivi: puntare molto sugli enigmi (gioco puro) oppure renderli semplicissimi, quasi automatici o addirittura assenti, per non disturbare la narrazione (lettura pura)? Ho cercato di tracciare una delle possibili infinite vie di mezzo, ma saranno i lettori a dire se ci sia riuscito o meno.

Ivan Rachieli: Locusta Temporis è sia un ebook (in ePub, mobi e PDF) sia un’applicazione per iOS. Ci spieghi come hai organizzato il flusso di lavoro in modo da poter partire da una base comune di contenuti?

Enrico Colombini: Il sorgente comune del libro è un ibrido tra un testo e un programma: ciascuna pagina è in realtà una funzione in linguaggio Lua che, per così dire, stampa il testo corrispondente allo stato corrente della pagina stessa. Si tratta di un’impostazione per vari aspetti simile a quella del mio vecchio Idra, uno strumento per la costruzione di racconti interattivi Web, ovvero un normale programma che usa variabili per memorizzare tutte le informazioni necessarie.

La conversione di questo sorgente in un insieme di pagine immutabili collegate da link, ciascuna delle quali è una diversa istanza di una delle mie pagine originali e ne rappresenta un diverso stato, è opera di Medusa (Macchinario Esente Da Un Significativo Acronimo). Si tratta di un compilatore che non saprei se definire di Intelligenza Artificiale o di Pigrizia Naturale, dato che lo scrissi per evitare il lavoraccio di tener traccia a mano di tutte le necessarie varianti delle pagine e soprattutto dei numerosi link incrociati.

Medusa Toolchain, un frammento

Questo è solo l'inizio dello schema della toolchain Medusa, che invitiamo a consultare per intero seguendo il link proposto nell'articolo.

I frammenti di codice del ‘libro sorgente’ vengono eseguiti non durante la lettura, dato che ciò non sarebbe possibile, ma durante la fase stessa di compilazione (tecnicamente si tratta di un metaprogramming compiler), producendo tutte le pagine necessarie per rappresentare ogni possibile stato raggiungibile durante la lettura.

Medusa produce un singolo file HTML contenente tutte le pagine del libro, o più comunemente quelle della parte di libro che scelgo di compilare per risparmiare tempo di caricamento nel browser durante le prove: se mi limito a un capitolo, in un paio di secondi dalla modifica del ‘sorgente’ posso leggere le pagine prodotte e verificarne il corretto funzionamento (durante la lavorazione produco una singola pagina HTML con link interni, invece che tanti file quante sono le pagine finali, perché il sistema operativo è relativamente lento nella creazione di molti file).

Una volta verificato che tutto sia a posto, a partire dal singolo file HTML produco le differenti versioni: ePub, Kindle/Mobipocket, PDF, pagine Web separate (per il demo) e infine l’applicazione iOS. Il lavoro dal lato PC è svolto da una serie di programmi che formano una toolchain – ma penso che il termine tecnico sia accrocchio – composta da convertitori scritti per la maggior parte in linguaggio Lua, ma comprendente anche tool esterni come kindlegen di Amazon e html2ps (un convertitore da HTML a PostScript scritto in Perl da Jan Kärrman).

La messa a punto di questa toolchain è costata molto più lavoro del previsto. In particolare la produzione della versione PDF necessita del citato html2ps, l’unico convertitore open source che si sia dimostrato capace di trattare correttamente le 5.800 pagine e gli 11 mila link di Locusta Temporis, sia pure in tempi molto lunghi (45 minuti sul mio PC).

Purtroppo il programma non è recente e accetta solo HTML (in pratica il 3.2), quindi niente CSS veri e propri; ciò ha condizionato l’intero meccanismo costringendomi a partire dall’HTML puro (con tutti i suoi limiti) e a convertirlo poi in XHTML per convenienza del resto della toolchain e dei reader, con annessa conversione da ISO-8859-1 a UTF-8… e sorvolo su altri problemi.

Ulteriori complicazioni sono venute dai cosiddetti ‘standard’ come ePub, che in pratica ciascun produttore di reader (hardware o software) interpretava e forse ancora interpreta a modo suo, spesso introducendo limitazioni arbitrarie (è inevitabile l’analogia con i browser Web, specie quelli dei primi tempi).

Locusta Temporis, copertina e una pagina

Arrivare a fare funzionare Locusta Temporis su tutte le piattaforme di ebook più diffuse più una app iOS ha richiesto un lungo lavoro di affinamento.

Ad esempio, alcuni reader non riuscivano nemmeno a caricare l’obbligatorio (quanto inutile, nel mio caso) elenco XML delle pagine del libro, costringendomi a comprimerne i numeri con un codice in base 26 per occupare meno spazio nel file stesso. Naturalmente ciascuna versione finale richiede modifiche particolari (formato, stili, pagine di testa e di coda, indici, qualche pagina da sostituire eccetera) per cui c’è voluto un po’ di lavoro. Ho anche preferito scrivere il programma che produce la versione ePub invece che usare uno dei vari tool liberamente disponibili, perché non ne ho trovati che rispettassero interamente lo standard e fossero capaci di trattare correttamente un libro complesso come questo.

Per la versione iOS le pagine sono compattate in un unico file indicizzato, con l’aggiunta di un paio di file ausiliari per trasferire le necessarie informazioni (ad esempio per l’indice, in cui appaiono automaticamente certe pagine chiave man mano le si visita) e il tutto è accessibile al Mac via rete locale. Il resto, dal lato iOS, è un normale programma Objective-C con una parte in JavaScript per la visualizzazione; per la verità all’inizio c’era molto più JavaScript, ma alcuni problemi delle librerie mi hanno costretto a cambiare strada. Inoltre i primi tester hanno (giustamente) stroncato la mia prima versione di interfaccia, per cui anche quella è stata progettata e programmata due volte. Per semplificare il lavoro ho scritto poi vari programmini ausiliari… insomma, ho avuto di che passare il tempo. 🙂

(5-continua. Ivan Rachieli e Enrico Colombini raccontano di paralleli tra ebook e videogiochi, tendenze verso la personalizzazione dei libri), differenze tra intrattenimento letterario e ludico e differenze di interattività tra gioco e libro).

L'autore

  • Ivan Rachieli
    Ivan Rachieli, 30 anni, laurea in letteratura russa, master in editoria. Ha lavorato in GeMS con gli ebook, e in ZephirWorks con le applicazioni web. Un giorno mollerà tutto e se ne andrà sul lago Bajkal, per dedicarsi finalmente alle cose serie, come ad esempio la caccia col falcone. Se avete voglia di conoscerlo meglio, potete fare due chiacchiere con lui su Twitter @iscarlets o leggere il suo blog.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.