Far sapere - Inform

Far sapere
Informare 7 IDE Icon.png
Autori originali Graham Nelson
Sviluppatore / i Graham Nelson
Rilascio stabile
7 6M62 / 24 dicembre 2015  ( 2015/12/24 )
Sistema operativo Microsoft Windows , Mac OS X , Linux , altri
genere Sviluppo e gioco di fiction interattivi
Sito web http://inform7.com/

Inform è un linguaggio di programmazione e un sistema di progettazione per la narrativa interattiva originariamente creato nel 1993 da Graham Nelson . Inform può generare programmi progettati per le macchine virtuali Z-code o Glulx . Le versioni da 1 a 5 sono state rilasciate tra il 1993 e il 1996. Intorno al 1996, Nelson ha riscritto Inform dai primi principi per creare la versione 6 (o Inform 6 ). Nel decennio successivo, la versione 6 divenne ragionevolmente stabile e un linguaggio popolare per la scrittura di narrativa interattiva. Nel 2006, Nelson ha rilasciato Inform 7 (brevemente noto come Natural Inform ), un linguaggio completamente nuovo basato sui principi del linguaggio naturale e una nuova serie di strumenti basati su una metafora dell'editoria di libri.

Z-Machine e Glulx

I compilatori Inform traducono il codice Inform in file di storie per Glulx o Z-code , due macchine virtuali progettate specificamente per la narrativa interattiva. Glulx, che può supportare giochi più grandi, è l'impostazione predefinita.

La Z-machine è stata originariamente sviluppata da Infocom nel 1979 per i loro titoli di finzione interattiva. Poiché esiste almeno un interprete di questo tipo per quasi tutte le piattaforme principali e secondarie, ciò significa che lo stesso file Z-code può essere eseguito su una moltitudine di piattaforme senza alterazioni. Originariamente Inform aveva come obiettivo solo la macchina Z.

Andrew Plotkin ha creato una versione non ufficiale di Inform 6 che era anche in grado di generare file per Glulx , una macchina virtuale che aveva progettato per superare molti dei limiti della Z-machine vecchia di diversi decenni. A partire da Inform 6.3, rilasciato il 29 febbraio 2004, Inform 6 ha incluso il supporto ufficiale per entrambe le macchine virtuali, basato sul lavoro di Andrew Plotkin. Il rilascio anticipato di Inform 7 non supportava Glulx, ma nell'agosto 2006 è stato rilasciato il supporto per Glulx.

Informare 6

Informa 1–6
Paradigma orientato agli oggetti , procedurale
Progettato da Graham Nelson
Sviluppatore Graham Nelson
Apparso per la prima volta 1993
Rilascio stabile
6.32 / 2010
Anteprima del rilascio
6.33 / 10 maggio 2014  ( 2014/05/10 )
OS Microsoft Windows , Mac OS X , Linux , altri
Licenza Gratuito e artistico licenza 2.0
Sito web inform-fiction .org
Influenzato da
linguaggio naturale
Influenzato
Informare 7

Inform è stato originariamente creato da Graham Nelson nel 1993. Nel 1996 Nelson ha riscritto Inform dai primi principi per creare la versione 6 (o Inform 6). Nel decennio successivo, la versione 6 divenne ragionevolmente stabile e un linguaggio popolare per la scrittura di narrativa interattiva.

Il sistema Inform 6 è costituito da due componenti principali: il compilatore Inform , che genera file di storia dal codice sorgente Inform, e la libreria Inform , una suite di software che gestisce la maggior parte del difficile lavoro di analisi dell'input di testo del giocatore e di tenere traccia del modello mondiale. Il nome Inform si riferisce anche al linguaggio di programmazione Inform che il compilatore comprende.

Sebbene Inform 6 e Z-Machine siano stati originariamente progettati pensando alla narrativa interattiva, sono stati sviluppati molti altri programmi, tra cui un interprete BASIC , un tutorial LISP (completo di interprete), un gioco Tetris e una versione del gioco Snake .

Il compilatore Inform 6

Il compilatore Inform genera file per la macchina Z o Glulx (chiamati anche file di storia) dal codice sorgente di Inform 6 .

Il linguaggio di programmazione Inform 6

Il linguaggio di programmazione Inform è orientato agli oggetti e procedurale . Un elemento chiave del linguaggio sono gli oggetti. Gli oggetti vengono mantenuti in una struttura ad albero che elenca le relazioni padre-figlio tra gli oggetti. Poiché la relazione genitore-figlio è spesso usata per rappresentare la posizione, si dice spesso che un oggetto che è il genitore di un altro oggetto lo "tiene". Gli oggetti possono essere spostati in tutto l'albero. In genere, gli oggetti di livello superiore rappresentano stanze e altri luoghi all'interno del gioco, che possono contenere oggetti che rappresentano il contenuto della stanza, siano essi oggetti fisici, personaggi non giocanti, il personaggio del giocatore o effetti di sfondo. Tutti gli oggetti possono contenere altri oggetti, quindi un livingroom oggetto potrebbe contenere un insurancesaleman oggetto che contiene un briefcase oggetto che contiene l' insurancepaperwork oggetto.

Nelle prime versioni di Inform, gli oggetti erano diversi dalla nozione di oggetti della programmazione orientata agli oggetti, in quanto non esisteva una classe. Le versioni successive hanno aggiunto il supporto per le definizioni di classe e hanno consentito agli oggetti di essere membri delle classi. Oggetti e classi possono ereditare da più classi. I giochi di finzione interattiva contengono in genere molti oggetti unici. Per questo motivo, molti oggetti in Inform non ereditano da alcuna classe diversa dall'oggetto "metaclasse". Tuttavia, molto spesso gli oggetti hanno attributi (proprietà booleane, come scenery o edible ) riconosciuti dalla libreria Inform. In altre lingue questo sarebbe normalmente implementato tramite ereditarietà.

Ecco un semplice esempio del codice sorgente di Inform 6.

[ Main;
    print "Hello, World!^";
];

Informa 6 libreria

Il sistema Inform contiene anche la libreria Inform, che automatizza quasi tutto il lavoro più difficile coinvolto nella programmazione della narrativa interattiva ; in particolare, include un parser di testo che dà un senso all'input del giocatore e un modello del mondo che tiene traccia di cose come oggetti (e le loro proprietà), stanze, porte, inventario del giocatore, ecc.

Il compilatore Inform non richiede l'utilizzo della libreria Inform. Sono disponibili diverse librerie sostitutive, come Platypus e InformATE , una libreria che codifica Inform in spagnolo.

Gioco di esempio

Di seguito è riportato un esempio di codice sorgente di Inform 6 che utilizza la libreria Inform. L'esempio di codice Inform 6 riportato di seguito è utilizzabile in Inform 7, ma non senza una demarcazione speciale che indica che si tratta di codice legacy incorporato.

 Constant Story "Hello Deductible";
 Constant Headline "^An Interactive Example^";

 Include "Parser";
 Include "VerbLib";

 [ Initialise;
     location = Living_Room;
     "Hello World";
 ];

 Object Kitchen "Kitchen";
 Object Front_Door "Front Door";

 Object Living_Room "Living Room"
     with
         description "A comfortably furnished living room.",
         n_to Kitchen,
         s_to Front_Door,
     has light;

 Object -> Salesman "insurance salesman"
     with
         name 'insurance' 'salesman' 'man',
         description "An insurance salesman in a tacky polyester
               suit.  He seems eager to speak to you.",
         before [;
             Listen:
                 move Insurance_Paperwork to player;
                 "The salesman bores you with a discussion
                  of life insurance policies.  From his
                  briefcase he pulls some paperwork which he
                  hands to you.";
         ],
     has animate;

 Object -> -> Briefcase "briefcase"
     with
         name 'briefcase' 'case',
         description "A slightly worn, black briefcase.",
     has container;

 Object -> -> -> Insurance_Paperwork "insurance paperwork"
     with
         name 'paperwork' 'papers' 'insurance' 'documents' 'forms',
         description "Page after page of small legalese.";

 Include "Grammar";

Giochi notevoli sviluppati in Inform 6 o versioni precedenti

Informare 7

Informare 7
Informare 7 IDE Icon.png
Paradigma dichiarativo , procedurale
Progettato da Graham Nelson
Sviluppatore Graham Nelson
Apparso per la prima volta 2006
Rilascio stabile
6M62 / 24 dicembre 2015 ; 5 anni fa  ( 2015/12/24 )
OS Microsoft Windows , Mac OS X , Linux , altri
Licenza Licenza proprietaria ma liberamente ridistribuibile o artistica 2.0
Sito web http://inform7.com/
Influenzato da
Informare 6

Il 30 aprile 2006, Graham Nelson ha annunciato il rilascio beta di Inform 7 al newsgroup rec.arts.int-fiction. Inform 7 consiste di tre parti principali: L' IDE Inform 7 con strumenti di sviluppo specializzati per testare la narrativa interattiva, il compilatore Inform 7 per il nuovo linguaggio e " The Standard Rules " che formano la libreria principale di Inform 7. Anche Inform 7 si basa la libreria Inform e il compilatore Inform da Inform 6. Il compilatore compila il codice sorgente di Inform 7 nel codice sorgente di Inform 6, che viene quindi compilato separatamente da Inform 6 per generare un file di story Glulx o Z-code . Inform 7 imposta anche come impostazione predefinita la scrittura di file Blorb , archivi che includono il codice Z insieme a "copertine" opzionali e metadati destinati a scopi di indicizzazione. Il set completo di strumenti Inform 7 è attualmente disponibile per Mac OS X , Microsoft Windows e Linux . La versione del 25 marzo 2007 ha aggiunto il supporto della riga di comando per Linux e le nuove versioni ora includono un IDE che utilizza l' ambiente desktop GNOME nell'ambito del progetto GNOME Inform 7 SourceForge . Il linguaggio e gli strumenti rimangono in fase di sviluppo; la versione del 25 marzo 2007 includeva una serie di modifiche alla lingua. Nel 2019, Graham Nelson ha annunciato l'eventuale open source di Inform 7.

Inform 7 è stato chiamato Natural Inform per un breve periodo di tempo, ma è stato successivamente ribattezzato Inform 7. Questo vecchio nome è il motivo per cui il compilatore Inform 7 si chiama "NI".

Informare 7 IDE

Image
L'IDE Inform 7 su Mac OS X che mostra il codice sorgente e la matassa
Image
L'IDE di Inform 7 su Mac OS X che mostra la mappa dell'indice e la trascrizione

Inform 7 viene fornito con un ambiente di sviluppo integrato (IDE) per Mac OS X, Microsoft Windows e Linux. L'IDE di Mac OS X è stato sviluppato da Andrew Hunter. L'IDE di Microsoft Windows è stato sviluppato da David Kinder. L'IDE Linux (noto come GNOME Inform) è stato sviluppato da Philip Chimento.

L'IDE di Inform 7 include un editor di testo per la modifica del codice sorgente di Inform 7. Come molti altri editor di programmazione, presenta l'evidenziazione della sintassi. Segna le stringhe tra virgolette in un colore. I titoli delle sezioni organizzative (volumi, libri, capitoli, parti e sezioni) sono in grassetto e ingranditi. I commenti sono impostati in un colore diverso e leggermente più piccoli.

L'IDE include un interprete Z-code integrato . L'interprete dell'IDE di Mac OS X si basa sull'interprete Zoom di Andrew Hunter, con il contributo di Jesse McGrew. L'interprete dell'IDE di Microsoft Windows è basato su WinFrotz .

Quando uno sviluppatore testa il gioco nell'interprete integrato, i progressi vengono registrati nelle viste "matassa" e "trascrizione" dell'IDE. La matassa tiene traccia dei comandi del giocatore come un albero di possibilità di ramificazione. Qualsiasi ramo dell'albero può essere seguito rapidamente, rendendo possibile riprovare percorsi diversi in un gioco in fase di sviluppo senza riprodurre le stesse parti del gioco. I percorsi possono anche essere annotati con note e contrassegnati come soluzioni, che possono essere esportati come guide di testo. La trascrizione, d'altra parte, tiene traccia sia dei comandi del giocatore che delle risposte del gioco. Le risposte corrette dal gioco possono essere contrassegnate come "benedette". Durante la riproduzione di una trascrizione o di un ramo della matassa, verranno evidenziate le variazioni dalla versione benedetta, che possono aiutare lo sviluppatore a trovare errori.

L'IDE fornisce anche vari indici nel programma in fase di sviluppo. Il codice viene mostrato come una gerarchia di classi, una mappa IF tradizionale, un sommario simile a un libro e in altre forme. Facendo clic sugli elementi nell'indice si passa al codice sorgente pertinente.

L'IDE presenta due riquadri affiancati in cui lavorare. Ciascun riquadro può contenere il codice sorgente su cui si sta lavorando, lo stato corrente della compilazione, la matassa, la trascrizione, gli indici del codice sorgente, una versione in esecuzione del gioco , documentazione per Inform 7 o qualsiasi estensione installata o impostazioni. Il concetto è quello di imitare il libro manoscritto di un autore presentando due "pagine affiancate" invece di una moltitudine di finestre separate.

Inform 7 linguaggio di programmazione

Le caratteristiche degne di nota includono un forte pregiudizio verso uno stile di programmazione basato su regole dichiarative e la capacità di dedurre tipi e proprietà degli oggetti dal modo in cui vengono utilizzati. Ad esempio, l'affermazione "Giovanni indossa un cappello". crea una "persona" chiamata "John" (poiché solo le persone sono in grado di indossare cose), crea una "cosa" con la proprietà "indossabile" (poiché solo gli oggetti contrassegnati come "indossabile" possono essere indossati) e imposta John come indossa il cappello.

Un altro aspetto degno di nota del linguaggio è il supporto diretto per le relazioni che tracciano le associazioni tra gli oggetti. Ciò include le relazioni fornite automaticamente, come un oggetto che ne contiene un altro o un oggetto che viene indossato, ma lo sviluppatore può aggiungere le proprie relazioni. Uno sviluppatore potrebbe aggiungere relazioni che indicano amore o odio tra esseri o per tenere traccia di quali personaggi di un gioco si sono incontrati.

Inform 7 è un linguaggio di programmazione altamente specifico del dominio , che fornisce allo scrittore / programmatore un livello di astrazione molto più elevato rispetto a Inform 6 e un codice sorgente risultante altamente leggibile.

Gioco di esempio

Le affermazioni in Inform 7 assumono la forma di frasi complete. Le righe vuote e il rientro sono in alcuni punti strutturalmente significativi. La forma base di un programma Inform 7 è la seguente:

"Hello, World!" by "I.F. Author"

The world is a room.

When play begins, say "Hello, World!"

Quello che segue è una reimplementazione del precedente esempio "Hello Deductible" scritto in Inform 7. Si basa sulla libreria nota come "The Standard Rules" che è automaticamente inclusa in tutte le compilation di Inform 7.

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase."  Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman: 
	say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
	move the insurance paperwork to the player.

Giochi notevoli scritti in Inform 7

Mystery House Possessed (2005), di Emily Short , è stato il primo gioco di Inform 7 rilasciato per essere pubblico. È stato rilasciato come parte del progetto "Mystery House Taken Over".

Il 1 ° marzo 2006, Short ha annunciato l'uscita di altri tre giochi: Bronze (un esempio di un gioco tradizionale ad alta intensità di puzzle) e Damnatio Memoriae (un seguito del suo pluripremiato gioco Inform 6 Savoir-Faire ) sono stati raggiunti da The Reliques of Tolti-Aph di Graham Nelson (2006). Quando la beta pubblica di Inform 7 è stata annunciata il 30 aprile 2006, sei "esempi funzionanti" di opere su scala medio-grande sono stati resi disponibili insieme al loro codice sorgente, inclusi i tre giochi rilasciati in precedenza il 1 ° marzo.

Floatpoint di Emily Short è stato il primo gioco di Inform 7 a prendere il primo posto nella competizione di narrativa interattiva . Ha anche vinto gli XYZZY Awards 2006 per la migliore ambientazione e i migliori NPC. Rendition , di nespresso (2007), è un esperimento di arte politica sotto forma di un gioco di avventura testuale. Il suo approccio alla tragedia è stato discusso accademicamente sia dall'Association for Computing Machinery che dall'Università di Cambridge .

Guarda anche

Ulteriore lettura

Informare 6
  • Il manuale ufficiale di Inform è Graham Nelson 's Inform Designer Manuale : si tratta di un tutorial, un manuale e un documento tecnico in uno. È disponibile online gratuitamente sul sito ufficiale di Inform e sono disponibili due edizioni stampate: una copertina morbida ( ISBN   0-9713119-0-0 ) e una copertina rigida ( ISBN   0-9713119-3-5 ).
  • La Guida per principianti di Inform di Roger Firth e Sonja Kesserich ( ISBN   0-9713119-2-7 ) tenta di fornire un'introduzione più delicata a Inform. È disponibile gratuitamente sul sito ufficiale di Inform.
Informare 7
  • The SPAG Interview - Un'intervista con i designer Graham Nelson ed Emily Short sullo sviluppo di Inform 7. Questa intervista è stata fatta poco prima della sua uscita e pubblicata lo stesso giorno della versione iniziale.
  • "Natural Language, Semantic Analysis and Interactive Fiction" - Un documento sul design di Inform 7 del designer Graham Nelson .

Riferimenti

link esterno