Locations of visitors to this page
Mille e Una AvventuraHome   AVVENTURE   DOWNLOADS   GIOCHI ON-LINE   
INFONotizie   Tutorials   Links   Chiedi aiuto
|   Giochi: "Aladino e le Perle di Saggezza" e altri giochi on-line su 3owl (2 aprile 2013)   ||   Tutorials: Sequenza DEMO (27 marzo 2013)   ||   Tutorials: Il Dr Home (25 marzo 2013)   ||   Tutorials: Il forziere sepolto (17 marzo 2013)   ||   Sorgenti: I sorgenti di Aladino e le Perle di Saggezza (20 novembre 2009)   ||   Avventure: Primi screenshots di Testudo! (3 novembre 2009)   ||   Notizie stagionate  |

Mille e Una
Avventura

Home

AVVENTURE

DOWNLOADS

GIOCHI ON-LINE

 
INFO

Notizie

Tutorials

Links

Chiedi aiuto
 

Inform7

Come iniziare - Il forziere nascosto

Questo tutorial descrive i passi fondamentali necessari per creare un'avventura testuale in italiano con Inform7.


  1. Introduzione

    Per chi si ricorda le vecchie avventure testuali dei primi anni '80 e le ha presto abbandonate per forme di intrattenimento più "moderne", queste pagine possono sembrare decisamente obsolete. Che senso ha, dopo trent'anni, scrivere un'avventura testuale? Il presente tutorial non risponde a questa domanda (anche se probabilmente la risposta alla domanda è... che un senso non ce l'ha!), ma vuole invece presentare uno dei più moderni strumenti studiati appositamente per creare avventure testuali: Inform7 di Graham Nelson.

    Quando ho scoperto Inform7 mi ci sono immediatamente appassionato, ma purtroppo mi sono anche scontrato subito con il limitatissimo, diciamo pure inesistente, supporto per le altre lingue. Infatti, Inform7 è orientato all'inglese, sia per quanto riguarda il linguaggio di programmazione (e questa non sarebbe una novità), ma anche per l'interfaccia con il giocatore. Dato che il mio desiderio era quello di creare avventure testuali in italiano, l'impresa si stava rivelando impossibile.

    Fortunatamente, qualcuno ha generosamente provveduto ed ora esiste un'estensione per Inform7 che fornisce un'interfaccia per la lingua italiana, direttamente scaricabile da inform7.com, il sito ufficiale. L'estensione è Italian di Massimo Stella.

    In questo tutorial utilizzo una versione dell'Italian di Massimo modificata in alcune parti e, dato che in certi casi ho un po' esagerato con le personalizzazioni, la mia versione non è più compatibile con la sua. Perciò chi fosse interessato alla versione originale dovrebbe scaricarla dal sito sopra citato.

  2. Installare l'Editor

    In questo tutorial descriverò solo i passi essenziali per creare un'avventura testuale, mentre altri eventuali tutorial si occuperanno della programmazione vera e propria.
    Qual è il primo passo? Scaricare l'Editor per la propria piattaforma dal sito inform7.com ed installarlo seguendo le istruzioni.

    Il secondo passo invece richiede l'installazione delle estensioni in italiano. Come dicevo, in questo esempio useremo le mie. Si possono scaricare dal sito Mille e Una Avventura (il link diretto è ItalianExtensions.zip). Per installarle tutte in una volta, basta scompattare il file ZIP e copiare le cartelle che compaiono ("Leonardo Boselli" ed eventuali altre) in Documenti -> Inform-> Extensions. Ora è tutto pronto per lanciare l'esecuzione dell'editor.

  3. Eseguire l'Editor

    Compare questa finestra di dialogo:

    Crea progetto

    Poiché il programma è stato eseguito per la prima volta, sarà possibile solo iniziare un nuovo progetto. Forniamo un nome al progetto (ad esempio "Il forziere sepolto") e automaticamente il programma creerà una cartella contenente tutti i file necessari.

    Ora appare finalmente l'editor vero e proprio, con le sue due finestre standard: il sorgente e l'esauriente documentazione (in inglese).

    L'editor

    A questo punto è sufficiente programmare la propria avventura (ovviamente qui comincia il difficile), verificarla con l'interprete interno ed infine pubblicarla definitivamente. I pulsanti per compiere queste operazioni sono i seguenti:

    L'editor

    Il primo tasto a sinistra permette di lanciare l'esecuzione dell'avventura creata mediante l'interprete interno, per la fase di test, mentre il primo a destra ne consente la pubblicazione, cioè la compilazione in un singolo file (nei formati z5, z8 o glulx) che potrà poi essere scaricato dai giocatori.

  4. Scrivere il sorgente

    Per quanto riguarda la scrittura del sorgente, non c'è nessuna differenza rispetto ad altri normalissimi editor. Per prima cosa occorre ricordare l'inclusione delle estensioni in italiano (in questo esempio non uso l'originale Italian di Massimo Stella, ma una versione modificata). Quindi, subito sotto il titolo generato automaticamente, scriviamo:
    "Il forziere sepolto" by Leonardo Boselli
    
    Include Italian by Leonardo Boselli.
    

    Poiché l'estensione Italian da me modificata usa gli indexed texts per determinare gli articoli e le preposizioni articolate corrette, ha bisogno di una certa quantità di memoria che il formato z5 non riesce a gestire. La soluzione è quella di selezionare nel menù Settings il formato z8 o, nel caso di avventure piuttosto complesse, il formato glulx.

    L'avventura di prova è molto semplice:

    Il nostro eroe, il pirata Jack, si trova su un'isola deserta, ha una mappa in mano, indossa un giubbotto di salvataggio ed ha una chiave in tasca, mentre una pala, poco distante, è piantata nel terreno. Perché il gioco possa terminare con successo, il pirata Jack deve leggere la mappa e individuare la posizione del tesoro, poi deve scavare ed estrarre dalla fossa un forziere, infine, lo deve aprire ed esaminarne il contenuto.

    Si tratta di un'unica stanza e gli oggetti con cui interagire sono pochi, ma dà un'idea di come funziona il linguaggio. Cominciamo a descrivere la stanza che chiamiamo spiaggia. La descrizione sarà mostrata ogni volta che si entra in questa a stanza, ma non essendocene altre in questo caso, sarà visualizzata una volta sola all'inizio o dopo l'esecuzione del comando GUARDA (LOOK).

    The spiaggia is a female room. "La spiaggia dell[']isola è
    una sottile lingua di sabbia che circonda un fitta foresta
    di palme da cocco. Le onde si frangono sulla battigia ad
    intervalli regolari, mentre i granchi corrono sbilenchi
    avanti e indietro alla ricerca di cibo."
    

    Ora forniamo una descrizione anche per gli elementi con cui il giocatore non interagirà ma che sono citati nella descrizione della stanza.

    The granchi is a plural-named scenery in the spiaggia.
    The description is
    "Grossi granchi dalle potenti chele cercano cibo
    nella sabbia. Meglio stare alla larga!"
    The sabbia is a female scenery in the spiaggia.
    The description is
    "La sabbia della spiaggia è molto sottile.
    Non deve essere difficile da scavare."
    The onde is a female, plural-named scenery in the spiaggia.
    The description is
    "Le onde superano la barriera corallina,
    dove il vento teso strappa dalle creste brani di spuma,
    e si frangono rumorosamente sulla spiaggia."
    The fitta foresta di palme da cocco is a female scenery.
    The description is "Le palme da cocco formano
    una fitta foresta impenetrabile."
    

    Ora gli oggetti (thing) con cui ci sarà un'interazione. Prima la pala:

    The pala is a female thing in the spiaggia. "Una pala piantata
    nella sabbia fa bella mostra di sé, poco distante."
    The description is "Una robusta pala, ottima per scavare."
    

    Specificare female thing serve per far capire al sistema quale tipo di articolo dovrà essere utilizzato. Il primo testo è chiamato initial description e viene utilizzato quando l'oggetto deve essere citato nella descrizione iniziale della stanza. Invece il testo di description viene visualizzato ad una specifica richiesta del giocatore con il comando ESAMINA (che si può abbreviare con X).

    Ora descriviamo la mappa che inizialmente è già in possesso (carried) del personaggio (player):

    The mappa is a female thing. The description is "La
    mappa indica il luogo dove scavare: in questo momento
    la X si trova proprio sotto i tuoi piedi."
    The mappa can be examined or unexamined.
    It is unexamined.
    The player carries the mappa.
    

    Vogliamo tenere traccia di quando la mappa viene esaminata dal giocatore, per consentire il lavoro di scavo solo quando è stato individuato il punto esatto. Per questo specifichiamo la proprietà examined. Quindi dopo che la mappa è stata esaminata, la marchiamo come examined.

    After examining the mappa:
        now the mappa is examined.
    

    Ora è il turno del giubbotto di salvataggio, che inizialmente è indossato (worn) dal personaggio. Di questo giubbotto deve anche far parte un contenitore, chiamato tasche. Poiché è probabile che il giocatore usi indifferentemente tasche o tasca, è meglio specificare la seconda parola come sinonimo.

    The giubbotto di salvataggio is a thing. The description is
    "Un giubbotto salvagente di colore rosso, con due ampie
    tasche." The player wears the giubbotto di salvataggio.
    The tasche is a female, plural-named container.
    It is part of the giubbotto di salvataggio.
    Understand "tasca" as tasche.
    

    Non rimangono che il forziere e la sua chiave. Il forziere è definito come un contenitore (container) chiuso a chiave (closed, locked) e che si può aprire con una chiave (lockable, nel senso che qualcosa che è lockable deve anche essere unlockable se inizialmente è locked).

    The forziere is a closed, locked, lockable container.
    The description is "Un antico forziere molto pesante."
    

    Per quanto riguarda la chiave, la mettiamo inizialmente nelle tasche (del giubbotto - ci sono solo quelle) e specifichiamo che apre il forziere.

    The chiave d'ottone is a female thing in the tasche.
    The chiave d'ottone unlocks the forziere.
    The description is "Una vecchia chiave d'ottone.
    Deve aprire qualcosa di molto antico."
    

    Dopo aver descritto tutti gli oggetti necessari, occorre specificare qualche messaggio in risposta alle azioni più importanti.
    L'azione fondamentale è quella di scavo. Poiché in Inform7 non si considera come azione base, la definiamo (utilizzando la parola digging):

    Digging is an action applying to nothing.
    Understand "scava" as digging.
    
    Instead of digging:
        if the mappa is unexamined:
            say "Non sai dove devi scavare.
            Prova a consultare la mappa.";
        otherwise if the player does not carry the pala:
            say "Non puoi scavare a mani nude.
            Hai bisogno di un attrezzo.";
        otherwise:
            now the forziere is in the spiaggia;
            say "Dopo aver scavato a lungo, la pala incontra
            una superficie metallica.[line break]Togliendo
            altra sabbia, scopri un forziere e, con grande
            fatica, lo trascini fuori dalla buca."
    

    Quell'instead of digging permette di specificare, con un costrutto identico a quello di molti linguaggi di programmazione, cosa fare se durante l'azione di scavo alcune condizioni sono vere (se la mappa non è stata esaminata, o se il personaggio non ha una pala in mano). Nell'ultimo caso (l'ultimo otherwise) il forziere compare sulla spiaggia, mentre in precedenza non era propriamente in gioco (si dice che era off-stage).

    Quando il giocatore tenta di aprire il forziere bloccato senza chiave, suggeriamo di cercare una chiave, ma anche il messaggio standard poteva andare bene.

    Instead of opening the forziere
    when the forziere is locked:
        say "La serratura è bloccata.
        Bisogna sbloccarla con la sua chiave."
    

    Quando finalmente il giocatore apre il forziere, elenchiamo il contenuto. In questo caso il messaggio risulta più "drammatizzato" di quello standard.

    After opening the forziere:
        say "Dopo aver aperto il forziere, ti accorgi,
        deluso, che contiene solo un foglietto."
    

    Infine la descrizione del contenuto del forziere...

    The foglietto is a thing in the forziere. The description is
    "Il foglietto dice: '[italic type]Sapevo che avresti aperto
    il forziere![roman type]'"
    

    ... e la conclusione del gioco, dopo la lettura del foglietto:

    After examining the foglietto:
        end the game in victory.
    

  5. Un possibile sviluppo

    Ecco uno sviluppo tipico di questa micro-avventura:


    Il forziere sepolto
    An Interactive Fiction by Leonardo Boselli
    Release 1 / Serial number 090422 / Inform 7 build 5U92 (I6/v6.31 lib 6/12N) SD

    spiaggia
    La spiaggia dell'isola è una sottile lingua di sabbia che circonda un fitta foresta di palme da cocco. Le onde si frangono sulla battigia ad intervalli regolari, mentre i granchi corrono sbilenchi avanti e indietro alla ricerca di cibo.

    Una pala piantata nella sabbia fa bella mostra di sé, poco distante

    >x onde
    Le onde superano la barriera corallina, dove il vento teso strappa dalle creste brani di spuma, e si frangono rumorosamente sulla spiaggia.

    >x granchi
    Grossi granchi dalle potenti chele cercano cibo nella sabbia. Meglio stare alla larga!

    >x sabbia
    La sabbia della spiaggia è molto sottile. Non deve essere difficile da scavare.

    >scava
    Non sai dove devi scavare. Prova a consultare la mappa.

    >x mappa
    La mappa indica il luogo dove scavare: in questo momento la X si trova proprio sotto i tuoi piedi.

    >scava
    Non puoi scavare a mani nude. Hai bisogno di un attrezzo.

    >prendi la pala
    Hai preso la pala.

    >scava
    Dopo aver scavato a lungo, la pala incontra una superficie metallica.
    Togliendo altra sabbia, scopri un forziere e, con grande fatica, lo trascini fuori dalla buca.

    >apri il forziere
    La serratura è bloccata. Bisogna sbloccarla con la sua chiave.

    >inventario
    Stai portando:
      una pala
      una mappa
      un giubbotto di salvataggio (indossato)

    >x giubbotto
    Un giubbotto salvagente di colore rosso, con due ampie tasche.

    >x tasche
    Dentro le tasche puoi vedere una chiave d'ottone.

    >prendi la chiave
    Hai preso la chiave d'ottone.

    >apri il forziere con la chiave
    La serratura si apre con un piccolo scatto. Riesci a sbloccare il forziere.

    >apri il forziere
    Dopo aver aperto il forziere, ti accorgi, deluso, che contiene solo un foglietto.

    >x foglietto
    Il foglietto dice: "Sapevo che avresti aperto il forziere!"

    *** Hai vinto! ***

    Nel gioco hai totalizzato 0 su 0, in 16 mosse.

  6. Il sorgente senza commenti

    Infine il listato completo:

    "Il forziere sepolto" by Leonardo Boselli

    Include Italian by Leonardo Boselli.

    The spiaggia is a female room. "La spiaggia dell[']isola è una sottile lingua di sabbia che circonda un fitta foresta di palme da cocco. Le onde si frangono sulla battigia ad intervalli regolari, mentre i granchi corrono sbilenchi avanti e indietro alla ricerca di cibo."

    The granchi is a plural-named scenery in the spiaggia. The description is "Grossi granchi dalle potenti chele cercano cibo nella sabbia. Meglio stare alla larga!"
    The sabbia is a female scenery in the spiaggia. The description is "La sabbia della spiaggia è molto sottile. Non deve essere difficile da scavare."
    The onde is a female, plural-named scenery in the spiaggia. The description is "Le onde superano la barriera corallina, dove il vento teso strappa dalle creste brani di spuma, e si frangono rumorosamente sulla spiaggia."
    The fitta foresta di palme da cocco is a female scenery. The description is "Le palme da cocco formano una fitta foresta impenetrabile."

    The pala is a female thing in the spiaggia. "Una pala piantata nella sabbia fa bella mostra di sé, poco distante". The description is "Una robusta pala, ottima per scavare."

    The mappa is a female thing. The description is "La mappa indica il luogo dove scavare: in questo momento la X si trova proprio sotto i tuoi piedi."
    The mappa can be examined or unexamined. It is unexamined.
    The player carries the mappa.

    After examining the mappa:
        now the mappa is examined.

    The giubbotto di salvataggio is a thing. The description is "Un giubbotto salvagente di colore rosso, con due ampie tasche.".
    The player wears the giubbotto di salvataggio.

    The tasche is a female, plural-named container. It is part of the giubbotto di salvataggio.
    Understand "tasca" as tasche.

    The forziere is a closed, locked, lockable container. The description is "Un antico forziere molto pesante."

    The chiave d'ottone is a female thing in the tasche. The chiave d'ottone unlocks the forziere. The description is "Una vecchia chiave d'ottone. Deve aprire qualcosa di molto antico."

    Digging is an action applying to nothing.
    Understand "scava" as digging.

    Instead of digging:
        if the mappa is unexamined:
            say "Non sai dove devi scavare. Prova a consultare la mappa.";
        otherwise if the player does not carry the pala:
            say "Non puoi scavare a mani nude. Hai bisogno di un attrezzo.";
        otherwise:
            now the forziere is in the spiaggia;
            say "Dopo aver scavato a lungo, la pala incontra una superficie metallica.[line break]Togliendo altra sabbia, scopri un forziere e, con grande fatica, lo trascini fuori dalla buca.".

    Instead of opening the forziere when the forziere is locked:
        say "La serratura è bloccata. Bisogna sbloccarla con la sua chiave."

    After opening the forziere:
        say "Dopo aver aperto il forziere, ti accorgi, deluso, che contiene solo un foglietto."

    The foglietto is a thing in the forziere. The description is "Il foglietto dice: '[italic type]Sapevo che avresti aperto il forziere![roman type]'"

    After examining the foglietto:
        end the game in victory.


Torna all'indice dei Tutorials
Per maggiori informazioni
manda un'email a
Mille e Una
Avventura
Inform7SourceForge LogoCopyright © 2009 Leonardo Boselli
All rights reserved. Legal Terms.