Newsgroup: it.comp.giochi.avventure.testuali
Titolo: Ipotesi per assurdo

Provo ad ampliare questo discorso a cui con alcuni dei presenti ho 
accennato privatamente in passato.
 
Supponiamo per un attimo che in un momento di pazzia decida di rimettere 
mano a Medusa per renderlo pubblicabile. Dato e non concesso che mi 
venga questa malsana idea, vorrei che fosse ragionevolmente accessibile.
 
[per chi non avesse seguito la telenovela, Medusa e' il mio tool per 
produrre game-ebook complessi a pagine statiche (immutabili) partendo da 
un sorgente a programmazione libera]
 
Attualmente Medusa usa una sintassi tipo Idra, che pero' mi pare abbia 
dei limiti, specie per i non-informatici. Faccio un esempio semplice:
 
   if v.portaAperta then
     v.portaAperta = false
     P"Meglio di no, mi vedrebbero dall'"
     Link("ufficio di fronte", 'sgraffigna3')
     T"."
   end
 
Si tratta sostanzialmente di un frammento di programma in cui P 'stampa' 
un paragrafo, T aggiunge testo al paragrafo corrente e Link inserisce 
ovviamente un hyperlink (con testo e destinazione).
 
Ho tralasciato per semplicita' la formattazione (P e' un paragrafo 
normale, ma puo' essere in grassetto o corsivo, allineato in un certo 
modo... genericamente di una certa classe CSS).
 
Quanto sopra va probabilmente bene per un informatico, meno per uno 
scrittore che vorrebbe dare precedenza al testo e che, a quanto ho visto 
dall'esperienza di Idra, si ingarbuglia regolarmente con apici e 
virgolette ottenendo errori non sempre ovvi (per usare un eufemismo).
 
La strada opposta e' quella seguita da wiki, PHP/ASP o HTML: anziche' un 
programma che produce un testo, si usa un testo con inseriti dei marker 
e dei frammenti di codice.
Ho fatto qualche esperimento in tal senso, ma il risultato e' ancor meno 
maneggevole, specie considerando che il codice puo' essere assai meno 
banale di quello dell'esempio (tra l'altro anche i link possono 
contenere funzioni arbitrariamente complesse, come in Idra).
 
Il problema mi pare risiedere nella scarsa separazione tra testo e 
codice, anzi tra testo, codice e formattazione dell'output HTML (che, 
come dicevo, nell'esempio ho tralasciato). Problema in cui anche HTML e' 
dentro fino al collo... e infatti e' in gran parte off limits per i non 
informatici senza usare un editor ad alto livello che lo produca.
 
Per fare un esempio di inestricabilita' testo-codice con l'impostazione 
attuale e del motivo per cui penso che una sintassi markup non sia molto 
applicabile, riporto (anche se e' fuori della portata di un autore 
non-tecnico) una delle funzioni del puzzle della libreria in Locusta 
Temporis, quella che si limita a elencare i libri che stanno su un certo 
scaffale; la funzione principale e' molto piu' complicata :-)
Notare le T che stampano del testo.
 
  local function list(place)
     for i = 1, #seq do
         local id = seq[i]
         if v[id] == place then
             local libro = libri[id]
             if num[place] > 0 then
                 T", "
             end
             T(libro.nome)
             num[place] = num[place] + 1
             peso[place] = peso[place] + libro.peso
         end
     end
     if num[place] == 0 then
         T"nulla"
     end
  end
 
Fare questo col markup richiederebbe di avere testo generabile da 
codice, quindi di avere entrambi i sistemi: un inutile raddoppio di 
complessita'.
 
Insomma, mi piacerebbe poter separare per quanto possibile il testo, il 
codice e la formattazione... ma senza castrare il tool impedendo una 
programmazione 'generica' e senza complicare la vita all'autore in altro 
modo. Ho alcune vaghe idee, ad esempio un testo con dei riferimenti cui 
il codice (separato) accede, grosso modo il concetto di printf per 
intenderci, ma non e' che mi convincano troppo e mi piacerebbe sentire 
la vostra opinione.
 
-- 
   .Erix.


 
Come è noto a chi programma, il tema è antico quanto l'informatica 
stessa. E la soluzione, soprattutto in questo contesto richiede fantasia.
 
Per ora, l'unica possibilità che mi viene in mente al volo è, come I7, 
avere un sistema di regole e una sintassi semplice, il tutto scritto in 
una specie di linguaggio naturale. Il parser / compilatore farà il resto.
 
L'alternativa, come dici tu, è una sorta di mega printf: comandi 
dedicati ai vari casi.
 
Il problema rimane sempre il concetto di "IF" inteso come costrutto 
condizionato. Perché è proprio il problema di condizionare il testo a 
una condizione che introduce l'idea di sintassi e di statement.
 
pg
 
 
 

 una condizione che introduce l'idea di sintassi e di statement.
 
Non amando Inform ne', per lunga esperienza da HyperCard in poi, gli 
ambienti 'facilitati' (che spesso semplificano le cose banali e 
trasformano in un inferno quelle piu' impegnative) non ho mai studiato 
I7 e quindi chiedo da ignorante: come si introduce un'azione 
condizionale senza esprimere in qualche modo la condizione?
 
-- 
   .Erix.

 definita.
 
Non possiedo la preparazione giusta per poter indicare una via utile, ma ho voluto comunque ragionare un poco sul problema.
 
Se la codifica dell'avventura avviene attraverso la stesura di un unico file di testo (codice), e gestita in prima persona dall'utente non so se una netta separazione tra testo e codice sia veramente auspicabile. Renderebbe complicato all'autore capire quando e come il testo viene visualizzato, costringendolo a fare avanti ed indietro tra la parte di codice che stampa il racconto con quella invece che ne condiziona l'evolversi.
 
Da ciò che ho visto negli strumenti attuali quello che veramente aiuta ed è apprezzato dall'autore alle prime armi è un IDE chiaro ed efficace, oltre che una documentazione corredata d'esempi e magari un supporto attivo da parte di una comunità di autori. Credo che alla fine ciò renda le cose molto più semplici ed accessibili di quanto non lo sia imparare una sintassi più o meno simile al C o a Java o ad un altro linguaggio di programmazione facilitato. [Ad esempio della funzione sulla libreria che hai postato non ho capito quasi nulla, ma in se non mi spaventa più di tanto se ne trovassi documentazione esplicativa].
 
In questo senso poniamo di voler indirizzarci verso una codifica di tipo markup, come l'HTML dove possiamo avere delle etichette <TAG> associate a paragrafi di testo o a porzioni dello stesso o a link, che richiamino del codice. Senz'altro come hai detto il codice dopo un po' diverrebbe alquanto confuso, ma già se si avesse un editor che permette di visualizzare o nascondere il codice associato ad un paragrafo in una finestra a parte e non inframezzato al testo le cose sarebbero molto più chiare e gestibili. Non parlo di un IDE visuale, mantenendo il parallelo con l'HTML, tipo Dreamweaver ma anche di un "semplice" editor tipo Notepad++ dedicato, con correzione della sintassi e che magari permetta un' >apparente< separazione tra testo e codice.
 
Se avessimo poi un libreria di etichette che coprisse la maggior parte delle fattispecie che si esplorano nella creazione di un gioco le cose migliorerebbero ancora, specie se fossero disponibili all'interno dell'editor. 
 
Se infine in caso di bisogno qualcuno ci aiutasse allora avremmo l'optimum.
 
Aspettiamo novita su kickstarter :)

 Aspettiamo novita su kickstarter :)
 
Non vendo fumo, solo prodotti finiti :-)
 
-- 
   .Erix.

Mi rendo conto che la mia domanda puo' essere formulata in modo piu' 
semplice:
 
Il sistema di authoring di Idra e' accettabile?
 
-- 
   .Erix.


 
Studiando undum noto che, soprattutto con la versione 2, si sta 
avvicinando in alcune cose a Idra però con un elemento che lo rende 
interessante: in undum sono stati definiti degli hook cui riferirsi per 
l'esecuzione di pezzi di codice condizionatamente al verificarsi di 
alcuni eventi.
 
Oltre a ciò sono stati associati dei TAG a determinate pagine / opzioni 
cui si può fare riferimento in talune fasi richiamando comandi di alto 
livello.
 
In pratica assocerei:
+ la semplicità di Idra
+ la gestione degli eventi (e non alle IF)
+ la gestione dei TAG
 
Così si può lavorare alla definizione di un linguaggio di alto livello 
legato a eventi e tag, separato dalla presentazione.
 
pg

 Studiando undum noto che, soprattutto con la versione 2
 
Grazie della segnalazione; a una prima occhiata superficiale non mi 
sembrano meccanismi facilmente applicabili in questo contesto, ma lo 
guardero' piu' da vicino.
 
-- 
   .Erix.

Il 12/11/13 09.54, Enrico Colombini ha scritto:

In realtà così com'è non risponde alle tue esigenze ma sarebbe 
relativamente semplice creare uno strato di livello superiore.
 
pg

In compenso faciliterebbe non poco l'eventuale traduzione.
 
tempo fa alla ricerca di un tool d'aiuto per la traduzione m'ero imbattuto in OmegaT. E' molto semplice usarlo per le traduzioni anche di listati che frappongono codice e testo, specie se si crea un file di notazione con i termini del codice che poi vengono o nascosti o messi in grigetto lasciando in evidenza solo i testi.
 

 assembly' costituito dalla rappresentazione testo+codice.
 
WIDE e JIF di Alessandro non sono niente male, magari si possono adattare...
 
:)

 messi in grigetto lasciando in evidenza solo i testi.
 
Interessante, ma i traduttori professionisti usano appositi programmi 
che semplificano molto il lavoro (con una specie di mega-cache 
intelligente) e vogliono l'input in un file di Excel :-)
 
-- 
   .Erix.

 intelligente) e vogliono l'input in un file di Excel :-)
 
ignoro perché ti chiedano proprio l'excel, immagino per pigrizia, ma ritengo che possano lavorare su qualsiasi tipo di file. I programmi professionali gestiscono tutti i file più comuni, dal LaTex all'HTML da Dokuwiki a XML passando per CSV file HELP e così via...
 
Anche OmegaT come diversi altri anche opensource (oltre che tutti i software professionali [a pagamento] dedicati) ha oltre un glossario personalizzabile per ogni progetto un archivio di concordanze totale e parziali in modo da tradurre semi-automaticamente le ricorrenze.
 
Se al programma viene detto come distinguere il testo da tradurre dal codice si può usare qualsiasi file di testo.
 
Vale la pena esplorare il campo se uno vuole tradurre un testo.
 

 e parziali in modo da tradurre semi-automaticamente le ricorrenze.
 
Buono a sapersi.
 
-- 
   .Erix.

"JRE è ora fornito con OmegaT e non deve essere ottenuto separatamente"
 
Ahem... vabbe' che e' free, ma "installate un buco nel vostro computer" 
non e' il modo migliore per presentarsi :-)
 
-- 
   .Erix.

> non e' il modo migliore per presentarsi :-)
 
(a meno che non intenda che ora e' embedded nel programma e 
completamente indipendente da ogni altra JRE installata)
 
-- 
   .Erix.