GUIDA DI SOPRAVVIVENZA
A INFIT 2.5

 

Presentazione

A poco più di sei mesi dalla 2.2 eccomi qui a presentare la versione 2.5 di INFIT. Premetto subito che si tratta di una versione intermedia prima del rilascio di INFIT 3 che seguirà questa release di qualche settimana.
Versione intermedia significa essenzialmente che questo INFIT non è niente altro che la versione 2.2 con l'aggiunta del supporto Glulx e della compatibilità con le recenti librerie 6/11 (che aggiungono alle 6/10, tra le molte correzioni e alcune nuove funzionalità, anche nuovi messaggi).

La scelta di rilasciare una versione intermedia tra INFIT 2.2 e INFIT 3 è dipesa soprattutto dal fatto di avere al più presto una libreria compatibile con Glulx. Ringrazio naturalmente Alessandro Schillaci che per primo ha compreso questa necessità e ha messo una pezza al mio INFIT con le sue librerie 2.2 modificate. Queste però non utilizzavano il file Replace.h (che contiene varie personalizzazioni delle routine di libreria), non traducevano i nuovi messaggi introdotti nella libreria 6/11 e c'erano alcune parti non compatibili ancora con Glulx.

La libreria modificata di Alessandro è stata importante perché ha permesso a molti di cominciare a testare la piattaforma Glulx senza dover aspettare
quel pigrone del sottoscritto (pare che io sia intelligente ma non mi applico, secondo un simpatico sondaggio recentemente fatto su IF-Italia).

:-)

Altro motivo del rilascio di una versione intermedia dipende dalla riscrittura quasi totale del codice che sto portando avanti con INFIT 3: sicuramente la prima versione che rilascerò sarà piena di errori e necessiterà di un test approfondito. Insomma, avere una libreria stabile è una necessità per tutti gli autori di avventure che non possono pubblicare le loro opere con un parser pieno di bug.


Segnalazioni di bug, commenti e osservazioni vanno fatti come sempre all'indirizzo infit@inform-italia.org anteponendo all'oggetto del messaggio la stringa [INFIT 2.5]. Al più presto verrà preparata una pagina sul sito che si occuperà delle segnalazioni dei bug rendendo non più necessario l'invio delle segnalazioni via email.

HAPPY INFORMING!

Giovanni Riccardi
Terracina (LT), 14 Ottobre 2004

 

 

 

Vai alle note di utilizzo della libreria

 

Presentazione alla versione 2.2

Dopo poco più di un anno dalla 2.1 e 3 versioni beta, eccoci finalmente giunti a questa nuova versione di INFIT. Ho notato con piacere che sempre più persone si sono avvicinate al linguaggio inventanto da G. Nelson e questo mi dà ancora più stimoli per continuare il mio lavoro iniziato ormai 8 anni fa.

In questo anno sono cambiate molte cose. Innanzitutto il mio sito dedicato a questo sistema per la creazione di IF ha cambiato indirizzo ed ora lo trovate su www.inform-italia.org. Poi, da poco, è uscita la nuova versione di Inform. Finalmente dopo diversi anni abbiamo un nuovo compilatore e una nuova libreria. Ormai il supporto bipiattaforma zcode/glulx è ufficiale e non più relegato ad una libreria ed un compilatore secondari. Questo mi ha spinto a prendere una decisione drastica, ma credo utile. Ho deciso di riprogrammare da zero INFIT. Purtroppo la libreria che avete tra le mani soffre di molti errori di gioventù, errori dovuto principalmente alla mia inesperinza all'epoca in cui ho iniziato il lavoro. Con il passare degli anni pezze su pezze sono state aggiunte ai vari file, finché tutto è diventato poco gestibile e poco modificabile (ma soprattutto poco personalizzabile da parte di tutti voi).

Per tutti questi motivi (da ora in poi mi occuperò della nuova versione), alcuni dei bug noti non verranno corretti, perché riguardano routine come la PrintCommand o la PrintInfinitive che saranno completamente riscritte nella nuova versione. Solo se ci saranno dei bug veramente gravi metterò le mani di nuovo su questi file. Mandatemi comunque le segnalazioni e date pure un'occhiata al file INFIT.OSS per alcune osservazioni sui problemi che affligono la libreria e sulle questioni ancora aperte che vorrei risolvere con la nuova versione.

Segnalazioni di bug, commenti e osservazioni vanno fatti come sempre all'indirizzo infit@inform-italia.org anteponendo all'oggetto del messaggio la stringa [INFIT 2.2]. Non mandatemi più segnalazioni al mio indirizzo personale di posta elettronica. Mi riferisco soprattutto agli utenti di vecchia data con cui ho un rapporto più frequente via email. Naturalmente dovete usarlo per qualsiasi altro motivi e anche per questioni più generali riguardanti la mia libreria.

HAPPY INFORMING!

Giovanni Riccardi
Terracina (LT), 24 Marzo 2004

 

 

Presentazione alla versione 2.1

Come è strana a volte la vita. Ci sono voluti tre anni per pubblicare la prima versione di INFIT e altri due per passare alla seconda versione. Ora invece in poco più di due mesi sono riuscito a pubblicare una nuova release. Merito vostro, naturalmente, per l'interesse che avete mostrato nel mio lavoro e per i preziosi consigli che mi avete dato. Una ringraziamento speciale va ai miei beta-tester che mi hanno letteralmente tempestato di segnalazioni (INFIT 2.1 ha avuto ben 4 versioni beta nell'arco di due mesi): Francesco Cordella, Tommaso Caldarola, Paolo Lucchesi, Marco Vallarino, Daniele A. Gewurz, Vincenzo Scarpa, Marco Saccone e Giancarlo Niccolai.

HAPPY INFORMING!

Giovanni Riccardi
Terracina (LT), 6 gennaio 2003

 

 

Presentazione alla versione 2.0

Finalmente eccoci giunti alla tanto attesa versione 2 di INForm in ITaliano (INFIT). Ad ormai 2 anni e un mese dalla pubblicazione della prima versione, quasi non ci speravo più di riuscire nell'impresa. Sono abbastanza soddisfatto del lavoro. Moltissimi degli errori presenti nella versione precedente sono stati corretti e penso che di bug veramente gravi non ne sia rimasta veramente alcuna traccia.

La prima versione della libreria è stata più volte criticata, non tanto per la grande quantità di errori presenti (ed erano veramente tanti), ma piuttosto per l'assoluta mancanza di una guida che indicasse almeno le basi del linguaggio. Mi scuso vivamente di questo errore. Forse pensavo, erroneamente, che il target di INFIT fosse un appssionato (come me) soprattutto delle moltissime avventure (vecchie e nuove) presenti sulla scena internazionale dell'epoca (le avventure di Nelson, di Plotkin, tanto per fare due nomi), scritte quindi in Inglese. Pensavo quindi che questo target non avrebbe avuto alcuna difficoltà (linguistica) nel leggere il Designer's Manual di Graham Nelson.

D'altronde la mia esperienza con le avventure testuali è stata veramente atipica. Anche se "le conoscevo di vista", il primo contatto vero e proprio è stato con Inform. Solo successivamente ho cominciato a giocare le molte avventure scritte con questo linguaggio. Da lì in poi sono partito in quarta: le avventure scritte con altri sistemi ed infine quelle italiane. Ma non voglio annoiarvi ulteriormente con l'argomento "Giovanni Riccardi e le avventure testuali" e passo ringraziare le molte persone che hanno contribuito al realizzarsi di tutto questo.

Ringrazio vivamente Francesco Cordella e Tommaso Caldarola per aver creduto fin dall'inizio nelle potezianzialità di INFIT (d'altronde c'era anche la vecchia libreria di Nardinocchi a disposizione), segnalando i numerosi bug e dando preziosi consigli su come migliorare la libreria. Ringrazio tutto il gruppo di Roma presente alla famosa "Cena Avventurosa" dello scorso Febbraio che mi ha dato nuovo input per riprendere il lavoro interrrotto da diversi mesi. Tra questi un grazie speciale a Paolo Vece per le avventure "Infocom" e a Sauron e Glorfindel (e ancora Paolo) per un'interessante mattinata alla mostra dei videogiochi.

Tra le persone da ringraziare non posso assolutamente dimenticare il boss, il grande Bonaventura di Bello, con cui da qualche mese ho anche il piacere di lavorare e che ogni tanto cerco di convincere a imparare Inform e a scrivere una nuova avventura.

In queste ultime settimane c'è stato uno "strano", rinnovato interesse verso Inform, forse scatenato da un provocatorio post su icgat del grande Enrico Colombini (che ringrazio per questo oltre, naturalmente, che per le sue avventure). Non ho mai avuto così tante segnalazioni come in questi ultimi giorni di beta-testing. Per il prezioso lavoro devo ringraziare soprattutto Paolo Lucchesi, Daniele A. Gewurz e Marco Vallarino.

L'ultimo ringraziamento va, doverosamente, a Graham Nelson per aver creato Inform e senza il quale non starei neanche scrivendo queste note.

Penso di aver finito con i ringraziamenti. Mi scuso se ho dimenticato qualcuno, potete sempre scrivermi in e-mail lamentandovi per questa mia mancanza. Come direbbe qualcuno "finalmente dopo due anni INFIT 2 è qui!" e spero vivemente che il fantasma di Francesco Cordella la smetta di tormentarmi ogni volta che mi siedo davanti al PC.

HAPPY INFORMING A TUTTI!

Giovanni Riccardi
Terracina (LT), 9 Ottobre 2002

 

 

Introduzione

Quello che avete tra le mani non è un vero e proprio manuale di Inform/INFIT ma piuttosto un insieme di note per la scrittura di avventure testuali utilizzando la libreria italiana. Per un manuale introduttivo all'utilizzo di Inform vi consiglio la Inform Beginner's Guide di Roger Firth e Sonia Kesserich, di cui è disponibile una versione preliminare tradotta in Italiano (Guida a Inform per Principianti) sul sito di Inform in Italiano a cui vi rimando per altre informazioni sulla documentazione disponibile (ad esempio il manuale scritto da Vincenzo Scarpa).

Per imparare bene come si programma un'avventura non c'è niente di meglio che leggere il codice sorgente di di un classico dell'Interactive Fiction. E' finalmente disponibile il codice sorgente commentato di "Avventura" e "Negozio di Giocattoli" traduzioni di due dei giochi di esempio inclusi nella versione originale di Inform.
Per facilitare i neofiti ho pensato di includere in questa guida lo scheletro di un'avventura, dal quale si può partire per programmare il proprio gioco.

Se ve la cavate un po' con l'inglese la Bibbia di Inform rimane sempre L'Inform Designer's Manual 4th ed. di Graham Nelson al quale vi rimando per questioni più tecniche.

Se avete letto o state leggendo questo manuale, questa guida costituisce il suo complemento per le questioni riguardanti la libreria italiana.

 

 

Note per l'utilizzo di INFIT

Definizione del genere degli oggetti

Il parser di Inform è nato per riconoscere l'Inglese e la libreria Italiana ne è, per la maggior parte, una traduzione. Come molti sapranno in Inglese non c'è una distinzione di fatto tra nomi di genere maschile e femminile (per esempio nell'accordarsi con un aggettivo) e quindi non è necessario specificare il genere dell'oggetto in fase di programmazione. In Italiano questo è purtroppo necessario poichè il parser deve poter scegliere il giusto messaggio da inviare al giocatore. Per esempio, se il giocatore
scrive:

>PRENDI SCATOLA

il parser deve decidere se scrivere PRESA oppure PRESO. Tutto questo si risolve semplicemente aggiungendo un attributo "female" agli oggetti di genere femminile. Il maschile viene riconosciuto automaticamente (o per meglio dire il parser assume che gli oggetti siano maschili, salvo poi specificare i femminili).

 
Definizione del numero dell'oggetto

Come per l'Inglese si aggiunge un attributo "pluralname" alla definizione di un oggetto plurale.

 

Compilare un'avventura scritta con INFIT

La sintassi corretta per compilare una avventura utilizzando INFIT è la seguente:

inform +language_name=italian <nome_del_file.inf>

dove al posto di inform dovete inserire il nome del compilatore per il sistema operativo che state usando. Ad esempio sotto Windows il compilatore si chiama "infrmw32.exe". Date un'occhiata più avanti allo scheletro dell'avventura per sapere in che ordine vanno incluse le varie librerie di INFIT.

 

Compilare un'avventura per la piattaforma Glulx

Bisogna aggiungere il parametro -G alla chiamata del compilatore:

inform -G +language_name=italian <nome_del_file.inf>
  

 

Riconoscere genere e numero degli oggetti

Nel corso della programmazione di un'avventura vi capiterà certamente di dover fare riferimento ad un oggetto che non conoscete a priori, e nello stampare un messaggio, di dover conoscere il suo genere e il suo numero. La libreria italiana contiene la comoda funzione di stampa "GenderAndNumber" che fa proprio questo. Essendo una funzione di stampa va chiamata nel seguente modo all'interno del codice:

(genderandnumber) object

Per esempio "Avventura" contiene una classe Treasure che identifica i tesori che il giocatore deve trovare. Nella definizione del tesoro viene specificato il suo genere e il suo numero. La classe però deve gestire i messaggi in modo che vadano bene per qualsiasi oggetto che vi appartiene. Ecco la definizione della classe con la gestione dei verbi Take (prendi) e Drop (posa, lascia):

Class Treasure
	with depositpoints 10,
   	after [; 
		Take: if (location==Inside_Building)
   				score=score-self.depositpoints;
   			  score=score+5;
   			  if (noun hasnt treasure_found)
   			  { give noun treasure_found;
   				treasures_found++;
   				score=score+2;
   			  }
   			  print "Pres", (genderandnumber) noun, "!";rtrue;
   		Drop: score=score-5;
   			  if (location==Inside_Building)
   			  { score=score+self.depositpoints;
   				print "Depositat", (genderandnumber) noun,
   					  " al sicuro!";
   			  } rtrue; 
   ]; 

 

Alcune funzioni di stampa contenute nella libreria

La libreria italiana contiene, per uso interno, alcune comode funzioni di stampa che però possono essere tranquillamente
richiamate nella programmazione di un'avventura. Ecco l'elenco:

dove con obj intendo naturalmente l'oggetto al quale si riferisce la funzione di stampa.

NOTA: a partire dalla versione 2.1 le funzioni di stampa (isorare), (cisorare), (artda), (artsu), (artin), (arta) e (artdi) gestiscono anche la situazione in cui l'oggetto è il giocatore. Ad esempio in (isorare) viene stampato "sei".

 

Altre funzioni della libreria

Ecco un elenco delle altre funzioni contenute nella libreria:

Per maggiori informzioni sull'utilizzo di queste due funzioni, date un'occhiata ai messaggi di libreria Miscellany 48 e Miscellany 49 contenuti nel file Italian.h

NOTA: Ho intenzione di eliminare queste due funzioni con la versione 2.2. In origine le avevo inserite per gestire la stampa dei comandi al posto della funzione di libreria PrintCommand(), ma sto già riprogettando quest'ultima in modo da stampare anche verbi all'infinito e preposizioni e in modo che possiate aggiungere anche il supporto a verbi non inclusi nella grammatica standard.

Prompt alternativo

Se dichiarate un "Constant PROMPT" prima dell'inclusione dei file di libreria la vostra avventura userà un prompt alternativo al classico ">". Il parser porrà al giocatore domande del tipo "Cosa vuoi fare ora?", ecc. La procedura che gestisce questo tipo di prompt stampa in maniera (pseudo-)casuale un messaggio scelto tra quindici.

 

Sostituire i messaggi standard di libreria

Normalmente, programmando un'avventura testuale, si scrivono i messaggi solo per quelle azioni che si riferiscono agli oggetti importanti del gioco. Per tutto il resto ci pensa il parser con la sua ricca libreria di messaggi standard. Ma cosa si deve fare se, per qualche motivo, volete cambiare alcuni dei messaggi standard? Basta dichiarare un oggetto LibraryMessages come mostrato qui di seguito:

Object  LibraryMessages
  with  before [;
          Eat: "Il nuovo messaggio per il verbo mangiare...";
          Drink: "Il nuovo messaggio per il verbo bere...";
        ];


Quest'oggetto deve essere incluso tra "Include Parser" e "Include Verblib". Ricordatevi che se le procedure che stampano i messaggi dei verbi ritornano FALSE, verrà stampato anche il messaggio standard.

 

Il file Replace.h

Il file "replace.h" contiene delle funzioni che sostituiscono alcune routine presenti nella libreria che stampavano le informazioni sulla versione della libreria stessa. Mettendo un "Include "replace"" subito dopo "Include "Verblib"" (importante metterlo subito dopo!) queste informazioni verranno tradotte in Italiano. Vedi lo scheletro dell'avventura che segue.

NOTA: Già dalla versione 2.1 questo file contiene alcune altre funzioni che sostituiscono quella della libreria inglese.

 

CARATTERI ACCENTATI E COMPILATORE LINUX

Durante il beta testing della versione 2.1 è stato segnalato che il compilatore Linux non ne vuole sapere di compilare un gioco a causa delle istruzioni ZCharacter inserite all'inizio del file Italian.h. Se vi capita una cosa del genere inserite semplicemente un commento all'inizio della riga.

 

Scheletro dell'avventura

Ecco lo scheletro di un'avventura che utilizza INFIT. Penso sia già qualcosa prima della pubblicazione del manuale.

Constant Story "UNA BELLA AVVENTURA^";
Constant Headline "^La nuova avventura di Giovanni Riccardi";
Serial "021009";
Release 1;
Include "Parser";
Include "VerbLib";
Include "replace";
Object Prima_Stanza "La prima stanza"
  with name "stanza1" "prima" "stanza", 
       description "Ti trovi nella prima stanza di questa nuova avventura.",
       w_to Stanza2, 
       (ecc...),
   has light;
Object -> Oggetto1 "Primo oggetto"
  with name "primo" "oggetto" "oggetto1",
       description "Il primo oggetto",
       (altre proprietà dell'ogetto),
   has attributo1, attributo2, ecc.;

[ Initialise;
   location = Prima_Stanza;
   print "^^^^Benvenuti in questa nuova Avventura!^^";
];
Include "ItalianG";

(Altre definizioni dei verbi)

 

 

INFORMazioni utili

Informazioni: Il Sito Web Italiano di Inform:

http://www.inform-italia.org

Sito Web Ufficiale di Inform:

http://www.inform-fiction.org

E-mail di INFIT:

infit@inform-italia.org