# Inform e Glulx/Inform e ancora Inform/Le estensioni (o librerie aggiuntive)

Inform e Glulx
Copertina Tutti i moduli · Sviluppo
* IntroduzioneInform e Glulx/Introduzione
* Cosa occorre per iniziareInform e Glulx/Cosa occorre per iniziare
** Compilatore, interprete e altro ancora
** L'installazione
** Perché IF-IDE?
** Per chi non vuole (o non può) usare IF-IDE e Windows Frotz 2002
* Le basi di Inform
** A cosa serve questo capitolo?Inform e Glulx/Le basi di Inform/A cosa serve questo capitolo?
** Benvenuto in InformInform e Glulx/Le basi di Inform/Benvenuto in Inform
** Le funzioniInform e Glulx/Le basi di Inform/Le funzioni
** Variabili numeriche e caratteri specialiInform e Glulx/Le basi di Inform/Variabili numeriche e caratteri speciali
** Un po' di matematica non guasta maiInform e Glulx/Le basi di Inform/Un po' di matematica non guasta mai
** Passaggio dei parametri e ritorno dei valoriInform e Glulx/Le basi di Inform/Passaggio dei parametri e ritorno dei valori
** L'input dei dati numerici: l'istruzione GetnumberInform e Glulx/Le basi di Inform/L'input dei dati numerici: l'istruzione Getnumber
** If (condition) then... else...Inform e Glulx/Le basi di Inform/If (condition) then... else...
** While e do... untilInform e Glulx/Le basi di Inform/While e do... until
** For, break e continueInform e Glulx/Le basi di Inform/For, break e continue
** L'utilizzo delle costantiInform e Glulx/Le basi di Inform/L'utilizzo delle costanti
** Switch... caseInform e Glulx/Le basi di Inform/Switch... case
** Salti ed etichetteInform e Glulx/Le basi di Inform/Salti ed etichette
** Caratteri e stringheInform e Glulx/Le basi di Inform/Caratteri e stringhe
** I vettoriInform e Glulx/Le basi di Inform/I vettori
** Le stringhe numericheInform e Glulx/Le basi di Inform/Le stringhe numeriche
** Le direttiveInform e Glulx/Le basi di Inform/Le direttive
** Il debuggingInform e Glulx/Le basi di Inform/Il debugging
* RUINS, l'avventura comincia
** Il grande altopiano (dalla padella alla brace)Inform e Glulx/RUINS, l'avventura comincia/Il grande altopiano (dalla padella alla brace)
** La cassa d'imballaggio (riuscirete a riempirla tutta)?Inform e Glulx/RUINS, l'avventura comincia/La cassa d'imballaggio (riuscirete a riempirla tutta)?
** Il fungo (velenoso o non velenoso)?Inform e Glulx/RUINS, l'avventura comincia/Il fungo (velenoso o non velenoso)?
** Chi ha paura del buio (gli insetti no di certo)?Inform e Glulx/RUINS, l'avventura comincia/Chi ha paura del buio (gli insetti no di certo)?
** La porta di pietra (gialla è più carina)Inform e Glulx/RUINS, l'avventura comincia/La porta di pietra (gialla è più carina)
** La chiave di pietra (così non si arruginisce)Inform e Glulx/RUINS, l'avventura comincia/La chiave di pietra (così non si arruginisce)
** Il primo tesoro (speriamo che non sia un anello)Inform e Glulx/RUINS, l'avventura comincia/Il primo tesoro (speriamo che non sia un anello)
** La maschera facciale (non di carnevale)Inform e Glulx/RUINS, l'avventura comincia/La maschera facciale (non di carnevale)
** Il ritorno della mummia (non è un film, è tutto vero)Inform e Glulx/RUINS, l'avventura comincia/Il ritorno della mummia (non è un film, è tutto vero)
** L'incrocio di Xibalbá (ma è davvero così pauroso)?Inform e Glulx/RUINS, l'avventura comincia/L'incrocio di Xibalbá (ma è davvero così pauroso)?
** La sfera di pietra pomice (avete indossato il casco)?Inform e Glulx/RUINS, l'avventura comincia/La sfera di pietra pomice (avete indossato il casco)?
** Una gabbia per un facocero (e l'archeologo che fine ha fatto)?Inform e Glulx/RUINS, l'avventura comincia/Una gabbia per un facocero (e l'archeologo che fine ha fatto)?
** La cripta dei nove signori della notte (o sette come i nani)?Inform e Glulx/RUINS, l'avventura comincia/La cripta dei nove signori della notte (o sette come i nani)?
** Un archeologo per un facocero (basta solo che non grugnite)Inform e Glulx/RUINS, l'avventura comincia/Un archeologo per un facocero (basta solo che non grugnite)
** La fine di RUINS è giunta (ma con Inform siete solo all'inizio)Inform e Glulx/RUINS, l'avventura comincia/La fine di RUINS è giunta (ma con Inform siete solo all'inizio)
* Inform e ancora Inform
** La Status LineInform e Glulx/Inform e ancora Inform/La Status Line
** I menuInform e Glulx/Inform e ancora Inform/I menu
** I labirinti e i nomi pluraliInform e Glulx/Inform e ancora Inform/I labirinti e i nomi plurali
** Il tempoInform e Glulx/Inform e ancora Inform/Il tempo
** I coloriInform e Glulx/Inform e ancora Inform/I colori
** I mezzi di trasportoInform e Glulx/Inform e ancora Inform/I mezzi di trasporto
** Su e giù con l'ascensoreInform e Glulx/Inform e ancora Inform/Su e giù con l'ascensore
** Gli NPC (o PNG in italiano)Inform e Glulx/Inform e ancora Inform/Gli NPC (o PNG in italiano)
** Le estensioni (o librerie aggiuntive)Inform e Glulx/Inform e ancora Inform/Le estensioni (o librerie aggiuntive)
** Varie, listati e decompilatoreInform e Glulx/Inform e ancora Inform/Varie, listati e decompilatore
* Inform e Glulx
** Cos'è GlulxInform e Glulx/Inform e Glulx/Cos'è Glulx
** L'installazione di JifInform e Glulx/Inform e Glulx/L'installazione di Jif
** La compilazioneInform e Glulx/Inform e Glulx/La compilazione
** L'esecuzioneInform e Glulx/Inform e Glulx/L'esecuzione
** Da Inform a GlulxInform e Glulx/Inform e Glulx/Da Inform a Glulx
** La grafica e il sonoroInform e Glulx/Inform e Glulx/La grafica e il sonoro
** L'allineamento delle immaginiInform e Glulx/Inform e Glulx/L'allineamento delle immagini
** Avventure senza graficaInform e Glulx/Inform e Glulx/Avventure senza grafica
** I colori e gli stili del testoInform e Glulx/Inform e Glulx/I colori e gli stili del testo
** La personalizzazione della Status LineInform e Glulx/Inform e Glulx/La personalizzazione della Status Line
** output dei datiInform e Glulx/Inform e Glulx/L'input/output dei dati
** VarieInform e Glulx/Inform e Glulx/Varie
** GULL, il manuale ufficialeInform e Glulx/Inform e Glulx/GULL, il manuale ufficiale
* Appendici
** Appendice A - Le azioni principaliInform e Glulx/appendici/Appendice A - Le azioni principali
** Appendice B - I messaggi della libreriaInform e Glulx/appendici/Appendice B - I messaggi della libreria
** Appendice C - Gli errori della compilazioneInform e Glulx/appendici/Appendice C - Gli errori della compilazione
** Appendice D - La soluzione di RuinsInform e Glulx/appendici/Appendice D - La soluzione di Ruins
** Appendice E - Come usare Windows Frotz 2002Inform e Glulx/appendici/Appendice E - Come usare Windows Frotz 2002
** Appendice F - Le mappeInform e Glulx/appendici/Appendice F - Le mappe
** Appendice G - Scrivere, distribuire e reperire delle avventure testualiInform e Glulx/appendici/Appendice G - Scrivere, distribuire e reperire delle avventure testuali
Modifica il sommario

## Le estensioni (o librerie aggiuntive)

Nonostante Inform sia un linguaggio di programmazione orientato alle avventure testuali, a mano mano che si diventa più bravi nella programmazione (unita ovviamente alla stesura delle storie), si arriva a un certo punto che Inform, di default, non basta più. Si vuole ottenere sempre di più, arrivando a voler gestire eventi sempre più complessi e a questo punto si è obbligati a dover scegliere fra due strade diverse: la prima, quella forse più facile e intuitiva, è quella di scrivere del codice "ad hoc"; la seconda, invece, è quella di utilizzare le estensioni (chiamate anche librerie aggiuntive). Fra queste ultime, mi preme ricordare:
* la scenic.h (scritta da Richard Barnett, Joe Mason, Roger Firth e Stefano Gaburri), che dà la possibilità di attribuire a un oggetto dei nomi "scenici" che estendono la descrizione di default (evitando così di dover creare un nuovo oggetto per ogni nuova descrizione);
* la fnote.h (scritta da L. Ross Raszewski), che ci permette d'integrare delle note a pie' di pagina nel gioco;
* la dmenus.h (scritta da Dave Robinson), che ci viene incontro nella gestione semplificata dei menu;
* la command it.h, da me scritta, che è un menu (annidato) di aiuto per i comandi;
* la wtalk.h (scritta da Paolo Lucchesi), che ci viene in aiuto nei dialoghi con i PNG (i Personaggi Non Giocatori, ovvero tutti i personaggi che appaiono nel gioco all’infuori del giocatore stesso);
* la flags.h (scritta da Alessandro Schillaci), che ci dà la possibilità di stampare a video dei messaggi di aiuto sulla base del numero dei capitoli e delle mosse effettuate;
* la pname.h (scritta da Neil Cerutti), che ci permette di risolvere le ambiguità dell'input del giocatore quando la stessa parola di dizionario si riferisce a più di un oggetto;
* la smartcantgo.h (scritta da David Wagner e Roger Firth), che può essere usata per stampare a video le uscite possibili;
* la doors.h (scritta da L. Ross Raszewski), che ci permette di semplificare la gestione di una door;
* la easydoors.h (scritta da Andrew MacKinnon), ci permette anch’essa di semplificare la gestione di una door, ma con delle caratteristiche in più;
* la style.h (scritta da Chris Klimas), che ci aiuta nella gestione degli stili del testo;
* la boxclever.h (scritta da Roger Firth), che ci permette di creare dei riquadri in grado di contenere, oltre al testo normale, anche il grassetto e il corsivo.
Bene. Le estensioni appena viste possono essere considerate le "principali". Ne esistono naturalmente molte altre che, anche se non indispensabili, possono comunque essere molto utili. Fra queste, mi preme almeno ricordare:
* la betatest.h, scritta da Marnie Parker, che facilita il betatesting del gioco dando la possibilità di commentare l'avventura mentre la si gioca, registrando il tutto in un file di testo;
* la cyoa.h, scritta da Paolo Lucchesi, che permette di creare delle avventure testuali a scelte multiple (più conosciute da alcuni come libri-game);
* la daemons.h, scritta da Andrew Plotkin e Roger Firth, che permette di creare dei daemon da poter eseguire in ordine di priorità;
* l’easyout.h, scritta da Gabriele Brami, che verifica la presenza di proprietà direzionali in una stanza stampando poi la direzione e la destinazione;
* la Io.h, scritta dal sottoscritto che, come avete già avuto modo di vedere dal capitolo 3, ci viene incontro nella gestione dell’input-output dei dati;
* l’Italian3.h, una modifica (realizzata da Paolo Lucchesi) del file originale Italian.h contenuto in Infit che permette l'uso della narrativa in prima persona (oltre alla normale narrativa in seconda persona);
* la math.h, scritta da Matt Albrecht, che mette a disposizione una serie di utilissime funzioni matematiche;
* le mfs library, scritte da Giancarlo Niccolai per tutti coloro che sono interessati a creare dei giochi di ruolo in Inform;
* la mininf.h, scritta da Ignazio Di Napoli e Marco Falcinelli, appositamente studiata per creare avventure giocabili facilmente su palmari, cellulari e console;
* la moveclass.h, scritta da Neil James Brown e Alan Trewartha, che permette di spostare i Personaggi Non Giocatori lungo percorsi prestabiliti, calcolati oppure random;
* la printslow.h, scritta da David Cornelson, che ci permette di modificare la velocità di stampa del testo;
* la scanner.h, scritta da Alessandro Schillaci e Paolo Lucchesi, che elenca tutte le "istanze" di una classe presenti all'interno delle locazioni adiacenti alla locazione attuale senza spostarsi "fisicamente";
* la tutor.h, scritta da Paolo Lucchesi per gestire i suggerimenti nel corso di un’avventura (per capire come utilizzarla date un’occhiata al listato di Villa Morgana);
* l’untouchable.h, che permette di utilizzare un nuovo attributo denominato "untouchable" per caratterizzare quegli oggetti che pur essendo in vista non possono essere maneggiati dal giocatore perché irraggiungibili (ad esempio un uccello in cima un albero);
* l’utility.h, scritta da L. Ross Raszewski, che contiene delle funzioni molto utili;
* la wtellask.h, scritta da Paolo Lucchesi, utilissima per definire dei Personaggi Non Giocatori che possano rispondere in maniera più efficace e funzionale a dei comandi come "chiedi al personaggio del [argomento]" e "parla al personaggio del [argomento]".
Ricordatevi però che, anche se gratuite e libere di essere utilizzate da chiunque, queste estensioni sono state scritte da persone che hanno speso tempo e fatica; di conseguenza, tutti coloro che le usano hanno l’obbligo morale di ringraziare i rispettivi autori nei crediti dei loro giochi. Inoltre, se l’estensione utilizzata implica di per sé un modo d’utilizzo diverso da quello solito (come ad esempio la wtalk_it.h), occorre allora fornire negli aiuti del gioco la relativa documentazione.

## Note

* ↑ Per alcune di queste, il compilatore produce una serie di warning durante la fase di compilazione; non dovete tuttavia preoccuparvi perché l’eseguibile prodotto è comunque perfettamente funzionante.
* ↑ Quelle qui elencate sono tutte contenute all’interno del file estensioni_inform.zip. Le altre, invece, sono tutte scaricabili all’indirizzo http://www.inform-fiction.org/extensions/index.html; molte di queste però, prima di essere usate, devono essere necessariamente tradotte in italiano (su permesso, ovviamente, dei rispettivi autori).