Inform Pack, come iniziare a programmare in Inform 6

Questa breve guida illustra come scaricare dalla rete tutto il necessario per iniziare a programmare in Inform 6 e come cominciare ad usarlo.

Ovviamente in queste poche righe non verrà spiegato nulla o quasi di come programmare in Inform 6. É un argomento estremamente vasto, e per questo rimandiamo ai vari manuali sull’argomento (alcuni dei quali descritti in seguito).

Similmente questa guida, e tutto il software qui illustrato, non riguarda assolutamente l’ultima versione di Inform 7. Riconosciamo che quest’ultimo sia un grande linguaggio e una grande innovazione, ma riteniamo che nel panorama della Narrativa Interattiva ci sia ancora posto per Inform 6. Questa guida (e lo stesso Inform Pack, di cui parleremo tra poche righe) è dedicata ai tradizionalisti che preferiscono una sintassi da linguaggio di programmazione ad una da linguaggio naturale.

Purtroppo questa guida è limitata ai soli untenti di sistemi operativi Windows, anche se tutto il software scaricato funziona egregiamente sotto Wine e sotto CrossOver.

Scaricare e installare l’Inform Pack

L’Inform Pack è una raccolta di software, librerie, estensioni e documentazione su Inform 6, e contiene tutto il necessario per iniziare a lavorare con Inform.
Infatti contiene il compilatore Inform, le librerie di base, l’editor WIDE, interpreti, manuali, una manciata di estensioni, programmi per gestire i file blorb e per rispettare il “Treaty of Babel”.
Contiene anche molto materiale in italiano: le librerie Infit, e estensioni e manuali tradotti.

Potete scaricarlo da IFItalia: (ZIP, 13 Mb) o dal sito di Alessandro Schillaci, qui.

Una volta che l’avete scaricato, estraete l’archivio in una cartella a vostra scelta (facendo attenzione a mantenere la struttura delle directory). La cartella può trovarsi anche su un disco removibile o su una key usb (anzi, spesso è la scelta migliore).

Cosa contiene l’Inform Pack

Tutto l’inform pack si trova in una cartella inform. Al suo interno ci sono varie sottocartelle:

  • bin contiene tutti i file eseguibili: il compilatore inform, l’editor WIDE, gli interpreti Windows Frotz, Windows Glulxe’ e il multiformato Gargoyle (limitato ai soli formati producibili con Inform), le utility IBlorb (per realizzare avventure multimediali) e Babel (per il trattato di Babele)
  • lib contiene le librerie e le estensioni, suddivise a loro volta nelle cartelle base (le librerie base di Inform e le librerie italiane Infit) e contrib (un buon set di estensioni)
  • doc contiene manuali e documentazione, e in particolare contiene: Inform Designers Manual (in inglese), Inform Beginners’ Guide/Guida a Inform per Principianti (in inglese e in italiano), Guida a Inform Glulx e Come scrivere (e giocare) delle avventure testuali in Inform e Glulx
  • games è una cartella vuota, che potrà ospitare i vostri giochi più semplici
  • esempio e example contengono un’avventura di esempio in inglese e in italiano

Comunque il file readme_ita.txt, che si trova nella cartella principale inform contiene un elenco completo di quanto potete trovare nell’Inform Pack.

Primi esperimenti

Lanciate il file wide.bat nella cartella principale (o spostatevi nella cartella bin e lanciate wide.exe, se preferite), lanciando così l’editor WIDE.

Dal menù Project scegliete la voce Open Project, navigate fino alla cartella esempio e aprite il file esempio.wpf. Vi si apriranno i tre file del progetto di esempio, un’avventura dimostrativa completa di capacità multimediali.

Come prima cosa dal menù Glulx scegliamo la voce Create Resources.

Proviamo a compilare e lanciare una versione solo testo: dal menù Z-Code scegliete la voce Create Z-Code Blorb (creando così lo story file esempio.zblorb), e poi scegliete, dallo stesso menù, la voce Run Z-Code Blorb, lanciando così il gioco appena compilato.

Proviamo quindi a compilare la versione multimediale: dal menù Glulx scegliete Build all blorb file (creando il file esempio.gblorb), poi scegliete Run Blorb e testate il gioco.

Tutto ciò che serve

Il sorgente di un gioco scritto in Inform può essere tenuto in un unico file .inf, ma se le dimensioni dell’avventura crescono, gestirlo in questo modo diventa particolarmente difficoltoso; per questo motivo conviene dividere il sorgente in più file. Inoltre se voglio aggiungere immagini e suoni, o informazioni bibliografiche, il numero dei file necessari cresce ulteriormente.
A questo punto conviene radunare in una cartella tutto il nostro progetto.

Un esempio di progetto è, appunto, la cartella esempio, che contiene un campionario completo di tutti i file necessari. Vediamoli in dettaglio:

  • multimedia è la cartella che contiene le immagini e i suoni che verranno inclusi nella versione glulx del gioco; anche l’immagine della copertina si trova qui
  • esempio.wps è il file di progetto usato da WIDE, e contenente le informazioni sui file sorgente che fanno parte del progetto, sulle classi e sulle keyword usate e altro ancora
  • esempio.inf è il principale file sorgente del gioco
  • esempio_game.inf e esempio_menu.inf sono altri due file sorgenti, e contengono rispettivamente le definizioni degli oggetti (compresi stanze e PNG) e il menù di aiuto
  • esempio.res contiene le informazioni per assemblare il file glulx, l’elenco di tutti i componenti che andranno a formarlo (il gioco stesso, la copertina, le informazioni bibliografiche, suoni e immagini)
  • esempio.zres contiene le informazioni per assemblare il file z-code (elenca solo il gioco, la copertina e le informazioni bibliografiche)
  • esempio.ifiction e esempio.zfiction contengono le informazioni bibliografiche, rispettivamente, per la versione glulx e per la versione z-code; tali file sono quindi in formato xml secondo le specifiche del trattato di Babele

Gli altri file che troverete nella cartella esempio (come esempio.ulx o esempio.blc) sono stati creati durante la compilazione. Di questi gli unici file a voi veramente utili sono esempio.zblorb e esempio.gblorb, gli story-file compilati e assemblati rispettivamente in z-code e in glulx.

(Nota: alcuni preferiscono rilasciare l’avventura in formato z-code senza assemblarla assieme alla copertina e alle informazioni bibliografiche; non raccomandiamo questa pratica, ma se volete, potete prendere il file con estensione .z5 o .z8)

Oltre al campionario dei file necessari, il progetto d’esempio contiene altri elementi utili all’interno dei sorgenti: c’è un menù d’aiuto (nel file esempio_menu.inf), uno scheletro di avventura già impostato, esempi dell’uso delle estensioni sgw.h e wtalk.h e la definizione delle classi Room (stanze), Prop (scenografie) e soprattutto MyDoor (porte intelligenti).

Il vostro primo progetto

Per realizzare il vostro primo progetto, fate una copia della cartella esempio, e da questa eliminate tutti i file tranne quelli descritti sopra; poi rinominate questa nuova cartella e i file in essa contenuti con un nome a vostra scelta (assumeremo che abbiate cambiato esempio in progetto).

A questo punto, e durante tutta la vostra opera di realizzazione dell’avventura, dovrete modificare, ovviamente, i sorgenti (con WIDE), ma anche gli altri file che formano il vostro progetto (con WIDE o con un editor di vostra scelta). Ovviamente non possiamo, in questa breve guida, spiegarvi per filo e per segno come effettuare queste modifiche; ci limiteremo a dare delle note per ogni file.

progetto.wpf

Questo è il file che descrive come WIDE deve gestire il progetto.

  • La riga ZCODEVERSION indica la versione dell’avventura in formato z-code, e può valere 5 o 8 (il formato 8 è usato per le avventure più grandi). Il nome dello story-file (non assemblato) ha di conseguenza estensione .z5 o .z8.
  • La sezione [FILES] contiene la lista dei file che WIDE deve aprire quando apre il progetto. Questi non devono essere necessariamente file sorgente inform (ma devono essere file di testo); se volete potete aggiungere alla lista il file .res o il file .ifiction o anche un file di testo contenente i vostri appunti.
  • La sezione [CLASSES] contiene la lista delle classi da voi definite nel sorgente, in modo che WIDE possa aggiungere gli oggetti di tali classi all’albero.
  • La sezione [KEYWORDS] contiene la lista delle parole chiave da voi definite nel sorgente (ad esempio nuove proprietà o attributi) che verranno evidenziate da WIDE al pari delle altre parole di sistema.
progetto.res

Questo file contiene l’elenco di tutte le risorse che andranno a formare il file progetto.gblorb, lo story-file finale in formato glulx (quindi possibilmente con elementi multimediali).

  • La riga CODE indica il file del gioco compilato in formato glulx (con estensione .ulx). Ovviamente nel nostro caso esempio.ulx diventerà progetto.ulx.
  • La riga METADATA indica il file che contiene le informazioni bibliografiche (ad esempio progetto.ifiction)
  • La riga FRONTISPIECE indica il file dell’immagine di copertina (in formato .jpg o .png), normalmente tenuta nella sottocartella Multimedia; tale immagine deve essere quadrata, con una dimensione consigliata (ma non obbligatoria) di 960×960.
  • Le righe PICTURE indicano le immagini contenute nel gioco; in ogni riga sono riportati il nome usato all’interno dei sorgenti e il file dell’immagine (in formato .jpg o .png)
  • Similmente le righe SOUND indicano i suoni e le musiche contenute nel gioco (i file devono essere in formato .aiff o in formato .ogg
  • Le righe che iniziano con ! sono dei commenti

Se questo file viene modificato, sarebbe opportuno ricreare i file delle risorse scegliendo Create Resources dal menù Glulx. In caso contrario il compilatore potrebbe non riconoscere - anche compilando la versione z-code - i riferimenti a elementi multimediali che abbiamo aggiunto o modificato.

progetto.zres

Questo file è simile al precedente, ma riferito al file in formato z-code progetto.zblorb. In questo caso non sono previsti elementi multimediali, e quindi il file comprende solo le righe CODE (che indicherà il gioco compilato, con estensione .z5 o .z8), METADATA (che fara riferimento, nel nostro caso, al file progetto.zfiction) e FRONTISPIECE (la copertina)

progetto.ifiction e progetto.zfiction

Questi due file contengono le informazioni bibliografiche per la versione glulx e per la versione z-code (differenti, seppur di poco). La maggior parte dei campi sono auto-esplicativi. Meritano qualche spiegazione:

  • <ifid> è l’identificativo della vostra avventura (e deve essere differente, se avete una versione glulx e una z-code), simile all’ISDN; potete generare il vostro nuovo ifid qui.
  • <genre> è il genere della vostra storia; deve essere una singola definizione, possibilmente scelta tra Children’s Fiction, Collegiate Fiction, Comedy, Erotica, Fairy Tale, Fantasy, Fiction, Historical, Horror, Mystery, Non-Fiction, Other, Religious Fiction, Romance, Science Fiction, Surreal e Western
  • <forgiveness> è il grado di crudeltà del gioco, scelto tra Merciful, Polite, Tough, Nasty e Cruel
  • <cover> indica il formato e le dimensioni della copertina

Infine è ovviamente importante mantenere la corretta struttura dell’xml; eventualmente potete fare riferimento al testo del trattato di babele nella cartella doc.

progetto.inf, progetto_menu.inf e progetto_game.inf

Questi tre file sono i sorgenti veri e propri, il corpo del vostro gioco. Non ci addentriamo nei meandri della sintassi di Inform, rimandandovi ai manuali (che trovate nella cartella doc e che potete richiamare dal menù Documents di WIDE) limitandoci a qualche annotazione sparsa:

  • All’inizio del file progetto.inf, prima di qualsiasi altra cosa (inclusi i commenti), è possibile mettere gli switch di compilazione del gioco in righe che iniziano con !% (ad esempio !% -D, per il debug); per realizzare avventure in Italiano è necessario che sia presente la riga !% +language_name=Italian
  • Come già detto, il file progetto.inf comprende diversi elementi utili ed è un ottimo punto di partenza: infatti, oltre alle classi, definisce anche un certo numero di Routine e Entry Point per, ad esempio, effettuare la disambiguazione o permettere di esaminare le stanze ottenendo la descrizione
  • Il file progetto_menu.inf contiene un menù interattivo, ad albero, basato sull’estensione dmenus.h (di Khelwood), e un sistema di hint, modificabili a piacere
  • Il file progetto_game.inf contiene gli oggetti che costituiscono l’avventura; probabilmente, se il vostro gioco aumenta di dimensione, avrete bisogno di avere più file di questo tipo, divisi ad esempio per capitoli, o per aree geografiche, o per tipologia di oggetti
  • L’utilizzo delle direttive #IfDef TARGET_GLULX; e #IfDef TARGET_ZCODE; (assieme a #IfNot e EndIf) permette di avere un unico sorgente per la versione glulx e la versione z-code

Abbiamo preso per completezza l’esempio di un gioco compilabile sia in formato Glulx che in formato Z-Code (visto che quest’ultimo formato è ancora molto usato su palmari e altri dispositivi portatili, e permette di giocare l’avventura online). Ovviamente se preferite realizzare un gioco in solo formato Glulx potete fare a meno di progetto.zres e progetto.zfiction, mentre se volete realizzare un gioco in solo formato Z-Code non avrete bisogno di progetto.res, progetto.ifiction e di buona parte della cartella multimedia (che dovrà contenere la sola copertina).

Buon lavoro.