Newsgroup: it.comp.giochi.avventure.testuali
Titolo: EAT sul client

Ciao a tutti...
come ben sapete, ho reiniziato lo sviluppo di EAT per renderlo
multipiattaforma...
il python ha vinto a livello di scelta del mezzo per la realizzazione
dell'ambiente autore... mentre, per quanto riguarda l'interprete ho pensato:
chi sul suo pc non ha un browser HTML? così il player sarà in JavaScript
(1.0 - è inoltre richiesto un browser che supporti i frame).
(spero che questo sia vero anche per i palmari, visto che erano usciti nella
discussione)
sfortunatamente, in questo periodo non ho tanto tempo da dedicare
all'apprendimento del python (indi, se qualche anima volenterosa volesse
aiutare... ben venga! ;)... così son partito con la realizzazione
dell'engine javascript.
Al momento è già pronto un primissimo parser per la navigazione tra i luoghi
e la raccolta degli oggetti (diciamo che ho rallentanto un attimo lo
sviluppo a favore della portabilità)
Il poco esistente l'ho testato su IE6, Mozilla 1.4 (win), Mozilla 1.3
(linux), Galeon 1.3.3 (linux), Netscape 7.1 (win)  nei quali gira
perfettamente... e su konqueror 3.1.0 sul quale, invece, non vuole proprio
saperne.
Sarei grato a tutti voi se voleste provarlo su browser diversi (e versioni
diverse) da quelli sopra indicati.
Al momento, poi, mi sono arenato su uno scoglio (enorme e all'apparenza
insormontabile!)... il salvataggio dei dati del gioco... come tutti ben
sanno, per politiche di sicurezza, non è possibile scrivere un file sul
client da javascript...
E' vero che esistono i cookie (lo dimostra anche idra... sebbene sia un
racconto a strade multiple piuttosto che una avventura testuale
"interattiva" come quelle realizzate con inform, tanto per capirci - senza
nulla togliere all'egregio lavoro svolto dall'autore di idra)... ma, ahimè,
hanno una dimensione molto limitata (massimo solo 4kb) e non possono
essercene più di uno per sito...
in breve... sono abbastanza disperato... non mi viene in mente nulla per
permettere il salvataggio della partita (stato degli oggetti, luoghi,
punteggi e quant'altro)!!
accetto ben volentieri qualsiasi suggerimento e scambio di opinioni...
per ora ringrazio tutti per l'attenzione e vi saluto.
ciao,
Francesco

Per chi volesse dare una rapida occhiata e/o volesse provarlo sul suo
browser, l'ho caricato a questa url:
http://www.iafulli.net/EAT/inizio.htm
Nota per gli utilizzatori di Mozilla/Netscape: all'avvio della pagina, la
barra di progressione che indica il caricamento non si fermerà (sembrerà che
la pagina sia ancora in caricamento).
In realtà, una volta apparsa la descrizione del luogo, in alto, il "gioco"
(chiamiamo così queste quattro righe) sarà pronto. Non premete il tasto stop
del browser altrimenti il programma cesserà di funzionare.
Nota per tutti: affinchè il tutto possa definirsi funzionare sul dato
browser devono verificarsi queste tre condizioni:
    - all'avvio, automaticamente, in alto deve apparire la descrizione del
primo luogo (se così non fosse, non funzionano le routine di scrittura a
video e/o l'evento onload del frame);
    - raggiunto il limite inferiore della pagina (ovvero quando il
susseguirsi delle scritte richiede la visualizzazione della barra di
scorrimento verticale laterale) e continuando ad impartire comandi e
ricevere risposte, il buffer di scorrimento deve *automaticamente* scorrere
verso il basso;
    - impartito un comando, il cursore deve tornare nella casella di testo
nel frame in basso.
Qualora una delle suddette caratteristiche non dovesse verificarsi, vi
chiederei la cortesia di farmelo sapere (ovvero di comunicarmi il nome e la
versione del browser utilizzato, il sistema operativo e i/il difetti/o
riscontrati/o).
grazie e ciao a tutti,
Francesco

 "interattiva" come quelle realizzate con inform, tanto per capirci - 
 > senza nulla togliere all'egregio lavoro svolto dall'autore di
 > idra)... ma, ahimè, hanno una dimensione molto limitata (massimo
 > solo 4kb) e non possono essercene più di uno per sito...
Avevo meditato un po' a suo tempo su questo problema (io lavoro poco e 
penso molto... e' piu' comodo). Se ti accontenti del limite di un solo 
salvataggio, i dati di un'avventura classica ci possono stare 
agevolmente in 4K adottando una tecnica di compressione.
Ad esempio, invece di salvare in modo simbolico (es. 
"gatto.luogo=l_cucina") puoi salvare solo gli indici numerici o 
simbolici degli elementi, che consentano poi di individuarli in una 
serie di strutture dati definite nel programma stesso. Convertendoli 
in base 64 puoi usare normali stringhe, prive tra l'altro dei 
caratteri speciali non ammessi nei cookie.
Cio' ha l'inconveniente che il salvataggio non sara' umanamente 
leggibile ne' compatibile con le successive versioni del programma, 
pero' funziona.
Altrimenti ti prendi wxPython e fai un interprete con le finestre 
HTML, dove hai il renderer gia' pronto. Hai molte limitazioni in meno 
e molto lavoro in piu' (compreso quello di convincere gli utenti a 
scaricarsi i due bestioni, Python e le librerie wxWindow).
   .Erix.

Mi chiedevo come fanno a mettere i pezzetti di cioccolato nei biscotti senza
farli sciogliere quando Francesco Iafulli scrisse...
 > chi sul suo pc non ha un browser HTML? così il player sarà in
 > JavaScript (1.0 - è inoltre richiesto un browser che supporti i frame).
:'(
--
Atrus di Myst
"Cos'e` che cammina su quattro zampe, metaforicamente parlando, per circa
venti minuti subito dopo mezzanotte, su due zampe per la maggior parte del
giorno a meno di incidenti, almeno fino all'ora di cena, quando continua a
camminare su due zampe o con l'uso di aiuti prostetici a scelta?"
www.auroraproject.net/blonde
 - Il quinto capitolo è online!

 
www.auroraproject.net/blonde
 - Il quinto capitolo è online!
carino il sito... prima o poi lo vado a leggere :)
ciao,
Francesco

 scaricarsi i due bestioni, Python e le librerie wxWindow).
già... peccato che così torno punto e accapo... a me invece piaceva basarmi
su qualcosa che bene o male in casa hanno tutti (il browser html)... anche
se questo vuol dire non poche difficoltà...
intanto ti ringrazio per la risposta... e nel frattempo (continuando a
ragionare), ti saluto.
ciao,
Francesco

 gran bel gioco myst
con questo te lo sei fatto amico ;-p
Glorf

Mi chiedevo come fanno a mettere i pezzetti di cioccolato nei biscotti senza
farli sciogliere quando Francesco Iafulli scrisse...
 > Perchč ti ho rattristato??
Javascript, ma soprattutto frame.
 >> Atrus di Myst
 > gran bel gioco myst
Compra Uru, allora. :)
 >> "Cos'e` che cammina (snip)
 > cos'č? :)
Ehm! Ma insomma! I classici della letteratura! :D
 >> 
www.auroraproject.net/blonde
 - Il quinto capitolo č online!
 > carino il sito... prima o poi lo vado a leggere :)
Leggi leggi! :D
--
Atrus di Myst
"E basta, me so stufata de sti amori 'che stan nell'aria' e ti cerco,
e non ti trovo, ma tu ci sei, dove vai, sempre con me, io con te
ovunque andrai.. MA CHITTE VOLE!?" - gio da faz
http://legendknights.keenspace.com

 Compra Uru, allora. :)
sarà il mio prossimo acquisto!! ho già l'acquolina!
Giovanni
-- 
Giovanni Riccardi - 
giov...@composizioni.net
 - 
http://www.composizioni.net

 due bestioni, Python e le librerie wxWindow).
si ma poi può impacchettare tutto con py2exe, e usare un installer, a 
questo punto diventa un file windoze di 30 MB e non scandalizza nessuno :)
anzi fossi in lui ne farei un'immagine ISO... sai che impennata nei 
download? :))
ciao
S

Mi chiedevo come fanno a mettere i pezzetti di cioccolato nei biscotti senza
farli sciogliere quando Giovanni Riccardi scrisse...
 > Comunque con un po' di css si riesce a ovviare alla cosa...
Con un po' di css ovvii totalmente ai frame. ;)
Contando che la struttura è offline non penso che se anche ricarichi
l'intera pagina ogni volta diventi qualcosa di così terribile; anzi, se usi
javascript per comandare il tutto non devi nemmeno fare tanti reload.
 >> Compra Uru, allora. :)
 > sarà il mio prossimo acquisto!! ho già l'acquolina!
Io voglio la Collector's edition! E la voglio SUBITO, perché non voglio
perdere il Prologo! :)
--
Atrus di Myst
"A child of five could understand this!  Fetch me a child of five."
http://loreena.terrediconfine.net

 Con un po' di css ovvii totalmente ai frame. ;)
Come fai? La cosa mi incuriosisce. Come passi alla nuova pagina 
l'intera struttura dati (o dove la conservi)?
   .Erix. (ignorante di css)

Mi chiedevo come fanno a mettere i pezzetti di cioccolato nei biscotti senza
farli sciogliere quando Enrico Colombini scrisse...
 > Come fai? La cosa mi incuriosisce. Come passi alla nuova pagina
 > l'intera struttura dati (o dove la conservi)?
Semplice: non passi alla nuova pagina. Rendi display o non-display i dati
che ti interessano al momento.
Se hai una struttura completamente client-side o senza dati che cambiano
dinamicamente si possono mostrare diverse serie di dati senza ricaricare mai
la pagina.
Esempio:
http://www.w3.org/Style/Examples/007/target.html
Chiaramente il trucchetto non funziona se i dati cambiano a livello server,
ma nel caso di EAT si parlava di una struttura totalmente client.
Perché nessuno usa questo trucco magico, tu chiederai? Ovvio: perché non va
su IE, che non riconosce i selettori :target e :not
Ci sono diversi trucchetti javascript simili molto carini che vanno anche su
IE, ma hanno il difetto che richiamare un 'frame' interrompe il preload se
questo non è finito, e questo da dei problemi di visualizzazione se ad
esempio stai caricando delle immagini.
Esempio javascript:
http://www.drcsite.org/sightsSounds.shtml
--
Atrus di Myst
Sondela uSomandla sukuma wena obengezela
http://legendknights.keenspace.com

Bello...
Grazie per la segnalazione.
Rob
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 dinamicamente si possono mostrare diverse serie di dati senza ricaricare 
 > mai la pagina.
Interessante. Speravo di poter eliminare il frame di controllo di 
Idra, ma mi pare di capire che non sia possibile (essendo il tutto 
completamente dinamico).
   .Erix.

 completamente dinamico).
Erix, tempo fa stavo sperimentando con Idra e stavo provando a 
riscriverlo completamente in XHTML + CSS (eliminando anche il frame di 
controllo). Il sistema era praticamente identico, non c'era nessuna 
variazione, tranne appunto il frame. Appena ritrovo questi esperimenti 
te li mando, se vuoi.



Con Opera 7 non si carica nulla, vedo solo in basso una textbox vuoto
e un button [Vai]
bai
t

Mi chiedevo come fanno a mettere i pezzetti di cioccolato nei biscotti senza
farli sciogliere quando Enrico Colombini scrisse...
 > Speravo di poter eliminare il frame di controllo di
 > Idra, ma mi pare di capire che non sia possibile (essendo il tutto
 > completamente dinamico).
Ma non era in javascript? Se le variazioni sono client-side penso che non ci
siano problemi, anche se non ho mai provato.
--
Atrus di Myst
"One Ring to Rule Them All, One Ring to Find Them,
One Ring to Bring Them All and in the Darkness Bind Them"
http://atrus.terrediconfine.net

 te li mando, se vuoi.
Si', grazie. Senza fretta perche' per un paio di mesi avro' pochissimo 
tempo, ma mi incuriosisce.
   .Erix.

 Ma non era in javascript? Se le variazioni sono client-side penso 
 > che non ci siano problemi, anche se non ho mai provato.
Piu' che variazioni, si tratta di costruzione ex-novo di pagine: a un 
certo punto posso decidere che, invece di una scelta, ci va una barra 
la cui lunghezza indica il livello del personaggio, e cosi' via. Posso 
anche decidere che ci va qualcosa che e' descritto in una stringa 
prodotta da un'altra pagina, insomma non posso sapere a priori che 
elementi ci saranno.
Se tutto questo si puo' fare con i CSS standard, OK. A suo tempo avevo 
considerato anche l'XHTML, ma mi ero spaventato per le 
incompatibilita' tra i diversi browser e avevo preferito una soluzione 
piu' semplice ma sicuramente portatile (nonostante qualche 
problemuccio ci sia stato comunque, specie col debugger).
   .Erix.

Mi chiedevo come fanno a mettere i pezzetti di cioccolato nei biscotti senza
farli sciogliere quando Enrico Colombini scrisse...
 > a un
 > certo punto posso decidere che, invece di una scelta, ci va una barra
 > la cui lunghezza indica il livello del personaggio, e cosi' via.
Penso che tu possa effettuare una sostituzione di testo con il javascript
senza dover ricaricare ma non sono sicuro, mai usato JS a fondo.
--
Atrus di Myst
"Considerando l'apertura alare e la frequenza del battito delle ali
rapportate al peso, è scientificamente provato che un coleottero non può
volare. Vola perchè non lo sa"
www.auroraproject.net/blonde
 - Il quinto capitolo è online!

 senza dover ricaricare ma non sono sicuro, mai usato JS a fondo.
Non so se ho capito bene il punto, ma se vuoi semplicemente sostituire 
un testo con un altro, basta che includi ogni testo in un <div> e nel 
CSS dichiari un "display:none;". Con il javascript, poi, puoi cambiare 
il "display" del testo che ti interessa mostrare ("display:block;").


 il "display" del testo che ti interessa mostrare ("display:block;").
No, la pagina viene generata in modo completamente dinamico senza 
sapere a priori cosa potra' contenere (testo, grafici, tabelle, ecc.); 
il contenuto viene deciso durante l'esecuzione. Solo nel caso di un 
'libro-gioco' classico si hanno scelte predefinite (in effetti in un 
primo studio per Idra avevo considerato questa possibilita', 
parzialmente sul modello di HyeprCard).
   .Erix.

> sul modello di HyeprCard).
HyperCard, ovviamente.

Enrico Colombini ha scritto:

Ho cercato un po' ma non lo trovo... cercherò meglio nei prossimi 
giorni. Comunqueil vantaggio del CSS è quello di avere un solo file con 
cui cambiare lo stile grafico del gioco senza agire direttamente sul 
codice HTML.
