Newsgroup: it.comp.giochi.avventure.testuali
Titolo: misteri testuali [lungo]

// prologo
un saluto alla comunità di ICGAT. vi osservo da qualche tempo. siete
belli :)
vorrei programmare anch'io un "mistero testuale". tutte le avventure
di testo che mi sono piaciute raccontavano di misteri.
penso che costruire una realtà immaginaria attraverso la logica di un
calcolatore, sia una gioia indescrivibile. mi eccita l'idea di
provarci.
vorrei scrivere un'AT un po' diversa dal solito, e lasciare ad altri
la libertà di usare e modificare a piacimento il mio codice, per
crearne di nuove.
// etica senza tempo
ho provato INFORM (e il lavoro di Giovanni Riccardi, che ringrazio).
nel piccolo della mia conoscenza tecnica, lo trovo accattivante; per
certi versi frutto di genialità informatica, ovvero di hackeraggio e
di tanta buona volontà e pazienza.
però trovo più divertente fare da me. svilupperò la cosa nei ritagli
di tempo... può diventare una buona sfida.
sogno un'AT complessa e intelligente, priva di parser testuale, che
possa essere giocata con un click. *priva di parser testuale*... sono
convinto si possa fare. ci sto provando.
eheh, è fantastico poter dire a se stessi: "ho un sacco di tempo x
attività faticose non pagate", quando non lo si ha affatto. :)
ultimamente sto lavorando prezzolato coi computer, e mi sembra di star
barattando la passione per l'hacking con denaro fine a se stesso.
certo, mi sono comperato un bel monitor... ma se vendi i tuoi
programmi, di solito sei costretto:
a) a nascondere il codice all'amico, cioè alla concorrenza (chi copia,
s'avvantaggia)
b) a fare tutto in massima fretta, vale a dire male (più produci, più
guadagni)
insomma, non c'è tempo per l'ideale; non c'è tempo per la gioia di un
codice *perfetto*.
tutto questo è ingiusto. certe volte il commercio trasforma gli esseri
umani in... in... mucche :)
lasciatemi una settimana per mostrarvi qualcosa. un assaggio.
// la questione del codice
il mio secondo grazie è per Enrico Colombini.
ho studiato il codice di IDRA, e ne ho dedotto quanto segue:
a mio parere, la tecnologia JavaScript è una buona idea per
programmare lo scheletro di una AT tradizionale.
i vantaggi superano gli svantaggi, e i vantaggi mi sembrano + numerosi
che altrove. eccone alcuni:
- per gli scettici: contrariamente a quanto ritiene l'utente poco
avvezzo agli artifizi di JS (e dei browser), quest'ultimo è
perfettamente adeguato per scrivere un'AT: offre uno strumento
completo; credetemi: con JS si possono operare miracoli, e perfino far
resuscitare i morti -- volendo, oggi si può anche simulare in tutto e
per tutto il parser di una classica AT, con scrolling verticale senza
refresh del browser e "input controllato" via tastiera.
- a livello di comunicazione uomo-macchina, un browser offre tutto ciò
di cui un'AT abbisogni per essere esplorata. puoi personalizzare il
carattere sullo schermo così come modificare a piacimento le
dimensioni dei frame in cui è organizzata la rappresentazione; puoi
variare lo stile di visualizzazione del testo, usare i colori, fare
taglia-e-incolla da una finestra all'altra, gestire contenuti
multimediali e far transitare via HTML tecnologie accessorie (come
swf).
- non è necessario distribuire sorgenti di AT con interprete a parte:
il browser, strumento abbastanza diffuso, sostituisce quest'ultimo. JS
gira più o meno su qualunque macchina, sebbene le migliori
funzionalità dimorino solo su Netscape 6+ e MS IE 5+ -- vedi la
necessità di un uso (circoscritto, e tutto sommato "standard") di
risorse DHTML. quando dico "compatibilità" mi riferisco
preferibilmente ai browser di livello 4; ho in mente di creare
automatismi che consentano di giocare un'AT via JS dai brower
successivi a lynx in poi, ma non è facile.
- JS è un groviglio di funzionalità e risorse atte a girare sotto un
"ambiente browser". sto dicendo che è un linguaggio pensato per
Internet, e dunque -- conseguenza inevitabile -- programmate un'AT in
JS e potrete farla giocare a tutti sulla rete, senza necessità di
scaricare un listato (magari arricchita da una conversione ibrida in
PHP -- PHP e JS sono + o - speculari nella sintassi, ma il primo,
essendo lato server e dunque non avendo vincoli di sicurezza, offre un
supporto per i file da capogiro, senza necessità di scomodare i
cookies).
- programmare in JS è Standard con la maiuscola: non è un linguaggio
di scripting esoterico. JS si sforza di essere logica pura, e un
codice sorgente è "esportabile" su altre piattaforme nella misura in
cui è comprensibile ai più: diviene più facile il porting di listati
JS su altre macchine e l'implementazione con altre tecnologie. perché
i linguaggi, come i libri, si parlano fra loro...
- grazie all'indipendenza dal browser-interprete, JS offre un
ulteriore vantaggio: i listati occupano nulla in termini di Kbyte
(salvo l'aggiunta di contenuti multimediali). programmate un'avventura
sterminata e gioite alla prospettiva di poterla distribuire su un
unico dischetto da 3,5... :)
- infine, JS è gratuito. è tecnologia alla portata di tutti.
altri crediti:
- devo a IDRA l'avermi fatto distogliere da un pregiudizio che
rischiava di farmi trascorrere qualche mese in apnea da programmatore:
anziché creare funzionalità if/then da zero destinate a gestire i
processi logici dell'AT in sé, farò girare quest'ultima attraverso gli
operatori standard di JS, ovvero il codice di questa non sarà
sviluppato in un formato a sé stante, ma farà parte integrante del
codice JS: tradotto in guadagni, vuol dire tonnellate di codice in
meno e maggiore rapidità di esecuzione.
- sto cercando di fare tesoro dell'arte sottile di Colombini nel
gestire i "luoghi" di una AT come se fossero *function* JS
indipendenti: soluzione comoda nella fase di editing, x meglio
organizzare la struttura logica dell'*include* .js che conterrà l'AT
di volta in volta caricata nel sistema.
// torcibudella
mi spiace per gli affezionati allo spirito dell'informatica libera (me
per primo), ma ho cominciato a lavorare su questa cosa (e sto postando
questo msg) sotto Win ME -- scrivo da un'installazione di fortuna, un
po' scassata ma tutto sommato funzionante (per la cronaca, Win ME è
quel s. o. che nasconde la shell del DOS fra gli "Accessori"...)
ho la partizione ext2 momentaneamente fuori servizio per manutenzione
e cambiamenti radicali, e nel mentre sto portando avanti dei lavori
sotto tecnologia proprietaria MS (mi pagano per farlo, e ho bisogno di
$). insomma, mi occorre tempo x reinstallare il pinguino: mi sarebbe
piaciuto cominciare romanticamente con Netscape sotto GNU/Linux e
finire con IE, non il contrario; btw, sto programmando con un editor
che è poco + di un Notepad :)
i pezzi di sorgente alpha "sporco" che distribuirò tra 1 settimana
saranno dunque momentaneamente pensati per IE 5 (= funzioni
proprietarie Bill Gates + JS ultima versione), così come li ho
programmati in questi gg -- ora non ho tempo né energie x badare alla
compatibilità tra browser.
un esempio banale: attualmente faccio uso, per comodità, della
funzione avanzata "split" x smembrare pezzi di stringa in un array,
che in futuro sarà affiancata da codice equivalente per le versioni
precedenti di JS.
mi occorre giusto un sistema funzionante, dal quale cominciare a
programmare una piccola AT di prova che mi aiuti a risolvere i
problemi man mano che si presenteranno. al resto penserò strada
facendo: per prima cosa l'essenziale; se decidessi di complicarmi la
vita adesso, nel giro di due settimane sarei un programmatore morto.
altro esempio: in questi giorni il torcibudella di turno ha assunto le
sembianze del comando di IE sotto JS "insertAdjacentHTML", che a dire
il vero fa esattamente quel che dice di fare: magicamente, può
aggiungere in coda a una pagina HTML delle righe di codice *senza*
effettuare il refresh della stessa (il che, in un'AT, comporterebbe
fastidiose lungaggini e soluzioni poco eleganti). ho trovato del
codice di fortuna che emula questa funzione di IE sotto Netscape 6, ma
ancora nulla da fare x i "vecchi" browser (mi interessa in primo luogo
Netscape 4, che è standard in molte distribuzioni GNU / Linux).
se qualcuno ha un'illuminazione, punti la torcia anche da questa
parte. non sono mica un guru, e non mi vergogno di mostrare codice
incasinato. in fase di testing, tutto l'aiuto sarà il benvenuto.
accetto anche parti di codice riscritte/ottimizzate da voi :)
cmq tutto sarà + chiaro tra una settimana.
un saluto. e grazie.
chiedo scusa x il tono saccente di alcune mie affermazioni.
(sono solo un cazzone che ama la follia e la libertà dei computer)
happy hacking!
Lord 2023

belli :)
[cut]
Benvenuto tra noi! spero che il soggiorno sara' piacevole e proficuo come
immagini :-) In bocca al lupo per il tuo progetto. Mi permetto solo di
ricordarti che scrivere un'avventura e' molto + un lavoro da autori di
storie che da informatici. Sono state scritte ottime avventure anche in
Basic e in Quill, con grande delizia generale! L'importante IMHO e' che la
trama/storia/scopo del gioco sia coinvolgente e che il gioco a incastro dei
vari enigmi/puzzle funzioni a dovere.
Ciao,
Marco

lavoro da autori di storie che da informatici.
sottoscrivo. anzi, è compito di noialtri semplificare l'accesso alla
tecnologia a chi informatico non è, e sogna di scrivere un'AT.
ps:
a dire il vero sono un informatico per metà, o un "informatico in
multitasking". a parte 18 anni di passione x le macchine e l'amore per
la telematica, per il resto ho una preparazione classica, e una laurea
in discipline umanistiche -- anche se questo non significa granché; ho
studiato storia, politica e sociologia... per finire con il
trascorrere buona parte del mio tempo a programmare, girare per
Internet e scrivere per il Web. è un mondo meraviglioso :)

 meno e maggiore rapidità di esecuzione.
Sapessi quanto tempo mi ci e' voluto per arrivare a quel punto... e dire
che era poi la tecnica con cui ero partito nei primi anni '80! E quando
poi scrissi un interprete specializzato credevo di essere intelligente
;-) Ma fare e capire cio' che si fa non sono la stessa cosa...
Il tuo messaggio e' *molto* interessante e penso di poter dare qualche
piccolo contributo. Non certo di tecnica programmatoria (e' palese che
non ne hai bisogno) ma nell'ultimo anno ho indirizzato qualche
pensierino verso la direzione che vuoi seguire, e penso di avere qualche
spunto di idea organizzativa che forse ti potrebbe essere utile (magari
solo come base da criticare).
Mi sono purtroppo dovuto rendere conto che non ho sicuramente tempo di
sviluppare queste idee, e mi farebbe piacere che non restassero li' a
biodegradarsi :-)
Il discorso e' un po' complesso e, ahime', in questo periodo ho
pochissimo tempo... magari sentiamoci via email, se ti va [occhio
all'antispam nell'indirizzo].
  .Erix.

 convinto si possa fare. ci sto provando.
Hem. Com'e' una avventura testuale senza parser, e giocabile con un click ?
Associo inevitabilemnte "click" a "mouse", ma anche se cerco di non farlo
la cosa mi risulta un po' ombrosa.
Ciao :)

> Hem. Com'e' una avventura testuale senza parser, e giocabile con un click ?
Ad esempio "Una storia di campagna" di Andrea Angiolino
(
http://www.erix.it/idra.html).
.. anche se in questo preciso momento il
sito non risponde.
Il fatto che USDC sfrutti in minima parte le caratteristiche 'dinamiche'
di Idra (le scelte dipendono dall'andamento del gioco) non e' colpa di
Andrea, dato che in origine era un racconto-gioco su carta. Pero'
qualcosina si vede.
  .Erix.

solo come base da criticare).
d'accordo, sei molto + che benvenuto. se per te va bene, possiamo fare
così: distribuisco on-line una piccola demo di un'avventura di esempio
non appena posso (bewaaareee!! unstable alpha version!!), così
possiamo avere qualcosa di "materiale"  su cui discutere.
grazie ancora per il sostegno. see you.
happy hacking!
L2023

la cosa mi risulta un po' ombrosa.
provo a spiegarmi. :)
immagina un'esplosione su una nave. i passeggeri cominciano a urlare.
panico... tu sei a bordo, e sei un clandestino...
"Sei intrappolato nella stiva della nave, circondato da vecchi barili
di legno.
Che cosa fai?
[]"
beh... in una situazione tanto rischiosa quanto laconica, non ti resta
che rimboccarti le maniche della camicia (ovviamente sudicia e
strappata) e cominciare a provare, da avventuriero navigato:
"esamino stiva"...
"esamino barili"...
ed è chiaro che -- se vorrai avere una minima possibilità di salvare
la pelle -- non ti passerà per la testa di tentare espedienti del
tutto fuoriluogo quali:
"esamino elefante"...
"esamino lanterna".
perché nella stanza non c'è nessun elefante, e non c'è nessuna
lanterna. anzi, è probabile che, considerata la descrizione
dell'ambiente che ti ha fornito la macchina, le uniche "parole
sensibili" (o "parole chiave", o "parole calde", o "magic words" o
quellochepreferisci) siano:
"stiva"
"nave"
"barili"
le avventure testuali sono universi *testuali*, mondi di solo testo;
il testo è tutto e tutto quanto è testo; e allora le parole (ci cui è
composto il testo) diventano pressoché il mondo intero.
se le cose stanno così, logicamente l'attenzione del giocatore
dovrebbe restare sempre "puntata" in prossimità delle parole che legge
sullo schermo (puntare... puntatore... pulsante... click...!) -- non
certo sul prompt dei comandi, o peggio che mai sulla tastiera; e
comprendi che usare un mouse oppure usare una tastiera non è la stessa
cosa.
per chi magari è un sysop ed è abituato a digitare sui tasti i comandi
del "parser" di una shell, diventa sicuramente semplice, immediato e
soprattutto *logico* digitare cose come "x stiva" [invio]...
... perché in fondo "x stiva" [invio] non mi sembra granché diverso
dallo scrivere  "ls /home" [invio], oppure "dir c:\documenti"
[invio]...
e quando dico "digitare x stiva", intendo:
1) senza neppure guardare la tastiera;
2) senza distogliere gli occhi dalla parola "stiva".
diversamente, le cose cambiano per un utente cresciuto nell'era dei
computer ottusi e dopati  (ovvero nel regno di Bill).
la mancanza di dimestichezza con la shell, tanto cara ad
amministratori di sistema e appassionati, può sicuramente
rappresentare una delle cause della difficoltà dell'approccio
"solo-testo" -- e fino a ieri l'utente medio, inchiodato alle
workstation Microsoft, cliccava molto e interagiva poco via tastiera;
al contrario, oggi grazie ad Interent alcuni hanno cominciato a
scoprire chat e forum -- l'ha scritto qualcuno nel ng, ed è vero.
hai mai visto un utente alle prime armi, o in generale qualcuno
imboccato per anni da Bill a cucchiaiate di click, mentre tenta di
interagire con una AT? :) ecco come si comporta di solito:
1) legge la descrizione testuale del luogo in cui si trova.
2) individua in essa l'"area testuale" o la "parola chiave" con la
quale decide di interagire.
3) dopodiché scorre il testo con gli occhi sino ad arrivare al prompt
dei comandi, dove c'è  il cursore che lampeggia, distogliendo
l'attenzione dalla parola.
3) a questo punto, sposta altrove l'attenzione ancora una volta,
puntandola sulla tastiera, perché ha bisogno di guardare i tasti per
scrivere; e la tastiera non è certo un mouse: richiede molta +
dimestichezza, specie per chi è abituato a cliccare ovunque.
4) fa il ballo di San Vito spostando di nuovo l'attenzione dallo
schermo (prompt) alla tastiera (tasti), mentre verifica la correttezza
di quanto scrive -- e intanto non guarda più alla parola.
5) quando alla fine batte INVIO, salvo errori di battitura, ha quasi
perso l'orientamento, oltre a sentirsi un po' più affaticato e -- in
un universo utenti dominato dai sistemi Desktop -- terribilmente
*lento*.
perché in realtà impostare comandi su una shell diviene un metodo
efficiente di interazione soltanto se sei in grado di scrivere veloce
e sicuro come un fulmine, con pochi errori di battitura e senza
pensarci troppo sopra -- altrimenti è un procedimento di un impaccio
mortale: stanca e affatica (anche fisicamente).
risultato: senso di claustrofobia da Avventura testuale, confusione.
eppure quello stesso utente è, ai nostri giorni, perfettamente in
grado di cliccare su Internet: l'informatica di massa ha insegnato a
tutti a cliccare dappertutto, e l'utente medio ha imparato a farlo
bene.
ma tu metti di fronte a un utente digiuno di shell un'Avventura
testuale, e sarà sconcertato dalla sua incapacità di... di giocarvi;
come diceva quello: "just another luser trapped in a shell !".
il mouse è decisamente più rilassante. quanti fra voi *guardano* il
mouse mentre lo usano? quanti invece sbirciano almeno un pochino la
tastiera mentre fanno altrettanto? ;)
se vi è qualcosa  che aiuta l'utente a mantenersi concentrato su un
punto X dello schermo (e quindi su una "parola") e a non perdersi nei
pixel, è proprio il tipico "puntatore a freccia" mosso tramite il
mouse; in ogni istante, come un segnalibro ti ricorda "dove sei".
e allora, soluzione sperimentale ma (credo) possibile: trasformare
un'avventura testuale in una sorta di "sito", sforzandosi di
preservare l'ampiezza di scelte possibili supportata dalle migliori AT
in circolazione.
risultato: se la teoria non è troppo bacata, l'utente medio apre per
caso un'AT realizzata in questo modo e... e a un tratto comincia a
cliccare, come gli è familiare... e clicca di qua, clicca di là... sa
già come muoversi, è abituato a farlo con Windows... anzi, si sente a
suo agio proprio come in un sito Web... un sito che sa già usare, e
quindi un sito facile, un sito in italiano... e s'appassiona. :)
quel che sto cercando di dire, è che ritengo non abbia molto senso
costringere un novizio assoluto a digitare in continuazione "esamino
COSO" ed "esamino COSA" (o, ancora meno intuitivo, "x COSA" e "x
COSO"...) -- se potesse cliccare su una parola, sarebbe tutto più
facile.
la prima (o seconda) regola dell'"usabilità" di un'interfaccia utente,
è la sua stabilità, ovvero la ripetitività di simboli e procedure
associata all'esecuzione di un insieme di azioni codificate: un'AT
"punta-e-clicca", avrebbe in teoria una curva di apprendimento assai
bassa, rispetto a una via tastiera.
per non parlare della necessità di memorizzare dei comandi fissi per
poi doverli digitare senza alcun suggerimento: "esamino", il più
classico di tutti, a me ricorda ospedali e ambulanze... mentre "guardo
albero", in sé, non significa nulla, se non ti hanno insegnato (o
suggerito attraverso un percorso guidato,  intuitivo per definizione)
che l'azione equivale a dire: "mi avvicino all'oggetto, e poi guardo e
cerco di apprendere, approfondendo la conoscenza di qualcosa".
punto e clicco: un metodo più semplice... più veloce... e naturalmente
più "alla portata di tutti". in questo modo, si può anche evitare la
mortale "caccia al verbo / caccia alla parola" -- quella trappola
capace di scoraggiare un potenziale giocatore di AT nel raggio di un
chilometro (e mi sono mantenuto basso).
immagina allora, ancora una volta, un'esplosione su una nave...
... e anziché scrivere "esamino barili", tu, mentre leggi il testo
sullo schermo e senza distogliere l'attenzione dalla parola "barili"
appena letta, ti accorgi (per esempio) che questa è "sensibile" al
passaggio del mouse, e -- presa la decisione di interagire con i
barili -- semplicemente, ci clicchi sopra fiducioso.
nessun errore, nessun "non ti capisco", nessun possibile refuso di
battitura. in prossimità della parola, compare un menu del tutto
simile a quelli con cui l'utente è abituato ad interagire: su Windows
(per es., la funzione "popup" del tasto destro del mouse) come su
Internet (la tipica "barra di navigazione" dei siti):
... barili ... <-- [click]
- esamino <-- [click]
- sposto
e, se vogliamo complicare le cose, anche:
- apro
- rovescio
- rompo
...
la macchina esegue diligente, e senza indugio risponde:
"> esamino barili
non noti nulla di particolare, se non l'odore penetrante del pesce di
cui sono saturi."
a questo punto, l'attenzione del lettore/giocatore sarà naturalmente
"puntata" (click... click... click...) sulla nuova frase, che ha
appena terminato di leggere seguendone con gl iocchi le parole che la
compongono  (anzi, magari l'ha letta giocherellandoci sopra con il
mouse).
a questo punto, potresti, per esempio:
1) spostare l'attenzione "indietro di una riga" verso l'alto e
provare:
... barili ... <-- [click]
- esamino
- sposto <-- [click]
"> sposto barili
decisamente troppo pesanti. Meglio lasciar perdere."
2) oppure proseguire, interagendo con le nuove "parole sensibili":
... pesce ... <-- [click]
- esamino
- prendo <-- [click]
- mangio
"> prendo pesce
dopo aver frugato coraggiosamente nel barile più vicino, ti infili in
una tasca un po' di sardine maleodoranti."
che altro?
adesso potresti scoprire che l'unica "parola sensibile" contenuta
nell'ultima frase riportata è "sardine" -- con questo sistema, fra
l'altro, il programmatore evita parecchia fatica nel gestire risposte
per comandi che ha deciso essere non influenti,  come, per esempio,
"esamino tasca", "vuoto tasca", "sposto barile [più vicino]" ecc.
oppure potresti decidere di chiedere l'Inventario -- cliccando
sull'icona colorata corrispondente, o premendo il tasto "i":
"> inventario
Indossi una camicia e dei pantaloni logori. Hai con te alcune
sardine."
cliccando su "sardine" (definito naturalmente come sinonimo di
"pesce"), scoprirai che la situazione è appena cambiata:
... sardine ... <-- [click]
- esamino
- lascio <-- [click] ... nota: comando in precedenza non attivo ...
- mangio
... nota: è scomparso il comando "prendo" ...
"> lascio sardine
Decidi di non averne più bisogno. Le rimetti al loro posto."
benone. ora probabilmente la pagina all'interno della quale stai
"giocando" è "scrollata" in verticale verso l'alto, facendo scomparire
il testo che descriveva l'ambiente circostante. risultato: non ricordi
più tanto bene con cos'altro potevi interagire nella stiva.
riottenuta allora la descrizione della "stanza" -- premendo "l" o "g"
o, meglio, selezionando un'icona oppure, meglio ancora, semplicemente
tornando indietro facendo scorrere la"rotellina" del mouse (metodo +
intuitivo per chi usa il Web) -- mentre la rileggi avrai già la
possibilità di continuare a "cliccarci sopra", senza per altro dover
passare alla tastiera e poi di nuovo al mouse, che magari hai appena
utilizzato per "scrollare".
insomma, ti posso dire che ho provato e sto continuando a testare
questo genere di approccio... e benché presenti dei limiti e dei però,
credo possa rivelarsi tutto sommato abbastanza funzionale e versatile,
e allo stesso tempo sufficientemente "potente".
per concludere, altri esempi e qualche considerazione:
non è poi vero che un'avventura testuale "punta-e-clicca" sia
nettamente più "facile", meno "reale" o meno "intensa": anche se le
principali azioni (verbi cliccabili) sono immediatamente visibili,
l'utente dovrà pur sempre districarsi in mezzo a una quantità
crescente di possibilità mutevoli -- giacché le azioni che è possibile
intraprendere, cambiano di pari passo con quelle già compiute...
... al punto tale che l'utente potrebbe sentirsi portato -- sempre che
l'avventura segua una logica intuibile -- a non tentare neppure le
combinazioni che appaiono improbabili a prima vista, e concentrarsi
invece su quelle più interessanti: che me ne faccio di spostare un
barile, se m'interessano le sardine poiché ho fame? (l'importante è
garantire sempre ampia possibilità di scelta).
insomma, la questione è amletica: cosa pensi si possa fare con... una
pala? (a parte usarla in modo creativo per soddisfare appetiti
sessuali di frangia, direbbe credo l'autore di NSUA :) 
con una pala si può, nel 99% dei casi:
- scavare [con la pala... da qualche parte];
- lanciare [la pala... contro qualcuno/qualcosa]; 
- rompere [la pala... o danneggiare qualcosa/qualcuno con la pala];
- smontare [la pala]
- lasciare [la pala]
immagina allora di andartene in giro per l'avventura con una lista di
oggetti (richiamabili tramite Inventario o visibili sullo schermo
sotto forma di icone o in semplice formato testuale); ciascun oggetto
potrà assolvere alle funzioni logiche che l'autore ha programmato; e
ogni singolo oggetto potrà essere "combinato" (usato con)  altri
oggetti o con elementi dell'ambiente circostante.
è qui che l'avventura si complica e l'interazione si arricchisce:
l'approccio "punta-e-clicca" in una AT può riuscire, secondo me, a
rendere il gioco più immediato e allo stesso tempo più profondo di
quanto non avvenga in una Avventura *grafica* ultima generazione, dove
di norma un oggetto può assolvere a giusto un paio di azioni.
torniamo all'esempio della pala.
se io voglio scavare nel giardino, clicco su "pala" nell'inventario,
poi clicco su "scavare..." nel menu a comparsa per l'oggetto "pala" [i
puntini aggiunti indicano la necessità di combinare il verbo con un
secondo sostantivo]... magari adesso il puntatore del mouse cambia
forma e trascina la parola "pala" sullo schermo per sottolineare il
processo... io allora clicco sulla parola "giardino" che ho letto sul
testo dell'avventura, e il sistema comprende al volo:
"scavo [nel] giardino [con la] pala"
al contrario se clicco su "pala" e poi scelgo "lascio", non vi sarà
bisogno di specificare un secondo sostantivo... a meno che non si
programmi la possibilità sia di lasciare un oggetto in un luogo
imprecisato, sia di lasciarlo/posarlo "su qualcosa": a livello di
interfaccia utente, il procedimento sarà speculare a quello
considerato sopra (magari aggiungerò accanto a "lascia" il sotto-menu
a comparsa "sopra..." -- non è difficile... se avessi una matita, ti
farei un disegno :)
stesso dicasi per comandi esoterici come "elemento -> guardo [esamino
in generale l'oggetto] -> sotto... [richiede un sostantivo in più:
guardo SOTTO l'elemento specificato]". e così via.
in aggiunta, vi è anche la questione del personaggio che gioca, ovvero
il protagonista "fittizio" dell'avventura -- uno tipo come Arsenio
Lupini, insomma.
immagina,in un angolo dello schermo, un'icona che rappresenti
quest'ultimo: potrai usarla per ampliare ulteriormente la rosa delle
scelte a tua disposizione durante il gioco; per esempio:
a) clicco sul personaggio e, accanto all'immagine, si materializzerà
il solito menu a comparsa con le seguenti azioni possibili:
- esamino [ me stesso]
- aspetto
- dormo
- urlo
... ecc.
e qualora invece mi volessi sedere sopra una sedia...? allora meglio
cliccare su "sedia" e -- a parte "esamino", "prendo", "rompo" e
"sposto" -- ci potrà essere anche "mi siedo". in breve, è possibile
rendere l'interazione man mano + ricca e completa.
stesso discorso per gli NPC, i "non giocanti": clicco su "tizio" e mi
compare "esamino", "saluto", "parlo"... o anche "chiedo [a proposito]
di..." (e poi clicco su "pala" -- o su me stesso -- e quello mi dirà
pur qualcosa, o non ne vorrà sapere di fare commenti).
dimenticavo: in aggiunta, l'oggetto "pala" potrebbe richiamare azioni
(magari separate nel menu a comparsa da una riga orizzontale per
meglio distinguerle, e -- chissà -- affiancate da un'icona) come:
"do...", "mostro..."... che si applicano agli NPC. e così via.
l'Avventura più bella del mondo (così come il sito Web che "funziona
veramente" e fa il pieno di visite), è l'Avventura dove ti dimentichi
dell'interfaccia utente e pensi solo a FARE -- esplorare la stiva di
una nave così come la vetrina di un sito di commercio elettronico.
a suo  tempo (anni '80) sono state programmate AT con parser
"punta-e-clicca" (ultime cartucce di un mondo progressivamente
tagliato fuori dal commerciale), ma di tipo differente... di modello
"pre-Internet", si potrebbe dire. le quali -- davvero -- non
funzionavano.
non funzionavano perché, di nuovo, si svincolava l'utente dalla parola
letta, per traghettarlo verso liste improbabili di verbi -- fisse e
immutabili -- riprodotte in un angolo della pagina. l'utente era
costretto a scorrere elenchi non personalizzati secondo l'occorrenza,
e poi scegliere il verbo più adatto per cercare di fare questo e
quell'altro, senza alcuna garanzia di successo.
risultato: confusione. se hai esperienza di questo tipo particolare di
avventure, non faticherai a comprendere la differenza basilare con
l'approccio in stile "sito Web" di cui ho parlato fin qui.
immagina per esempio di cliccare con Windows 95 sull'icona di un file
che compare sul Desktop: le azioni che potrai compiere, saranno
giustamente in tema con l'"oggetto" che hai selezionato (il file):
"Apri"... "Copia"... "Incolla"... ecc. tutto chiaro e funzionale -- ma
così non era in quelle avventure della fine degli anni '80, quando nei
S.O. cominciavano a  vedersi le prime icone e i primi menu a tendina.
in realtà erano ancora molto legate alla shell di comando: così
cliccavi su un oggetto "file" e ti compariva accanto l'INTERA lista
dei comandi della shell! -- fuori di similitudine: tutti i verbi di
questo mondo, possibili e impossibili, elencati in modo
indiscriminato.
d'accordo, ho finito di ammorbare l'umanità. torno nelle mie stanze :)
grazie Fabio x lo spunto di riflessione.
Lord 2023

 indiscriminato.
io penso (se non si fosse capito) che è più bello usare il verbo che si
vuole piuttosto che quello suggerito dal computer. Se sono davanti ad una
porta voglio poterla aprire, sbattere, bussare, abbattere, grattare,
leccare, scardinare, serrare, puntellare, bruciare ecc ecc
Non so quindi se sia giusto esaurire il vocabolario a pochi verbi.
Ciao

Dopati lo capisco... ottusi invece che vuol dire?
<OT>
"dopati" = carichi di hardware non sfruttato all'osso, come invece
accadeva ai tempi dei computer Commodore. per dirne una, io non ci
credo che Windows XP, per far girare un sistema Desktop, necessiti di
tutte quelle risorse; ci vedo qualcosa di sbagliato, di spudoratamente
commerciale -- e la lista è lunga. non sono contrario al mercato, ma
usando Windows, mi sono sentito tante volte preso in giro -- per
esempio, ciò che oggi Microsoft chiama "rivoluzione XP", in buona
parte è la correzione di vistosi bug di stabilità dei s.o. precedenti,
venduti all'epoca come "realmente multitasking".
"ottusi" = sistemi operativi progettati per gli utenti che non vanno
al di là del pacchetto Office; ambienti che non ti fanno fare ciò che
vuoi, non pensati per l'utenza esperta/esigente: per esempio, vi è
un'abisso tra una shell di una distribuzione GNU / Linux (= libertà
totale) e... un Desktop Microsoft, vincolato fino al punto da
chiederti SEMPRE conferma, che tu lo voglia o non lo voglia, anche
solo per la cancellazione di un file. Windows è un sistema operativo
blindato. non ne critico pregi e potenzialità; è piuttosto un'annosa
questione... mmm...  "etica" direi; etica e di puntiglio. :)
va bene, va bene... lo ammetto: come del resto parte della mia
generazione di appassionati di informatica, sono anch'io una specie di
nostalgico settario, che guarda con sospetto tutto quel che propina un
certo tipo di mercato informatico. a torto o a ragione. per renderti
l'idea, in poche righe, del clima in cui sono cresciuto, il mio
migliore amico, che per vivere scrive sistemi rigorosamente testuali
per gestire intranet, un paio di gg fa mi ha comunicato questo:
"Per quel che mi riguarda se ne possono andare tutti allegramente
[BIP!], tanto mai ne ho comprato e mai ne comprero' impriastate della
microsoft, secondo me e' gia' tanto che saltuariamente le usiamo,
dovrebbero pagarci loro per questo, no?
Poi se riescono ad estrappolarmi qualche dato dal computer alla magica
velocita' di 2400/9600 bps [per le cose private, si collega da un
portatile con shell testuale GNU / Linux + cellulare] beh beati loro,
che solo per gli upgrade di IE5 ogni tanto mi spara "Il tempo di
dowload previsto e' di 5 ore 20 minuti". Ma alla microsoft lo sanno
che il resto del mondo e' normale?"
per lui "normalità" è vivere la passione per i computer nutrendoli con
idee e software... "sinceri", e anch'io sono d'accordo. cmq è vero che
qualche volta parlo come Bill Gates. :D parlo così al lavoro. scrivere
un'Avventura testuale, è per me una specie di esercizio spirituale da
sciroccati --  un ascensore verso la purificazione spirituale. ^___^
</OT>
più sotto, quando ho descritto l'uso "fantozziano" di una "shell" da
parte dell'utente inesperto, beh, credo che il pregiudizio mi derivi
in parte dal senso di inadeguatezza che ho provato ogni qual volta ho
visto qualcuno che, anche se in gamba con Office e simili, trovava
mortalmente difficile e aliena l'interfaccia testuale di una Avventura
su computer -- e l'ho visto faticare e arrancare con estrema lentezza,
quanto un utente di Office che oggi provi a districarsi con un word
processor come Emacs --  al punto da rispondermi: "Tu sei pazzo a
perdere tempo con questa roba vecchia e ingiocabile, con quello che
c'è in giro. tu sei pazzo! pazzo! viva Windows XP! Windows XP per
tutti, per TUTTI !".
io "quel che c'è in giro" l'ho visto: bello -- ma a me piacciono anche
i "misteri testuali"; perché sono in grado di trasformare un computer
in una macchina... totalmente... spirituale. e non è da tutti. :)
</OT>
al resto OT risponderò nelle prossime puntate; vorrei rifletterci un
po' sopra. grazie x l'incoraggiamento, e per la sincerità :)
L2023

 sullo schermo
la parola chiave, qui, è "puntare": sei tu autore che, evidenziando la
parola, "punti" l'attenzione del giocatore. Lo indirizzi, gli fai capire
quali sono, in quella stanza, gli oggetti con cui interagire. Ci sono
giocatori, però, che preferiscono capire da soli, dopo vari tentativi (anche
vani), cos'è importante e cosa no. Le avventure classiche gia' evidenziano
questi oggetti staccandoli (con un invio) dalla descrizione. Un'idea
potrebbe essere "evidenziare" certe parole solo *dopo* aver compiuto
determinate azioni o preso determinati oggetti (la parola giardino si
evidenzia dopo aver preso la pala e mi fa capire che, a quel punto, posso
scavare).
Inoltre:
[SPOILER di Deadline e Hitchiker's Guide to the Galaxy]
Deadline
a un certo punto del gioco, è importante seguire una determinata persona per
scoprire qualcosa di interessante. Beh, l'idea di "seguire" quella persona
e' la soluzione dell'enigma: un enigma logico, intelligente che da' enorme
soddisfazione al giocatore che lo risolve (soprattutto all'epoca). Se questo
giocatore si trova gia' il verbo "seguire" tra quelli dell'NPC la
soddisfazione e' decisamentre minore e l'enigma perde spessore.
Altro esempio: Hitchiker's Guide to the Galaxy.
All'inizio, per evitare che al protagonista venga demolita la casa, bisogna
"stendersi sulla strada" davanti al bulldozer. Un enigma geniale, non una
caccia al verbo, ma una caccia all'"azione", molto meno soddisfacente se il
verbo chiave dell'azione (sdraiati) compare in un menu.
Ci sono, poi, avventure che prevedono una lettura attenta delle descrizioni
per individuare le parole-chiave.
[FINE SPOILER]
Il discorso sarebbe lunghissimo, mi fermo. La tua idea, comunque, merita uno
sviluppo. Attendo di vedere una demo.
f.

 po' sopra. grazie x l'incoraggiamento, e per la sincerità :)
Ribadisco: devi portare a termine il progetto, perché mi pare
interessantissimo! Le mie non erano critiche verso il tuo progetto,
tutt'altro. Volevo solo riflettere su alcune questioni.
Ciao

leccare, scardinare, serrare, puntellare, bruciare ecc ecc
sono d'accordo. ti rimando allora al messaggio indirizzato a Francesco
Cordella. nel caso indicato, si potrebbe forse risolvere nel modo
seguente:
[porta]
-esamino
- apro [oppure "chiudo", se è già aperta]
-busso
-altro...
le prime 3 azioni sono quelle "standard", quelle che un porta non può
non mettere a disposizione. con "altro...", invece, il sistema apre
una finestra di prompt e chiede di inserire un verbo. l'autore
dell'avventura potrebbe a questo punto definire sinonimi per uno
stesso verbo.
anzi, ora che ci penso... potrei programmare l'aggiunta automatica, in
coda a ciascun "menu a comparsa", di una riga di prompt con cursore
(tecnicamente, è una sciocchezza: pensa ad una tipica Form HTML per
l'inserimento di dati): anziché cliccare su "altro...", l'utente
clicca direttamente all'interno del campo e scrive il verbo non
presente nell'elenco fornito dal menu. mumble, mumble.
hh
L2023

:
btw Barabert (riprendo quanto ho letto tempo fa nel ng)
un'Avventura testuale scritta in JavaScript (linguaggio di scripting
interpretato ma non compilato = codice sorgente a disposizione di
tutti), se vogliamo, la possiamo anche... "abbastanza cifrare" :)
se io per dire ho un codice "commentato" e "in chiaro" del tipo...
// ----------------------------------------------------------
function giardino()
// ----------------------------------------------------------
{
   // Questo è il giardino, il primo luogo dell'avventura
   Stampa ("Ti trovi nel giardino.");
   Variabile("ho visto il giardino") = "si";
}
...lo posso far diventare (tramite facile programma esterno adibito
allo scopo), per esempio (solo un esempio) in qualcosa del tipo:
function werceeqq(){mommo
("NUI$(voqtreqzzxonezwer34xxN");erqweqew("werrqqweqqwe")="xa";
dopodiché, una funzione apposita "nascosta" nel codice del sistema si
occuperà di effettuare le conversioni del testo compreso fra
virgolette e di trattare il resto durante il gioco.
credimi: il 90% degli utenti non riuscirà a spulciare fra i testi
dell'avventura; il restante 10%, non avrà voglia di spendere ore a
scrivere un "decifratore" solo per leggere qualche riga di testo.
e tu cambia la chiave di codifica per ciascuna avventura che scrivi (e
magari scegli l'algoritmo di codifica che preferisci da una lista di
4), e complicherai ulteriormente la vita a questi ultimi.
eheh
eheheh
happy hacking!
Lord 2023

Lord 2023 (x@x.x) wrote:
: provo a spiegarmi. :)
: immagina un'esplosione su una nave. i passeggeri cominciano a urlare.
: panico... tu sei a bordo, e sei un clandestino...
: "Sei intrappolato nella stiva della nave, circondato da vecchi barili
: di legno.
: Che cosa fai?
[...]
Mi sento quasi in colpa per il fatto di rispondere in maniera
relativamente concisa al messaggio lungo e dettagliato di Lord 2023. Il
fatto e` che mi piace molto il suo modo di argomentare, di fare esempi
etc., ma sono in quasi completo disaccordo con lui.
   Tanto per cominciare, credo che tenda a sottovalutare, non dico
l'utente medio di Windows, ma quanto meno chi decide di avvicinarsi alle
avventure testuali. Chi lo fa, avra` un minimo di dimestichezza con la
lettura (e quindi non perdera` immediatamente il filo del discorso se
allontana lo sguardo per un attimo dal testo), e magari anche con la
scrittura.
   E poi, il funzionamento cosi` come e` descritto ha suscitato in me
un'obiezione gia` ben descritta da Francesco: alcuni degli enigmi piu`
belli si risolvono capendo l'azione da compiere, non perche' si usa un
verbo strano, ma proprio perche' bisogna farsi venire l'idea giusta sulla
cosa da fare. Se tutte le possibilita` sono gia` elencate, questo si perde
interamente. Gli esempi che fa Francesco mi sembrano molto calzanti.
Ciao, e comunque buon lavoro,
							Daniele



interamente.
rimandandoti alla risposta a Francesco, aggiungo ora due piccoli
spunti di riflessione, sotto forma di domande:
1) prima domanda: considerato che mi è capitato di vedere in giro
avventure che possono essere risolte impartendo comandi molto semplici
-- come "prendo", "esamino", "lascio", "entro", "apro" ecc. -- se
implementassi un sistema "punta-e-clicca" per gestire il loro
inserimento, un'avventura di questa semplicità ne verrebbe snaturata?
2) seconda domanda: assodato che l'approccio via tastiera a
un'avventura testuale è, invero, abbastanza complicato per un nuovo
utente, possibile che non si riesca ad escogitare un sistema che
agevoli l'inesperto, o il giocatore pigro ed occasionale, nella
scoperta di un mondo nuovo e potenzialmente meraviglioso?
sto dedicando più tempo al ng che alla programmazione -- torno a
immergermi nella seconda. grazie x le dritte costruttive :)
L2023
Out of the silent planet we are...
Come the Demons of Creation. 

 scoperta di un mondo nuovo e potenzialmente meraviglioso?
appena lo scovi, possiamo metterci nel business dei word processor che non usano tastiera.
Word 2001 "the easy way" - mia madre lo compra di sicuro...
ciao
S

avventure testuali. al più librogame elettronici.
per come la vedo io, esiste solo "fiction interattiva" -- ovvero
storie raccontate in modo interattivo, dove il lettore compie delle
scelte.
e queste scelte possono essere libere o non libere, limitate o ampie
-- è il libero arbitrio.
da qui, "avventure testuali" è un'espressione con una lunga storia
alle spalle, destinata a descrivere un genere abbastanza specifico di
"fiction interattiva"; "librogioco", idem.
ciò che ho in mente, è appunto raccontare una storia, e permettere al
lettore di prendervi parte, in un modo o nell'altro -- il resto è in
secondo piano.
c'è chi ama fare una passeggiata in giacca e cravatta, chi in
maglione, chi in jeans e maglietta: quel che è certo, è che tutti
stanno facendo una passeggiata :)
l2023

Ribadisco: devi portare a termine il progetto, perché mi pare
mica ti avevo equivocato :) grazie ancora. a presto (forse stanotte o
domani aggiungo un piccolo... screenshot; così... giusto x tenere
traccia di come le cose crescono, un po' per volta).
L2023

Lord 2023 (x@x.x) wrote:
: 
gew...@giove.mat.uniroma1.it
:
: >Tanto per cominciare, credo che tenda a sottovalutare, non dico
: >l'utente medio di Windows, ma quanto meno chi decide
: >di avvicinarsi alle avventure testuali.
[...]
: gli utenti ultima generazione, quelli che oggi sono su Internet perché
: "così fan tutti", probabilmente non avevano un computer negli anni
: '80; non conoscono in partenza il genere dell'avventura testuale,
: neppure per sentito dire; e non conoscono le shell,
[...]
Si`, hai ragione. Ripensandoci mi accorgo che in un certo senso il
problema e` in me, che in questo tipo di cose mi rivelo un po' snob. Non
mi interessa piu` di tanto, diciamo, la divulgazione, l'incoraggiare i
disinteressati etc. Diciamo che preferirei imparare ad usare bene l'Inform
(o emacs, o magari Vi(m), che preferisco), che non sforzarmi a farlo
conoscere ad altri.
   Ripeto, mi rendo bene conto che sono atteggiamenti snob ed egoistici, e
anzi apprezzo la pazienza di chi cerca modi di venire incontro a chi ne sa
di meno.
: oggi si scrive molto sui concetti di "usabilità", "navigabilità" e
: "accessibilità" dei siti Internet; perché i "siti che funzionano" sono
: naturalmente quelli più visitati -- tant'è vero che oggi è un suicidio
: per uno spazio di commercio elettronico avere un'interfaccia utente
: complicata o lenta, pur basata su tanti bei "click"; [...]
Ma su quello sono d'accordo anch'io! Posso scegliere, e spesso lo faccio,
di impiegare tutto il tempo che serve per imparare un linguaggio di
programmazione, o le funzioni di un programma complesso (o una lingua, o
una teoria filosofica), ma non per capire dove devo cliccare per avere gli
orari ferroviari!
Ciao,
							Daniele

(o emacs, o magari Vi(m), che preferisco)
io amo Pico :)
L2023