Newsgroup: it.comp.giochi.avventure.testuali
Titolo: INFORM 6 e 7: la differenza è davvero grande

Leggendo il libro di Aaron Reed ho avuto modo di approfondire Inform 7, 
dopo che mi sono letto i manuali su Inform 6.
Li ho usati poco ma, avendo programmato molto nella mia vita, non mi ci 
ï¿œ voluto molto per capire entrambe le versioni e la differenza ï¿œ davvero 
abissale.
Si tratta della stessa differenza che c'ï¿œ tra un linguaggio di 
programmazione della terza e uno della quarta generazione, la differenza 
tra linguaggi dichiaratori e definitori, tra linguaggi che si occupano 
di dati e algoritmi per elaborarli e linguaggi che si limitano a 
dichiarare e manipolare dati.
In estrema sintesi, Inform 6 lo potremmo definire c++ like, mentre 
Inform 7, SQL like.
Il secondo si occupa solamente di luoghi, oggetti, azioni, regole e 
permette di costruire la propria narrazione direttamente, senza 
algoritmi e trucchi ma solo definendo cosa si vuole fare e non come.
So che questa discussione ï¿œ stata giï¿œ ampiamente affrontata e 
approfondita ma il tipo di approccio alla produzione, a parer mio, 
cambia anche nei risultati a seconda del linguaggio usato.
Tutto alla fine si riconduce al codice binario in una macchina ma ï¿œ 
molto importante come ci si arriva al binario. E' come se oggi, per 
manipolare dati, si usassero ancora fortran, cobol o C++ con costi di 
produzione e manutenzione enormi.
E' solo nelle prime cose che Inform 7 sembra un modo piï¿œ arabescato di 
fare le stesse cose che si possono fare con Inform 6, la parte dove si 
definiscono luoghi e oggetti, ma, andando avanti, si scopre che le 
possibilitï¿œ che offre Inform 7 sono molto piï¿œ potenti e danno adito a 
molti meno problemi realizzativi e manutentivi.
pg


Davvero?
Io ricordavo che I7 "traduceva" il suo sorgente in codice I6 e poi lo
compilava.
In questo senso non aggiungeva nulla in termini di caratteristiche ad
un eventuale gioco, ma forniva un approccio diverso al programmatore
(non so dire se più facile o difficile migliore o peggiore - mi limito
al diverso).
Puoi indicare cosa è possibile fare in I7 che non sia possibile in I6,
intendo dal punto di vista finale del gioco in se.
O anche che tipo di situazioni ha semplificato rendendole delle
opzioni concrete all'autore (diciamo il programmatore non
professionista)?

 abissale.
[cut]
pg, parliamoci chiaro... ora come ora, almeno in Italia, la differenza 
piï¿œ abissale tra Inform 6 e Inform 7 ï¿œ che... Inform 6 si compila 
sempre, Inform 7 quasi mai :-D
Appena cambia qualcosa nell'originale inglese con il rilascio di una 
nuova versione del linguaggio, tutto il resto si incasina 
irreparabilmente o quasi e ci vogliono giorni, settimane, mesi per 
sistemare la faccenda. Io uso Arch Linux e sono abitatuato al bleeding 
edge (vedi l'ultimo kernel panic di udev 165-1) ma cosï¿œ ï¿œ troppo! In un 
anno e mezzo non sono riuscito a compilare neppure un listato di 20 righe.
Ciao!
Marco


Non vorrei apparire autorefenziale ma, come scrivevo nel primo post, 
tutto alla fine si riduce al codice binario e pertanto la trasformazione 
da Inform 7 a 6 prima della compilazione finale, implica per forza che 
tutto ciò che si può fare con il 7 si può fare anche con il 6 ma a che 
prezzo?
I linguaggi di 4 generazione (4GL per brevità), a partire da SQL, 
comunque sono realizzati in C o altri linguaggi procedurali simili. Ma 
non per questo nessuno si sognerebbe di utilizzare C per risolvere 
problemi inerenti banche dati.
Lo stesso con I7.
pg

Il 18/01/2011 10.02, marcof ha scritto:

Per l'esempio, dammi un attimo che te lo riporto. Ce ne è uno ecclatante 
sul libro di Reed.
pg

 Marco
Mi fido assolutamente della tua esperienza ma va detto che l'unica parte 
davvero dolente di I7, ma anche di I6, che tutta la parte di 
localizzazione è davvero la nota dolente, la parte studiata meno bene. 
Ma mi riservo di riprendere la cosa quando ne saprò di più.
In quasi tutti i framework professionali, infatti, la localizzazione è 
uno dei must irrinunciabili. Nel caso del sorgente di Zork, infatti, si 
trovano stringhe (quindi delle costanti) sparpagliate ovunque. Ma in 
questo I6 è ancora peggio di I7.
pg

 questo I6 ï¿œ ancora peggio di I7.
Infatti, Paolo, io faccio un discorso meno aulico: in Italia la comunitï¿œ 
di Inform come supporto, esperienza e conoscenze ï¿œ nettamente superiore 
a quella di Inform 7 e questo rende molto piï¿œ semplice sviluppare e 
soprattutto finalizzare progetti in Inform 6.
Magari prova pure tu a scrivere un'avventuretta da 20 righe di codice in 
Inform 7, cerca di compilarla e poi dimmi che succede :-D
A questo aggiungo che l'Inform pack offerto su IF Italia per programmare 
in Inform 6 in italiano compila giï¿œ out_of_the_box :-)
Ciao!
Marco

 problemi inerenti banche dati.
ed infatti non usiamo il C per programmare avventure ma inform/tads/
hugo e quant'altro.
Perdona se non afferro il salto di qualità e appiaio poco competente,
forse ho bisogno di esempi.
Per esempio a suo tempo (era il 2001 credo) io avevo trovato grandi
difficoltà a gestire e personalizzare la gestione di oggetti multipli
(volevo che il giocatore potesse raccogliere sassi praticamente in
tutte le locazioni, ma non ne potesse trasportare più di tre assieme,
e se li lasciava naturalmente sparivano confondendosi nell'ambiente -
ovvero una variazione dalle ipotesi previste nel DM4). Ora arrivare ad
un codice privo di bugs ha richiesto giorni e giorni di tentativi e
suggerimenti. Magari in I7 bastano un paio di righe alla portata di
tutti?
o magari in I7 si possono gestire facilmente contenuti grafici e
sonori senza imparare glulx o combattere con i file *.ini degli
interpreti.
ciao
marco

 professionista)?
Neanche io riesco a indicare un esempio specifico. Però mi è chiaro
che la possibilità di agire sui rulebook conferisce un'elasticità
notevole nella gestione delle azioni, risposte, ecc, da parte del
gioco.
Poi vi sono le scene e un uso molto avanzato delle tipologie/classi
(kinds) che -- per quanto conosca poco di I6 -- mi pare chiaro offrano
una maggiore flessiblità -- è come se si programmasse al contempo ad
un livello meta del codice e ad al livello dei dettagli.
Mhhh ... mi son spiegato malassimo, dovrò farmene una ragione ;-)


Beh, non sono ancora così figo da poter snocciolare esempi di codice I7, 
però posso dire che in effetti l'esempio delle pietre è sicuramente 
implementabile con poche "rule": un paio sui sassi (su come si vedono e 
su come scompaiono nell'ambiente, definendoli come oggetti scenery in 
alcuni casi) e una sul numero massimo trasportabile.
Inoltre, esiste la text-substitution che mermette, tra le altre tante 
cose, mediante il metodo BENT di Reed, di evidenziare nelle descrizioni, 
termini rilevanti per la storia e termini che comunque potrebbero essere 
oggetto delle attenzioni del giocatore così da evitare le stressanti e 
pedanti risposte a vuoto di quando nella descrizione c'è tutto un mondo 
sconosciuto però a Inform.
Altro esempio, quello di Reed che avevo promesso:
ad ogni turno, quando un contenitore (chiamato il sacchetto) tenuto da 
qualcuno visibile (chiamato lo sfortunato trasportatore) si rompe, devi 
dire "[Il sacchetto] si strappa e si rompe sotto il peso![Se il 
giocatore e' lo sfortunato trasportatore]Lo elimini[altrimenti]viene 
eliminato[fine del se]i suoi resti giaciono, con aspetto miserabile.
Quella sopra è la misera traduzione in italiano di un testo in 
pseudo-inglese che è tutto quanto occorre a descrivere l'episodio.
Scrivi la stessa cosa in I6:
serve un deamon per ogni sacchetto che ad ogni turno faccia le verifiche 
su quale personaggio sia il player e che stampi quanto dovuto.
Il numero di nozioni richieste per implementare questo semplice pezzo di 
codice è già alto e comunque la soluzione è di 23 righe contro le 5 di I7.
pg

 Inform 7, cerca di compilarla e poi dimmi che succede :-D
Qualche numero:
- Sotto La Pioggia è lungo circa 11600 parole e compila bene anche con
Italian, di oltre 17000 parole;
- Frammenti di Identità era lungo circa 54000 parole e compilava bene;
- Battaglia Magica è lungo oltre 100000 parole e compilava bene.
Tutto sotto piattaforma Windows 7.
Forse dipende dalla piattaforma di compilazione più che dall'ambiente
di sviluppo...
Sono in generale d'accordo con Paolo (mi raccomando impara IF7 e
traduci qualche estensione :) ).