Capitolo 2: I ferri del mestiere ================================ ****************************************************************** NOTA: Controllare tutti i comandi Windows indicati e cambiarli nei corrispondenti comandi Italiani. ****************************************************************** C was a captain, all covered with lace; D was a drunkard, and had a red face. [C era un capitano, tutto vestito di pizzo; D era un ubriacone, e aveva il viso rubizzo.] La narrativa convenzionale, statica, può essere scritta non usando altro che carta e penna,o una macchina per scrivere, o un elaboratore di testi; per produrre Narrativa Interattiva invece serve qualcosa di più, e il processo creativo è lievemente più complesso. * Nella narrativa statica, prima si scrive il testo, e poi lo si controlla leggendo ciò che si è scritto. * Nella IF, si deve comunque scrivere tutto il testo, ma bisogna anche stabilire quale testo viene mostrato e in quale momento. Una volta che si sono scritte le istruzioni necessarie in Inform, si usa un programma compilatore per convertirle in un formato giocabile. I dati risultanti vengono giocati mediante un programma interprete, che permette di interagire con il mondo che che è stato sviluppato. Nella narrativa classica Ciò Che Scrivi È Ciò Che Leggi (come nei programmi di tipo WYSIWYG, "What You See Is What You Get"), mentre nella IF il formato in cui si scrive inizialmente il gioco non somiglia molto al testo che l'interprete mostra alla fine. Per esempio, il gioco "Guglielmo Tell", nella forma in cui lo abbiamo scritto, comincia così: !============================================================================ Constant Story "Raccontami una Storia"; Constant Headline "^Semplice esempio in Inform ^di Roger Firth and Sonja Kesserich.^"; ! Traduzione di Paolo Lucchesi Release 1; Serial "020428"; ! per tener conto delle release pubbliche Constant MAX_SCORE = 4; Include "Parser"; Include "VerbLib"; Include "Replace"; !============================================================================ ! Classi Class Room has light; ... Non ci sarà mai bisogno di vederlo nella forma prodotta dal compilatore: 050000012C6C2C2D1EF6010A0C4416900010303230313031004253FEA90C0000 0000000000000000000000000000168F000000000000010200000000362E3231 ... Ma, come si vedrà dalla trascrizione integrale di ?Guglielmo Tell? a pag. [XXX], il giocatore vedrà quello che segue: Il luogo: Altdorf, nel cantone Svizzero di Uri. Siamo nell?anno 1307, e la Svizzera è sotto il governo dell?imperatore Alberto di Asburgo. Il governatore locale - il balivo - è il gradasso Hermann Gessler, che ha posto il suo cappello su di un palo di legno nel centro della piazza principale; chiuque passi attraverso la piazza deve inchinarsi a questo odioso simbolo del potere imperiale. ... Ovviamente, per scrivere IF bisogna fare molto più che scrivere le parole una dopo l'altra. Per fortuna, possiamo immediatamente semplificare le cose: è previsto che nella forma tradotta (quella prodotta dal compilatore Inform), i numeri e lettere criptiche memorizzate in quello che si chiama story file, siano letti solo dall'interprete. Lo story file è un esempio di file "binario", che contiene dati che verranno usati solo da un programma. Ci si può scordare di tutta quella roba illeggibile. Così rimane solo la prima forma, quella che inizia con "Constant Story", che rappresenta la storia scritta come testo di IF. Questo è il file sorgente (così detto perché contiene il gioco nella sua forma originale, vista alla sorgente) che creerete nel vostro computer. Il file sorgente è un file di testo (o "ASCII"), contenente parole e frasi che possono essere lette da esseri umani, anche se con un minimo di preparazione, che è esattamente ciò che vuol darvi questa guida. Come si crea questo file sorgente? Usando un terzo programma: un editor di testi. Però, a differenza del compilatore e dell'interprete, questo programma non è specifico per il sistema Inform, e neppure per la IF. Un editor è uno strumento completamente generale per creare e modificare file di testo; probabilmente ne avete già uno (seppur molto semplice) sul vostro computer (in un PC con Windows c'è Il Blocco Note, mentre un Macintosh ha SimpleText o TextEdit), e se ne può scaricare uno migliore da Internet. Un editor è come un elaboratore di testi (come MS Word), ma molto meno complesso; non ci sono elaborate funzioni di impaginazione, né controllo sul grassetto, il corsivo o i caratteri usati, né immagini da inserire; dà solo la possibilità di scrivere righe di testo, il che è esattamente ciò che serve per creare un gioco IF. Se si guarda il sorgente del gioco nella pagina precedente, o il listato di "Guglielmo Tell" a pagina [XXX], si noterà Include Parser; e Include VerbLib; poche righe dopo l'inizio del file. Queste sono le istruzioni per dire al compilatore Inform di ?includere?, cioè inserire il contenuto dei file chiamati Parser.h e VerbLib.h. Questi non sono file che dovete creare; sono file di libreria (o librerie) standard, parte del sistema Inform. Tutto quello che sideve fare è ricordarsi di Includerli in ogni avventura che si scrive. Finché non è abbastanza chiaro come funziona Inform, non c'è bisogno di preoccuparsi di che cosa contengono (ma è possibile guardarli se si vuole: sono file di testo leggibili, come quelli che questa guida vi insegnerà a scrivere). NOTA: Replace.h è un file specifico della libreria Italiana INFIT (che sta per INForm in ITaliano). Bisogna ricordarsi di includerlo sempre dopo Parser e Verblib perché contiene delle funzioni contenute in questi file, ma tradotte e adattate nella nostra lingua. Abbiamo quindi presentato tutti i pezzi di cui c?è bisogno per scrivere un'avventura in Inform: * un editor di testi che possa creare e modificare il file sorgente che contiene le descrizioni e le definizioni del vostro gioco. Anche se non è consigliabile, si potrebbe persino usare un elaboratore di testi per far ciò, ma bisogna ricordarsi di salvare il gioco in formato di "solo testo"; * alcuni file di libreria Inform che Includerete nel file sorgente del vostro gioco per definire il world model, un ambiente di gioco essenziale e molte utili definizioni standard. Questi file includono quelli della libreria standard e quelli di INFIT, necessari per scrivere le avventure in Italiano; * il compilatore Inform, che legge il vostro file sorgente (e i file di libreria) e traduce le vostre descrizioni e definizioni in un altro formato, lo story file, che sarà letto solo da... * un interprete Inform, che è ciò che useranno i giocatori della vostra avventura. Un giocatore non ha bisogno dei file sorgente, di libreria o del compilatore, ma solo dell?interprete e del gioco in formato compilato (che, essendo in un formato binario privo di senso per un essere umano, ha il pregio di impedire ai giocatori di barare). Tutte queste cose, tranne l'editor, possono essere scaricate gratuitamente dall'IF Archive. Una possibilità è scaricarle una per una, seguendo le indicazioni della pagina di Graham: visitate http://www.inform-fiction.org/ e cliccate su "Welcome" e poi "Software". Però, se usate un PC o un Mac, troverete più semplice scaricare un pacchetto completo che contiene tutto quello che vi serve per cominciare. 2.1 Inform su un PC IBM *********************** Seguite queste istruzioni: 1. Scaricate http://www.firthworks.com/roger/downloads/inform_pc_env.zip in una directory provvisoria del vostro PC. 2. Usate un programma come WinZip per scompattare il file scaricato, creando così una nuova cartella Inform. Spostate questa cartella (e il suo contenuto) in una directory appropriata: un buon posto potrebbe essere C:\ocumenti\Inform, ma potreste anche usare C:\Inform o C:\Programmi\Inform. Ora dovreste avere questo insieme di cartelle: ================= Qui va una figura ================= Per rendere lo scaricamento snello e veloce, queste cartelle comprendono lo stretto indispensabile per cominciare come autore in Inform: il compilatore e l'interprete, i file di libreria, il file di esempio Ruins.inf presentato nell'Inform Designer's Manual e un modello da seguire per il proprio primo gioco. Ci sono alcune altre cartelle messe come segnaposto in cui scaricare componenti addizionali, se li vorrete. Prima possibile dovreste scaricare l'Inform Designer's Manual nella cartella Inform\Doc: è un testo essenziale da avere, e non è stato incluso in questo pacchetto solo per le sue dimensioni (3,2MB). 3. Per verificare che i file scaricati funzionino correttamente, usate Windows Explorer per vedere il contenuto della cartella Inform\Games\MyGame1: vedrete i due file MyGame1.bat e MyGame1.inf: ================= Qui va una figura ================= MyGame1.inf è una minuscola avventura ridotta all'osso in formato di sorgente in Inform. Per convenzione, tutti i file sorgente in Inform hanno come estensione .inf; Windows ha una sua definizione per i file .inf, e perciò ne dà come Tipo "Setup Information", ma sembra che ciò non crei problemi. Se cliccate due volte sul file, dovrebbe aprirsi in nel Blocco Note e così potete vedere come è fatto, anche se probabilmente non vi dirà molto, per ora. 4. MyGame1.bat è un file di "batch" MS-DOS (un vecchio tipo di programma di solo testo, risalente ai giorni precedenti le interfacce grafiche) che fa partire il compilatore Inform. Cliccatelo due volte; si apre una finestra DOS mentre il gioco viene compilato e vedrete: C:\Documenti\Inform\Games\MyGame1>..\..\Lib\Zcode\Infrmw32 MyGame1 -S +include_path=.\,..\..\Lib\Zcode,..\..\Lib\Contrib | more PC/Win32 Inform 6.21 (30th April 1999) C:\Documenti\Inform\Games\MyGame1>pause "at end of compilation" Press any key to continue . . . Premete lo spazio e chiudete la finestra DOS. Nota: Sotto Windows NT, 2000 e XP, la finestra DOS si chiude automaticamente quando premete lo spazio. 5. È comparso nella cartella uno "story file": MyGame1.z5; si tratta del gioco compilato, che potrete giocare con un compilatore: ================= Qui va una figura ================= L'estensione .z5 significa che il file contiene un gioco per la Z-machine nel formato per la versione 5 (lo standard attuale). 6. Usate Windows Explorer per visualizzare il contenuto della cartella Inform\Bin\Frotz e cliccate due volte su WinFrotz.exe; l'interprete aprirà una finestra vuota. 7. Selezionate File > Open New Story..., sfogliate fino a mostrare la cartella Inform\Games\MyGame1 e selezionate il file MyGame1.z5. Cliccate Open. Il gioco parte nella finestra di WinFrotz. 8. Quando vi sarete stancati di "giocare" all'avventura, il che succederà presto, potete digitare il comando ESCI, selezionare File > Exit, o semplicemente chiudere la finestra di WinFrotz. 9. Usando le stesse tecniche potete compilare e giocare Ruins.inf, che si trova nella cartella Inform\Games\Download. RUINS è il gioco usato come esempio per tutto l'Inform Designer's Manual. 2.1.1 Definire a che programmi sono associati i file **************************************************** La procedura consistente prima nell'aprire l'interprete e poi nel trovare il file che si vuole giocare è inelegante e scomoda. Probabilmente troverete più semplice associare automaticamente i file la cui estensione è .z5 all'interprete WinFrotz. 1. Cliccate due volte su MyGame1.z5; Windows vi chiederà che programma lo dovrà aprire: * scrivete 'Gioco per la Z-machine' come "Descrizione..." * cliccate su "Usa sempre questo programma..." * cliccate "Altro..." 2. Sfogliate fino a trovare la cartella Inform\Bin\Frotz e selezionate WinFrotz.exe. Cliccate Apri. D'ora in poi potrete giocare un'avventura semplicemente cliccando due volte sul suo file .z5. 2.1.2 Cambiare l'icona ********************** Se l'icona che Windows mostra per MyGame1.z5 non sembra avere l'aspetto giusto, la potete cambiare. 1. In Windows Explorer, scegliete View > Options... e cliccate File Types: * scegliete il tipo di file relativo al gioco, nella lista che è in ordine o di applicazione (WINFROTZ Z-Machine interpreter) o di estensione (Z5) * cliccate Edit... 2. Nella finestra di dialogo Edit File Type cliccate Change Icon. 3. Nella finestra di dialogo Cambia Icona, assicuratevi che il nome del file sia Inform\Bin\Frotz\WinFrotz.exe, e selezionate una delle icone mostrate. Cliccate OK per chiudere le finestre di dialogo. I file nella cartella ora dovrebbero avere questo aspetto: ================= Qui va una figura ================= 2.1.3 Compilare usando un file di batch *************************************** Potete vedere, e naturalmente cambiare, il contenuto di MyGame1.bat, il file di batch che cliccate due volte per far partire il compilatore, usando qualunque editor di testi. Vedrete due righe, più o meno così (la prima parte è tutta su un'unica lunga riga, con uno spazio tra -S e +include_path): ..\..\Lib\Zcode\Infrmw32 MyGame1 -S +include_path=.\,..\..\Lib\Zcode,..\..\Lib\Contrib | more pause "at end of compilation" Queste lunghe stringhe di testo sono righe di comando, una potente interfaccia che risale a prima delle icone e dei menu noti alla maggior parte degli utilizzatori di computer. Non ci sarà bisogno di padroneggiare l'interfaccia a riga di comando per iniziare a usare Inform, ma questo paragrafo vi spiegherà che cosa fanno queste particolari righe di comando. La prima riga ha cinque parti: 1. Infrmw32 si riferisce al compilatore e ..\..\Lib\Zcode è il nome della directory che lo contiene (con l'indirizzo scritto relativamente a questa directory, quella che contiene il file sorgente). 2. MyGame1 è il nome del file sorgente in Inform; non è indispensabile specificarne l'estensione .inf. 3. -S è uno switch (interruttore) del compilatore, un modo per controllare aspetti dettagliati delle operazioni del compilatore. Questo particolare interruttore, uno fra i molti esistenti, sta attivando lo Strict Mode, che rende meno probabile che l'avventura abbia dei malfunzionamenti quando verrà giocata. Nota: in realtà, -S è ridondante, perché lo "Strict mode" è già attivo di default. Lo abbiamo incluso per ricordare che (a) per disattivare lo Strict mode, si mette invece -~S e (b) ha importanza la distinzione tra minuscole e maiuscole: -s fa mostrare vari dati statistici sulla compilazione (e -~s non fa nulla). 4. +include_path=.\,..\..\Lib\Zcode,..\..\Lib\Contrib dice al compilatore dove cercare file da includere come Parser e VerbLib. Vengono suggeriti tre posti: la directory attuale, che contiene il file sorgente (.\); la directory che contiene i file standard di libreria (..\..\Lib\Zcode); la directory che contiene pezzi e bocconi utili dovuti al contributo della comunità Inform. La ricerca avviene in queste tre directory in quest'ordine. 5. | more fa sì che il compilatore faccia una pausa se trova più errori di quelli che può riferire in una singola schermata, anziché farli scorrere via dalla finestra MS-DOS. Bisogna premere lo spazio per far proseguire la compilazione. La seconda riga, pause "at end of compilation", serve solo per impedire che la finestra si chiuda prima che se ne possa leggere il contenuto, come altrimenti farebbe in Windows NT, 2000 e XP. Dovrete avere un nuovo file di batch come questo per ogni nuovo file sorgente che creerete. L'unica parte che cambierà nel nuovo file è il nome del file sorgente Inform, MyGame1 in questo esempio. Esso va cambiato e deve corrispondere al nome del nuovo file sorgente; tutto il resto può rimanere uguale in ogni file .bat che create. 2.1.4 Procurarsi un editor migliore *********************************** Anche se NotePad va bene per cominciare, la vita sarà molto più semplice se vi procurerete un editor più potente. Raccomandiamo TextPad, disponibile come shareware da http://www.textpad.com/; in più, alla pagina http://www.onyxring.com/informguide.aspx?article=14 ci sono istruzioni dettagliate su come migliorare il modo in cui TextPad lavora con Inform. La maggior miglioria, quella che rende lo sviluppo di avventure enormemente più semplice, consiste nel poter compilare il file sorgente dall'interno dell'editor. Non c'è bisogno di salvare il file, passare ad un'altra finestra e cliccare due volte sul file batch (e anzi, non serve proprio più il file batch): basta premere un tasto mentre si lavora sul file, e viene compilato lì per lì. Si può anche far girare l'interprete con la stessa facilità. La comodità di far ciò controbilancia di gran lunga il breve tempo necessario per scaricare e configurare TextPad. 2.2 Inform su un Apple Macintosh ******************************** Seguite queste istruzioni: 1. Scaricate http://www.firthworks.com/roger/downloads/inform_mac_env.sit in una directory provvisoria del vostro Mac. 2. Usate un programma come StuffIt Expander per scompattare il file scaricato, creando così una nuova cartella Inform. Spostate questa cartella (e il suo contenuto) in una cartella appropriata del vostro Mac. Per rendere lo scaricamento snello e veloce, queste cartelle comprendono lo stretto indispensabile per cominciare come autore in Inform: il compilatore e l?interprete, i file di libreria, il file di esempio Ruins.inf presentato nell'Inform Designer's Manual e un modello da seguire per il proprio primo gioco. Ci sono alcune altre cartelle messe come segnaposto in cui scaricare componenti addizionali, se li vorrete. Prima possibile dovreste scaricare l'Inform Designer's Manual nella cartella Inform:Doc: è un testo essenziale da avere, e non è stato incluso in questo pacchetto solo per le sue dimensioni di 3,2MB. Nota degli autori: vorremmo ampliare questa sezione, se qualche esperto di Mac fosse disponibile a fornire ulteriore materiale sull'installazione. 2.2.1 Procurarsi un editor migliore *********************************** Anche se SimpleText (o il TextEdit dell'OS X) va bene per cominciare, la vita sarà molto più semplice se vi procurerete un editor più potente. Raccomandiamo BBEdit Lite, disponibile gratuitamente da http://www.barebones.com/products/bbedit_lite.html. 2.3 Altre cose da sapere sugli editor ************************************* Oltre a quelli che raccomandiamo, altri buoni editor vengono elencati nella pagina di FAQ a http://www.plover.net/~textfire/raiffaq/. Una funzione che è utile tenere d'occhio è il "syntax colouring", in cui l'editor capisce abbastanza delle regole sintattiche di Inform da contraddistinguere con colori alcuni elementi del vostro file sorgente; ad esempio: rosso per parentesi quadre, graffe e tonde [ ] { } e ( ), blu per parole riservate come Object e print, verde per parti tra virgolette come '...' e "..." e così via. La "colorazione sintattica" è di grande aiuto per scrivere un file sorgente corretto ed evitare stupidi errori di compilazione. 2.4 Altre cose da sapere sui compilatori **************************************** Il compilatore Inform è un programma potente ma non onnipotente; fa molto lavoro, ma lo fa tutto insieme, senza fermarsi a fare domande. Il suo input è un file sorgente in forma di testo leggibile; l'output è un file binario noto come file in Z-code (perché contiene il gioco tradotto in codice per la Z-machine, che descriviamo nella prossima sezione). Se si è fortunati, il compilatore tradurrà il vostro file sorgente in Z-code; ci si può forse meravigliare che non mostri alcun messaggio di successo quando ci riesce. D'altronde, spesso fallisce, a causa di errori fatti scrivendo l'avventura. Inform definisce un insieme di regole (una lettera maiuscola qui, una virgola lì, queste parole solo in un certo ordine, quelle parole scritte esattamente nel tal modo) sulle quali il compilatore è estremamente pignolo. Se si infrangono queste regole, il compilatore si lamenta: si rifiuta di scrivere un file in Z-code. Non vi preoccupate: è facile imparare le regole, ma è altrettanto facile violarle e tutti i programmatori in Inform senza volere lo fanno regolarmente. Ci sono ulteriori informazioni su come affrontare questi errori e come controllare il comportamento del compilatore nella sezione "Compilare l'avventura" a pag. [XXX]. 2.5 Altre cose da sapere sugli interpreti ***************************************** Uno dei grandi vantaggi del funzionamento di Inform è che un'avventura compilata, il file in Z-code, è "portabile" tra computer diversi. Non solo da un PC a un altro: esattamente lo stesso file girerà su un PC, un Mac, un Amiga, macchine UNIX, mainframe IBM, palmari con Palm OS e su dozzine di altri calcolatori passati, presenti e futuri. La magia che rende ciò possibile è nell'interprete, un programma che finge di essere un semplice computer chiamato Z-machine. La Z-machine è un calcolatore immaginario (o ?virtuale?), ma la sua struttura è stata specificata con grande cura cosicché un programmatore esperto ne può costruire uno con relativa semplicità. Ed è esattamente ciò che è accaduto: un guru del Macintosh ha creato un interprete Inform che gira sui Mac, un mago dello UNIX ne ha creato uno per le workstation UNIX e così via. Qualche volta si ha addirittura la scelta; per macchine diffuse come i PC e i Mac sono disponibili vari interpreti. E la cosa meravigliosa è che ognuno di questi interpreti, su ognuno di questi calcolatori, è in grado di giocare ogni gioco che è mai stato scritto in Inform e anche, come sorpresa aggiuntiva, anche tutti i classici giochi Infocom degli anni '80 come "Zork" e "The Hitchhiker's Guide to the Galaxy". (In realtà, l'ultima frase è una lieve esagerazione; alcuni giochi sono molto lunghi, o contengono delle immagini, e non tutti gli interpreti sono in grado di gestire ciò. Comunque, con questa piccola riserva, la cosa è vera.) Basta chiacchiere: cominciamo! È ora di iniziare a scrivere la nostra prima avventura.