Inform e Glulx/RUINS, l'avventura comincia/Il grande altopiano (dalla padella alla brace)

Indice del libro

Siamo negli anni ’30; siete un intrepido (o forse folle?) archeologo che è andato nella foresta amazzonica alla ricerca di reperti archeologici da riportare alla civiltà, ma qualcosa è andato storto. Sono passati ormai diversi giorni da quando avete messo piede in quest’enorme "tappeto verde", e siete senz’acqua, sporchi e sudati. I rovi spinosi che siete stati costretti ad attraversare vi hanno lacerato la pelle e Londra vi sembra ormai tanto lontana...

Ma, proprio quando state per perdere ogni speranza, scorgete in lontananza un immenso altopiano. Vi mettete a correre, quasi come se il vostro sesto senso avesse individuato qualcosa, e così è: delle rovine, un cumulo di materiale da costruzione che una volta avrebbero potuto costituire una piramide sepolcrale... cosa volete di più dalla vita? Finalmente avete scoperto qualcosa che ha a che fare con l’archeologia, e chissà quanti tesori sepolti ci sono là sotto!

Vi guardate intorno: cupi ulivi crescono ovunque e una pioggia appena smessa riempie l’aria con una calda nebbia bagnata. Tirate fuori dalla tasca il vostro "Manuale dell'archeologo alle prime armi" ma qualcosa non va: il titolo di questo libro è "Come scrivere (e giocare) delle avventure testuali in Inform e Glulx".

Da dove salta fuori questa roba? Beh, la piramide non scappa e cominciate così a sfogliare le prime pagine...


Il grande altopiano (dalla padella alla brace)

modifica

In Inform, un’avventura testuale inizia con la funzione Initialise, proprio come accade in questo primo programma[1]:

 Constant Story "RUINS";
 Constant Headline
         "^Un esempio di lavoro interattivo.^
          Copyright (c) 1999 di Graham Nelson.^
          Traduzione e adattamenti di Vincenzo Scarpa e Raffaello Valesio
          (c) 2002-2003 su permesso dell'autore.^^";

 Include "Parser";
 Include "VerbLib";
 Include "replace";
 
 ! ------------------------------------------------------------------- !
 !       Il Grande Altopiano.
 ! ------------------------------------------------------------------- !
 Object  Forest "Il Grande Altopiano"
   with  description
             "I tuoi appunti menzionano qualcosa circa questa bassa scarpata di calcare, ma la foresta pluviale ne ha
              rivendicato il possesso. Cupi ulivi crescono ovunque, e una pioggia appena smessa riempie l'aria con una calda
              nebbia bagnata.^             
              La ~Struttura 10~ @`e un cumulo di materiali da costruzione, che una volta avrebbero potuto costituire una 
              piramide sepolcrale, ma della quale ora nulla rimane, eccetto alcuni gradini scolpiti nella nuda roccia che 
              portano gi@`u, nell'oscurit@`a.",
         u_to 
             "Gli alberi sono coperti di spine e ti ridurresti le mani a brandelli.",
         cant_go
             "La foresta pluviale @`e fitta, e non l'hai attraversata per giorni e giorni per rinunciare alla tua scoperta 
             proprio ora. Hai bisogno di raccogliere un po' di manufatti da riportare alla civilt@`a, prima di abbandonare 
             la spedizione.",
   has light;
 
 [ Initialise;
         location = Forest;
         "^^^Dopo giorni di inutili ricerche, passati senz'acqua attraversando i rovi della foresta, alla fine la tua 
         pazienza @`e stata ricompensata: hai fatto una scoperta!^";
 ];

 ! -------------------------------------------------------------------- !
 Include "ItalianG";

Ogni avventura testuale ha una locazione di partenza (che in questo caso è l’oggetto Forest) ed è costituita da un certo numero di oggetti. Nel nostro caso, l’oggetto Forest ha a sua volta un nome interno ("Forest") utilizzato all’interno del listato, un nome esterno ("il Grande Altopiano") che viene stampato a video durante il gioco[2], la proprietà description (la descrizione dell’oggetto  ➨  non sempre presente), delle direzioni (u_to che indica sopra e cant_go che indica tutte le altre  ➨  non sempre presenti) e l’attributo light (anche questo non sempre presente). Provando a compilare il programma ecco cosa appare:

 
Dopo giorni di inutili ricerche, passati senz'acqua attraversando i rovi della foresta, alla fine la tua pazienza è stata ricompensata: hai fatto una scoperta!

RUINS
Un esempio di lavoro interattivo.
Copyright (c) 1999 di Graham Nelson.
Traduzione e adattamenti di Vincenzo Scarpa e Raffaello Valesio (c) 2002-2003 su permesso dell'autore.


Versione 1 -- Numero di serie 041109
Inform v6.30 -- Libreria 6/11  --  Infit v2.5    S


Il Grande Altopiano
I tuoi appunti menzionano qualcosa circa questa bassa scarpata di calcare, ma la foresta pluviale ne ha rivendicato il possesso. Cupi ulivi crescono ovunque, e una pioggia appena smessa riempie l'aria con una calda nebbia bagnata.
La "Struttura 10" è un cumulo di materiali da costruzione, che una volta avrebbero potuto costituire una piramide sepolcrale, ma della quale ora nulla rimane, eccetto alcuni gradini scolpiti nella nuda roccia che portano giù, nell'oscurità.


>

Come potete vedere, la dimostrazione effettiva che il gioco parte proprio dalla funzione Initialise, è il fatto che inizia dal Grande Altopiano e che il primo testo stampato a video è proprio quello contenuto all’interno della funzione stessa. Seguono poi le istruzioni per la stampa della scritta RUINS (definita all’inizio come Constant Story  ➨  deve essere sempre presente), del contenuto della costante Headline (anche questa, sempre presente), e i relativi file di include (sempre presenti) che sono nell’ordine:

  • Parser(.h) - contiene le routine per il parser;
  • Verblib(.h) - la libreria dei verbi;
  • Replace(.h) - stampa a video alcune note relative a Infit;
  • ItalianG(.h) - la grammatica dei verbi adattata alla nostra lingua.

I testi successivi che appaiono sono il nome esterno dell’oggetto Forest, la sua descrizione, e il segno di maggiore (>) che si chiama prompt dei comandi.

A questo punto tocca a noi. Proviamo allora a inserire un paio di comandi per vedere cosa succede:

>su
Gli alberi sono coperti di spine e ti ridurresti le mani a brandelli.</code>

>est
La foresta pluviale è fitta, e non l'hai attraversata per giorni e giorni per rinunciare alla tua scoperta proprio ora. Hai bisogno di raccogliere un po' di manufatti da riportare alla civiltà, prima di abbandonare la spedizione.


>salta
Salti sul posto, senza risultato.</code>


>aspetta
Il tempo passa.


>prega
Sembra che le tue preghiere non siano state esaudite.


>canta
Sei suonatissimo.

>dormi
Non sei per niente assonnato


>

In questo caso, ogni volta che si verifica l’evento u_to (quando cioè vogliamo dirigerci verso l’alto), Inform risponde che gli alberi sono coperti di spine e che quindi non possiamo farlo. Se invece proviamo ad andare in qualsiasi altra direzione (quando cioè si verifica l’evento cant_go), Inform ci dice che non possiamo abbandonare la spedizione. Fino a qui non sembra esserci nulla di strano, perché questi sono eventi che abbiamo definito. Ma, come potete vedere, Inform "reagisce" anche a dei comandi che non sono stati descritti da nessuna parte all’interno del nostro programma. Come mai? Perché Inform, a differenza della maggior parte dei linguaggi di programmazione, è dedicato solo ed esclusivamente alle avventure testuali e offre un ambiente integrato e pronto per essere tranquillamente utilizzato e personalizzato. Questo non significa però che l’avventura testuale è già pronta; tuttavia, tutte le routine per la gestione dell’inventario, del salvataggio e del caricamento della posizione, del parser dei comandi e molto altro ancora (che nei linguaggi di programmazione non specifici per le avventure testuali devono essere programmati da zero con delle difficoltà non indifferenti) sono state già incluse nei famosi file di Include descritti prima. Un bel vantaggio, non è vero?

L’ultima cosa che rimane da vedere è l’attributo light, che dice a Inform che Forest è un oggetto "illuminato". Per farvi capire meglio quello che sto dicendo, proviamo a cambiare questo attributo con ~light (per chi non avesse ancora letto il capitolo 3, la tilde è il simbolo di negazione) ed ecco quello che appare:

Dopo giorni di inutili ricerche, passati senz'acqua attraversando i rovi della foresta, alla fine la tua pazienza è stata ricompensata: hai fatto una scoperta!


RUINS
Un esempio di lavoro interattivo.
Copyright (c) 1999 di Graham Nelson.
Traduzione e adattamenti di Vincenzo Scarpa e Raffaello Valesio (c) 2002-2003 su permesso dell'autore.


Versione 1 -- Numero di serie 041109
Inform v6.30 -- Libreria 6/11  --  Infit v2.5    S


Oscurità
È completamente buio, e non riesci a vedere niente.


>

Come potete vedere, la descrizione della foresta è scomparsa, perché siete... al buio, proprio come se vi avessero chiuso in un ascensore con le luci guaste (e chi di voi soffre di claustrofobia adesso starà sicuramente facendo dei salti di gioia). Questo evento, che in Inform si chiama the_dark, ci sarà molto utile più avanti per simulare il funzionamento della lampada al sodio: ma forse è meglio procedere con ordine, senza mettere troppa carne al fuoco[3].

  1. A tutti quelli di voi che sono passati dal capitolo 2 direttamente a questo (a quelli di voi, cioè, che hanno saltato il capitolo 3) consiglio vivamente di leggere con molta attenzione il paragrafo 3.1 (anche se naturalmente nessuno vi obbliga).
  2. Più precisamente, tutte le volte che il giocatore si trova nella locazione a cui il nome esterno fa riferimento.
  3. Cliccate qui per scaricare il listato di questo esercizio (il file 4.01.inf).