AWS 3.0, l'avventura sia con voi

Adventure Writing System

HomeBioEseguibiliManualiAvventureTutorial

                                   

 

 

Analisi di InitFi40.aws, il nuovo file di base di AWS ovvero
come scrivere avventure con meno sforzo

INITFI40.AWS è il nuovo file iniziale di AWS, l’editor/player di giochi di avventura testuali o interactive fiction (IF). Contiene, come il vecchio INITFI30, un dizionario di base, i messaggi di sistema e le condizioni a bassa priorità per gestire il movimento, le azioni prendi e lascia e quelle di esamina. Tralasciamo il dizionario, che potete migliorare a vostro piacimento inserendo tutti i nomi, verbi, aggettivi che volete in modo da averlo quasi pronto per ogni avventura che scriverete. Attenzione però al momento storico. Mi spiego meglio: se inserite parole come stregone, magia, mago, bacchetta magica e così via e poi scrivete un’avventura ambientata su una nave spaziale, il giocatore si sentirà spaesato nel vedere che il vostro gioco riconosce parole che si riferiscono ad altro tipo di racconto.
Andiamo allora ad analizzare le condizioni a bassa priorità, il vero cambiamento rispetto alla versione precedente. Si trovano nella sezione CONDIZIONILOW del file INITFI40.aws o del file .aws che contiene la vostra avventura. Potete vederle aprendo il file con un semplice editor di testi tipo il Blocco Note di Windows o il TextEditor del Mac. Ecco il dettaglio:

CONDIZIONILOW
if verb 73 then quit endif
if verb 74 or verb 0 and noun 72 then inve wait endif
if verb 987 then restart endif
if verb 988 then save wait endif salva la partita
if verb 989 then load wait endif carica la partita
if verb 110 then look wait endif
IF verb 100 OR vbnoeq 0 AND noun 80 THEN nord WAIT ENDIF VAI NORD
IF verb 100 OR vbnoeq 0 AND noun 81 THEN nord WAIT ENDIF VAI SUD
IF verb 100 OR vbnoeq 0 AND noun 82 THEN nord WAIT ENDIF VAI EST
IF verb 100 OR vbnoeq 0 AND noun 83 THEN nord WAIT ENDIF VAI OVEST
IF verb 100 OR vbnoeq 0 AND noun 84 THEN nord WAIT ENDIF VAI ALTO
IF verb 100 OR vbnoeq 0 AND noun 85 THEN nord WAIT ENDIF VAI BASSO
IF VERB prendi AND NO1LT MAXPRENDIBILI+1 THEN GET NO1 OKAY ENDIF
IF VERB posa AND NO1LT MAXPRENDIBILI+1 THEN DROP NO1 OKAY ENDIF
IF VERB esamina and NO1LT MAXOGGETTI+1 and AVAI NO1 THEN mess NO1 WAIT ENDIF
IF VERB esamina and NO1LT MAXOGGETTI+1 THEN mess 1053 ("Non ne vedo") WAIT ENDIF

Analizziamo le varie parti:

if verb 73 then quit endif
if verb 74 or verb 0 and noun 72 then inve wait endif
if verb 987 then restart endif
if verb 988 then save wait endif salva la partita
if verb 989 then load wait endif carica la partita
if verb 110 then look wait endif

Questo blocco contiene le azioni relative a comandi quali quit (smetti di giocare), mostra inventario o solo inventario, restart (ricomincia a giocare), save (salva la partita), load (carica la partita) e look (guarda).
I veri cambiamenti arrivano adesso. Analizziamo il secondo blocco:


IF verb 100 OR vbnoeq 0 AND noun 80 THEN nord WAIT ENDIF VAI NORD
IF verb 100 OR vbnoeq 0 AND noun 81 THEN nord WAIT ENDIF VAI SUD
IF verb 100 OR vbnoeq 0 AND noun 82 THEN nord WAIT ENDIF VAI EST
IF verb 100 OR vbnoeq 0 AND noun 83 THEN nord WAIT ENDIF VAI OVEST
IF verb 100 OR vbnoeq 0 AND noun 84 THEN nord WAIT ENDIF VAI ALTO
IF verb 100 OR vbnoeq 0 AND noun 85 THEN nord WAIT ENDIF VAI BASSO


Possiamo notare che ora le direzioni (n, s, e, o, alto, basso) sono nomi e non più verbi, come in INITFI30.AWS. In questo modo si può scrivere sia NORD che VAI A NORD.
Si potrebbe evolvere ulteriormente inserendo nel dizionario i verbi:


100 = cammina (già presente)
100 = corri
100 = vai
204=muovi
303=muoviti
184=sali
185=scendi


Poi modifichiamo le condizioni così:


IF VERB 100 OR verb 204 OR verb 303 OR VBNOEQ 0 AND NOUN 80 THEN NORD WAIT ENDIF
IF verb 100 OR verb 204 OR verb 303 OR vbnoeq 0 AND noun 81 THEN sud WAIT ENDIF VAI SUD
IF verb 100 OR verb 204 OR verb 303 OR vbnoeq 0 AND noun 82 THEN est WAIT ENDIF VAI EST
IF verb 100 OR verb 204 OR verb 303 OR vbnoeq 0 AND noun 83 THEN ovest WAIT ENDIF VAI OVEST


Così per spostarci possiamo scrivere:
cammina oppure corri oppure vai oppure muovi oppure muoviti a nord oppure solo nord
o qualsiasi altra direzione.


Stessa cosa per alto e basso:

IF verb 100 OR verb 204 OR verb 303 OR vbnoeq 0 AND noun 84 THEN alto WAIT ENDIF
IF verb 100 OR verb 204 OR verb 303 OR vbnoeq 0 AND noun 85 THEN basso WAIT ENDIF
a cui però aggiungiamo:
IF noun 84 OR noun 0 AND verb 184 THEN alto WAIT ENDIF sali oppure sali in alto
IF noun 85 OR noun 0 AND verb 185 THEN basso WAIT ENDI scendi oppure scendi in basso


Nel file INITFI40.AWS abbiamo inserito una ulteriore semplificazione delle condizioni. Si stabilisce il numero massimo di oggetti prendibili (MAXPRENDIBILI) e il numero totale di oggetti (MAXOGGETTI). Queste informazioni sono ovviamente note nella fase di scrittura.

Le azioni di prendere e posare un oggetto si semplificano così:


IF VERB prendi AND NO1LT MAXPRENDIBILI+1 THEN GET NO1 OKAY ENDIF
IF VERB posa AND NO1LT MAXPRENDIBILI+1 THEN DROP NO1 OKAY ENDIF


Se l’oggetto è fra quelli numerati tra 1 e MAXPRENDIBILI, gli oggetti che si possono prendere, allora si esegue l’azione di prendere l’oggetto di numero NO1 che è proprio l’oggetto che abbiamo scritto e che ha, appunto, il numero NO1. Stessa cosa per il verbo posa.

Le azioni di esaminare un oggetto si semplificano invece così:


IF VERB esamina and NO1LT MAXOGGETTI+1 and AVAI NO1 THEN mess NO1 WAIT ENDIF
IF VERB esamina and NO1LT MAXOGGETTI+1 THEN mess 1053 ("Non ne vedo") WAIT ENDIF

Notare come i messaggi di esamina hanno la stessa numerazione dei nomi (mess NO1 vuol dire messaggio il cui numero è pari al valore NO1).

Facciamo ora un esempio per capire meglio. Ho sei oggetti di cui quattro prendibili:

1 spada
2 torcia
3 elmo
4 scudo

e due non prendibili:

5 cavallo
6 elefante

Avremo MAXOGGETTI=6 e MAXPRENDIBILI=4 perciò le condizioni diventeranno:


IF VERB prendi AND NO1LT 5 THEN GET NO1 OKAY ENDIF
IF VERB posa AND NO1LT 5 THEN DROP NO1 OKAY ENDIF
IF VERB esamina and NO1LT 7 and AVAI NO1 THEN mess NO1 WAIT ENDIF
IF VERB esamina and NO1LT 7 THEN mess 1053 WAIT ENDIF


Ovviamente i primi sei messaggi saranno:

1 descrizione della spada
2 descrizione della torcia
3 descrizione dell'elmo
4 descrizione dello scudo
5 descrizione del cavallo
6 descrizione dell'elefante

Quanto detto vale se l’oggetto è, appunto, un oggetto.

Considerate che lavorando in questo modo vi risparmierete di scrivere tante condizioni low tipo queste:


IF verb 70 OR verb 208 AND noun 12 AND avai 12 THEN mess 277 WAIT ENDIF  ESAMINA/Leggi  TACCUINO avai TACCUINO 
IF verb 70 OR verb 208 AND noun 12 THEN mess 279 WAIT ENDIF  ESAMINA/Leggi  TACCUINO not avai TACCUINO

Il problema è leggermente diverso se l’oggetto è nella descrizione di una locazione, tipo “Al centro della stanza c’è un enorme altare”.

Le condizioni da inserire (esamina/leggi oggetto) saranno Condizioni Locali:

Loc xx (la locazione nella cui descrizione è presente l’oggetto)
IF verb 70 OR verb 208 AND noun 12 THEN mess xxx WAIT ENDIF  leggi/esamina oggetto.


Se si può solo leggere o esaminare allora togliere l’altro verbo. L’oggetto è, ovviamente, presente.
Poi bisogna aggiungere una Condizione Low, in caso si chieda di esaminare l’oggetto al di fuori della locazione in cui è presente. Come avrete notato, nel caso di oggetti “veri” si usa AVAI per vedere se sono disponibili. Qui sappiamo che sono disponibili ma solo in una ben specifica locazione.

CondizioniLow
IF verb 70 OR verb 208 AND noun 12 THEN mess 278 “Non ne vedo in giro!” WAIT ENDIF  leggi/esamina oggetto. Se si può solo leggere o esaminare allora togliere l’altro verbo. L’oggetto è, ovviamente, non presente.
 

Ecco un piccolo esempio tratto da Iunnuh 2, La Maledizione che viene dal passato

Per le condizioni LOCALI

loc 1
IF verb 70 AND noun 250 THEN mess 310 WAIT ENDIF esamina fermata
IF verb 70 AND noun 252 THEN mess 315 WAIT ENDIF esamina ingresso

loc 14
IF verb 70 AND noun 258 THEN mess 321 WAIT ENDIF esamina biglietteria
IF noun 259 OR noun 252 AND verb 70 THEN mess 318 WAIT ENDIF esamina varco/accesso/i
IF verb 70 AND noun 261 THEN mess 319 WAIT ENDIF esamina sportello/i
IF verb 70 AND noun 296 THEN mess 320 WAIT ENDIF esamina biglietto/i


Per le condizioni LOW


IF verb 70 AND noun 250 THEN mess 278 WAIT ENDIF esamina fermata
IF verb 70 AND noun 252 THEN mess 368 WAIT ENDIF esamina ingresso

IF verb 70 AND noun 258 THEN mess 373 WAIT ENDIF esamina biglietteria
IF noun 259 OR noun 252 AND verb 70 THEN mess 278 WAIT ENDIF esamina varco/accesso/i
IF verb 70 AND noun 261 THEN mess 278 WAIT ENDIF esamina sportello/i
IF verb 70 AND noun 296 THEN mess 278 WAIT ENDIF esamina biglietto/i

 

 

 

 

 




Per contattarmi (bug, info, consigli, richieste, altro) scrivimi a: aws@aristidetorrelli.it