Newsgroup: it.comp.giochi.avventure.testuali
Titolo: Gargoyle glk

Spero conosciate tutti questa implementazione di glk... fin'ora io non 
ho mai visto una migliore implementazione (mancano solo i colori, ma 
d'altra parte non fanno parte delle specifiche glk...)
Allora, visto che l'autore si e' dato molto da fare per sparare ad una 
mosca (il problema di fondo di glk:), in un paio di giorni ho deciso di 
sparare COL CANNONE al problema :DD
Prova di concetto (leggasi, APPARENTEMENTE funziona):
Prima: 
http://img445.imageshack.us/img445/4107/frotzstandard8jk.png
Dopo: 
http://img434.imageshack.us/img434/11/frotzpotenziato9bw.png
Cosa e' cambiato:
- Il leading iniziale dei paragrafi (la prima riga indentata, in pratica)
La gestione per la legatura ... (come gia' esistevano fi e fl)
- L'algoritmo di 'a capo' nei paragrafi: dal first-fit delle gargoyle 
originali al Knuth/Plass (punti bonus a chi conosce da chi viene 
utilizzato:D) con spaziatura variabile (per esempio, dopo un punto mette 
piu' spazio, dopo una virgola o due punti un pochino meno, eccetera). 
Riempie meglio i paragrafi insomma...
- La gestione della sillabazione automatica per i paragrafi 'difficili' 
con l'algoritmo di Liang (in pratica usa i dizionari di OpenOffice)
Cosa non fa:
- La spaziatura interparagrafo, aiuterebbe molto con la leggibilita'
- La grafica nella textwindow (oops, mi e' defunto il codice durante i 
lavori, eheheh)
Ecco cosa succede quando non si ha nulla da fare :PPPP

 sparare COL CANNONE al problema :DD
Non posso che applaudire e spronarti a completare l'opera. :D
Italian IF rulez!
Rob

>Ecco cosa succede quando non si ha nulla da fare :PPPP
Bravissimo! E ti ringrazio per la scelta dell'avventura dimostrativa
anche a nome di Sting1 ;)

 anche a nome di Sting1 ;)
Della quale spicca, in bella mostra, un errore di ortografia nel
titolo! :D
Rob

titolo! :D
Come sempre sei molto gentile a segnalare errori in modo garbato,
discreto e costruttivo.

anche a nome di Sting1 ;)
Non ho aggiunto Paolo Lucchesi perche' immaginavo che si sarebbe
aggregato ma mi rendo conto ora che ho commesso un'imperdonabile
leggerezza.
Scusa Paolo! Ringrazio Lorenzo anche a nome tuo!

 discreto e costruttivo.
E meno male che ho messo la faccina! :D
Rob

Azz... qui bisogna stare attenti alla par condicio negli esempi!!!
Progresso lavori:
Come sopra piu':
- Immagini a margine destro, sinistro e in linea con le stesse
limitazioni delle garglk originali. Quindi non piu' di una immagine a
margine destro e non piu' di una a margine sinistro per volta.
Le immagini inline vengono messe come paragrafo per conto loro centrate
nella finestra (cosa IMHO molto ragionevole).
- La gestione del sans serif... attualmente solo da file di
configurazione visto che quel fascistone di Plotkin non ha messo l'hint
serif/sans. Se leggete i thread del 1998 sul design di glk ci sono
flame war di dimensione epica.
- Gli stili a livello di paragrafo... come da specifiche il paragrafo
ha lo stile dei primi caratteri inseriti nello stesso... supporta TUTTI
gli hint delle specifiche (indent = margine sinistro, paraindent =
margine extra prima linea, allineato a sinistra, destra, centrato e
giustificato). Per uniformita' c'e' anche il margine destro, ma solo da
file configurazione visto che non c'e' un hint apposito... (razionale:
la block quote va indentata SIA a sinistra CHE a destra).
- Ulteriormente perfezionata le gestione delle ligature: se non sono
presenti nel font non fa solo le mancanti (l'originale disattivava
completamente le ligature se ne mancava anche solo una). Aggiunte ff,
ffi e ffl (oltre a fi, ff, --, --- e ...).
- Mostra con ... nel punto del messaggio di [more] quando la finestra
è in attesa carattere (comodo E teoricamente richiesto dalle specs).
Me ne sono reso conto quando Beyond continuava a segnalare | . . . |
nella finestra testo. :P
Per non parlare di Little Falls che lo spiega esplicitamente...
- Lo sfondo della finestra segue lo sfondo dello stile normale. Il
padding e i margini esterni rimangono come da file di configurazione.
Vi sfido a usare Narcolepsy senza questa variante...
- L'indentazione a inizio paragrafo e' automaticamente soppressa dopo
una riga vuota o quando il paragrafo comincia con un carattere ... non
sensato a inizio paragrafo di testo :D (c'e' una tabella nel codice
compilata a maniglia dal sottoscritto). Questo sostituisce
efficacemente la spaziatura interparagrafo (= implementazione al limite
del suicidio data la struttura attuale).
- Tuning dei parametri dell'algoritmo Knuth/Plass. Quando e'
fisicamente impossibile farci stare il testo mostra una black rule (da
interpretare come: qui c'e' qualcosa, allarga la finestra!)
MANCANTI:
- Hyperlink. Relativamente semplici da implementare a questo punto e
sembra che comunque li stiano usando tutti, quindi feature utile.
GIOCHI COLLAUDATI:
La roba basata su Z-machine sembra tutta a posto. D'altra parte non
tocca minimamente il 90% delle feature di glk.
Materiale glulxe (nota, non provato a fondo, solo le prime stanze!):
- City of Secrets, perfetto, finora l'unico con le immagini a margine
(la pigna decorativa :D)
- Lock & Key, praticamente perfetto, l'unica anomalia e' dovuta ad un
bug nel gioco che splitta in fixed su un pannello grafico senza
guardare che lo spazio sia sufficiente per una textgrid (d'altra parte
NON e' previsto un modo per sapere la larghezza in pixel di una cella
quindi...)
- Narcolepsy, ok, layout discutibile ma conforme alle specifiche :P
- Colossal cave revisited, ok, l'unica 'stranezza' e' la toolbar in
alto
- Glulx cave buono
- Balances perfetto nonostante sia solo un demo
- Photopia... ehmm... perfetto una volta che uno mette la finestra
esattamente nella dimensione voluta da Cadre (e nello zip c'era SIA il
file di configurazione CHE l'interprete!!!)
Materiale glulxe nostrano:
- Schizo ... male, temo che sia il limite di immagini per paragrafo che
non fanno funzionare il frame con l'inventario. Il resto 'sembra' ok,
anche se glk segnala errori su chiamate non troppo lecite...
- Beyond ottimo direi, magari mettendo il gamma a 0.7-0.9 per rendere
un po' piu' contrastato il testo
- Little Falls: QUALCUNO pensa window_set_background_color possa
funzionare su una finestra di testo ma mister fascist-glk se ne accorge
:P Ancora qualche problemuccio (leggasi crash del terp :P) ma per il
resto sembra tutto a posto.
Se avete altre avventure 'strane' contro cui scontrare
l'implementazione...
Gli screenshot alla prossima volta (gola gola! bwahahaha)
Buon divertimento

Lorenzo Marcantonio wrote: > Gli screenshot alla prossima volta (gola gola! bwahahaha) Anzitutto complimenti, il lavoro mi pare veramente ottimo. Poi, se puoi, toglimi una curiosita': Tor stava cercando un nuovo  mantainer per Gargoyle. Te ne sei preso carico o hai intenzione di farlo? Paolo Lucchesi email: plucchesi(at)tin(dot)it 

Doh... non sapevo che cercasse un maintainer...
Beh, ormai mi sa che mi tocca... volevo stabilizzare la code base prima
di contattarlo.
Comunque, progress report time:
- Gli hyperlink sono mostrati ma ancora non fungono :((
- Linee ad altezza variabile!!! Il che comporta immediatamente come
bonus:
a) la spaziature pre/post paragrafo
b) font a grandezza differenziata (ho seguito il modello del vecchio
HTML... c'e' la dimensione 0 che e' la base piu' le -1, -2 piu' piccole
e le +1, +2 piu' grandi)
c) non proprio 'immediatamente' :P le immagini inline (per essere 100%
conformi)
Oggi abbiamo due screenshot: LittleFalls (che mi ha fatto dannare con
il suo '>spara allo squilibrato' se avete in mente come funziona) e
City of Secrets.
(ocio che sono grossine che tengo lo schermo ad una risoluzione
bovina...)
http://img134.imageshack.us/img134/1781/littlefalls8gm.png
http://img141.imageshack.us/img141/9466/cos6pp.png
(il more in sovraimpressione credevo fosse meglio, uff... lo dovro'
modificare...)
Infine per i tradizionalisti della Z-machine, il classico demo...
http://img92.imageshack.us/img92/2152/toyshop8in.png
... piu' che altro per verificare come sopravvivano due font diversi e
di diversa dimensione sulla stessa riga (per la cronaca, i font
impiegati sono i Computer Modern Unicode, ma ovviamente uno configura
quelli che vuole...)

 di contattarlo.
Il lavoro mi sembra ottimo.
Direi che, se hai la possibilita' di farlo, potresti tranquillamente
dare una mano a Tor (e dare ancora di piu', se ce ne fosse bisogno,
visibilita' alla scena italiana in ambito internazionale).
A questo proposito, mi sovviene quel bellissimo modulino di PAPAGALO
che stava preparando il Sircana.
A che punto e'? :)
Rob

Della PAPAGALO sono secoli che non sento parlare...
Comunque per quel che riguarda le garglk:
- Le immagini inline sono a posto, senza limitazioni (vengono
considerate come 'grossi caratteri'). Per le immagini a margine rimane
la vecchia limitazione, al massimo una a destra e  una a sinistra alla
volta
- Il flow break c'e' ma va provato. Come tutte le funzioni non usate
spesso... :DD
- L'infrastruttura per gli hyperlink e' sostanzialmente completa, il
testo attivo viene mostrato sottolineato e il link code sembra
memorizzato correttamente. L'unico problema e' che, per esempio, in CoS
setta correttamente i link ma non manda la glk_request_hyperlink...
eppure su winglk sembra funzionare (e nei sorgenti c'e' il check di
'evento richiesto'). Rimane da indagare...
- Ho messo su F11/F12 il controllo del gamma, ovvero del 'contrasto'
del testo. Mi serviva per le prove, poi ho visto che e' utile quindi se
nessuno si lamenta rimane
- Ho notato che l'audio e' supportato solo sotto windows... buuuuu
vergonga!!! SDL_sound dovrebbe supportare tutto il necessario (compresi
gli ogg inseriti nell'ultima revisione di blorb)
Con questo mi sembra di aver completato l'implementazione di tutto
l'implementabile... mi sono scordato qualcosa?
Riporto le parti salienti del nuovo garglk.ini per poter spuntare le
varie 'features':
(le regole di caricamento degli ini sono invariate)
Attendo commenti & richieste...
Se tutto e' a posto stabilizzo la codebase e passo il tutto in beta!
# ------------------------------------------------------------------
# Master enable flags
stylehint       1       # set this to 0 if the game uses really bad
colors
graphics        1       # enable graphics
sound           1       # enable sound
# Approx initial size
cols            70      # nice good line length for reading. but...
rows            30      # see the bottom for terp-specific over-rides
# Enables smart quoting in text buffers
quotes          1       # Smart quotes
# Hyphenation dictionary to use for the text buffers
# Must be an OpenOffice-like dictionary for ISO-8859-1 encoding with
# CRLF line endings
#hyphendict hyph_en_GB.dic
hyphendict hyph_it_IT.dic
# overall window background color
windowcolor     ffffdd
# ------------------------------------------------------------------
# Scrollbar configuration for text buffers
scrollwidth     16      # In pixel
scrollbg e0e0d0
scrollfg c0c0b0
# ------------------------------------------------------------------
# Layout spacings (everything here in pixels)
# space around the window frame
wmarginx        2
wmarginy        2
# space between windows
wpaddingx       0
wpaddingy       0
# border line width between windows
wborderx        0
wbordery        0
bordercolor     000000
# internal margin of text windows
# Keep at least a couple pixel to catch stray pixels since FreeType has
a
# tolerance of +/- 1 pixel for metrics
tmarginx        20
tmarginy        16
# Gamma for text rendering (can be adjusted at runtime using F11-F12)
gamma   1
# Caret for line entry (in text buffers)
caretshape      1       # 0=smalldot 1=fatdot 2=thinline 3=fatline
4=block
caretcolor      000080  # input caret color
# More prompt style for text buffers
moreprompt      --- more ---
morealign       2       # 0=left 1=center 2=right
morefont        propb
morecolor       008000  # more prompt color
# ------------------------------------------------------------------
# Font definitions
# Define here the 12 faces for the 3 families: monospaced,
# proportional serif and proportional sans
monor   cmuntt.otf
monob   cmuntb.otf
monoi   cmunci.otf
monoz   cmuntx.otf
propr   cmunrm.otf
propb   cmunrb.otf
propi   cmunti.otf
propz   cmunbi.otf
sansr   cmunbmr.otf
sanso   cmunbmo.otf
sansb   cmunbsr.otf
sansz   cmunbso.otf
# Font base sizing
dpi             120     # Display resolution for font computation
propsize        12      # Proportional font size in point
monosize        12      # Monospaced font size in point
# Extra leading, for font families with bad height metrics
# can be negative to shrink the layout
prop_extra_leading      -2 # In pixels
mono_extra_leading      0 # In pixels
#
# ------------------------------------------------------------------
# Style definition for textgrid windows
# gfont is the font to use
#               (hints Weight, Oblique, Proportional)
# gcolor is the color pair for the characters
#               (hints TextColor, BackColor)
# Normal style
gfont   0 monor
gcolor  0 000000 ffffdd
--- eccetera eccetera ---
# ------------------------------------------------------------------
# Style definition for text buffer windows
# tfont is the font to use
#               (hints Weight, Oblique, Proportional, no hint for
#                serif/sans switching)
# tmagstep is the relative font size (-2 to +2)
#               (hint Size)
# tcolor is the color pair for the characters
#               (hints TextColor, BackColor)
# tlmargin is the left margin for the paragraph (in spaces)
#               (hint Indentation)
# trmargin is the right margin for the paragraph (in spaces)
#               (no corresponding hint)
# tindent is the first line indent for the paragraph (in spaces)
#               (hint ParaIndentation)
# paraskip_before is the number of blank pixels to put before a
#               new paragraph
#               (no corresponding hint)
# paraskip_after is the number of blank pixels to put after a
#               new paragraph
#               (no corresponding hint)
# tjustify is the alignment policy for the lines
#               (hint Justification)
#               (0 = flush_left,
#               1 = justified_left,
#               2 = centered,
#               3 = right_flush)
# Normal style
tfont           0 propr
tmagstep        0 0
tcolor          0 000000 ffffdd
tlmargin        0 0
trmargin        0 0
tindent         0 10
paraskip_before 0 5
paraskip_after  0 2
tjustify        0 1
--- eccetera eccetera ---