Versione Stampabile della Discussione

Clicca qui per visualizzare questa discussione nel suo formato originale

OldGamesItalia _ IF Italia _ Nuovo mini-framework per AT sotto Twine 2

Inviato da: pinellosil 15 Sep 2020, 17:30

Ciao!
Sto lavorando a una specie di mini-framework sotto Twine; riprendendo il vecchio sistema che avevo usato per "Altroquando" l'ho portato in Sugarcube riscrivendolo sostanzialmente da zero, in modo che:

1) fosse semplice da capire e usare
2) fosse modificabile ed espandibile all'occorrenza
3) permettesse un approccio "libero" al giocatore non limitandolo a seguire dei link ma permettendogli di comporre delle semplici frasi tramite cui interagire con il gioco

Il risultato è una cosa del genere:

https://www.pinellos.com/wp-content/uploads/sandbox/hyp/

E' ancora molto acerbo, ci sono mille mila cose che si possono fare meglio e l'ho scritto alla veloce, ma al momento consente già di produrre dei giochi di una certa complessità.
Non ho ancora scritto una documentazione e una versione "vanilla" di questo affare, ma per il momento se qualcuno lo vuole provare ecco il file da importare in Twine (dopo averlo estratto dall'archivio):

https://www.pinellos.com/wp-content/uploads/sandbox/hyp/hyp.zip

Questo è il progetto esattamente come si può giocare dal link.
Alla veloce:

- Si definiscono gli "oggetti" di gioco tramite un tag "obj" e 2 parametri:

<<obj "descrizione dell'oggetto per il testo della locazione" "testo da scrivere nel parser">>

Il primo parametro definisce cosa verrà scritto sotto forma di link cliccabile nel testo; se il secondo parametro è definito, cliccando sul link generato da <<obj>> questo verrà impostato nella linea di parser, altrimenti verrà utilizzato il primo parametro. Esempio, voglio scrivere un paragrafo così:

"Sono nella cabina di pilotaggio di un A320 Airbus, di fronte a me vedo una complicata pulsantiera ed un leva di comando"

in cui sia la leva di comando che la pulsantiera siano cliccabili. Nel caso della leva basta un solo parametro (<<obj "una leva di comando">>) affinchè quando si clicchi sul link generato da obj il parser restituisca correttamente "una leva di comando"; nel caso della pulsantiera è meglio utilizzare il secondo parametro: <<obj "una complicata pulsantiera" "la pulsantiera">> in modo che quando cliccheremo sul link "una complicata pulsantiera" il parser scriverà solo "la pulsantiera".

- Si valuta la validità dell'espressione formata dal parser nel passaggio "interactions"; per ogni oggetto sono enumerate sottoforma di switch/case of tutte le possibili interazioni. Per aggiungerne una, è sufficiente inserire un nuovo <<case "espressione ">> e scrivere sotto il codice da eseguire.

- I verbi sono definiti nel passaggio Verbs, si possono ovviamente cambiare, aggiungere, togliere e mettere qualsiasi altra parola che si vuole aggiungere alla lista dei termini cliccabili sotto il parser

- L'inventario è automatico, sono presenti due widget <<prendi "oggetto">> e <<lascia "oggetto">> che fanno il lavoro di aggiungere o eliminare un oggetto dall'inventario.

- Il widget <<notify "messaggio">> serve per far comparire il popup con le risposte brevi

Per ora sono dietro a rifinire e migliorare il tutto e non ho una documentazione decente, ma il sistema è veramente semplice e se c'è qualcuno così ardimentoso da provare a farci qualcosa, basta chiedere e io sono qui pronto a rispondere.
Ciao a tutti e grazie!

Inviato da: riobros76il 20 Sep 2020, 16:14

Ottimo complimenti,
mi ricorda proprio l'interfaccia di Monkey Island e avventure grafiche simili. Ottima anche la breve avventura di esempio. Solo qualche piccolo problema da smartphone dove prima si deve scendere in basso, ad esempio per fare tap su Esamina, poi si deve risalire per selezionare l'oggetto per poi riscendere per tappare sull'intera frase. L'idea è ottima, però personalmente nella versione mobile li metterei ad esempio fissi, proprio per evitare questo scrolling di sale e scendi. Per il resto complimenti!

Best Regards.





CITAZIONE (pinellos @ 15 Sep 2020, 17:30) *
Ciao!
Sto lavorando a una specie di mini-framework sotto Twine; riprendendo il vecchio sistema che avevo usato per "Altroquando" l'ho portato in Sugarcube riscrivendolo sostanzialmente da zero, in modo che:

1) fosse semplice da capire e usare
2) fosse modificabile ed espandibile all'occorrenza
3) permettesse un approccio "libero" al giocatore non limitandolo a seguire dei link ma permettendogli di comporre delle semplici frasi tramite cui interagire con il gioco

Il risultato è una cosa del genere:

https://www.pinellos.com/wp-content/uploads/sandbox/hyp/

E' ancora molto acerbo, ci sono mille mila cose che si possono fare meglio e l'ho scritto alla veloce, ma al momento consente già di produrre dei giochi di una certa complessità.
Non ho ancora scritto una documentazione e una versione "vanilla" di questo affare, ma per il momento se qualcuno lo vuole provare ecco il file da importare in Twine (dopo averlo estratto dall'archivio):

https://www.pinellos.com/wp-content/uploads/sandbox/hyp/hyp.zip

Questo è il progetto esattamente come si può giocare dal link.
Alla veloce:

- Si definiscono gli "oggetti" di gioco tramite un tag "obj" e 2 parametri:

<<obj "descrizione dell'oggetto per il testo della locazione" "testo da scrivere nel parser">>

Il primo parametro definisce cosa verrà scritto sotto forma di link cliccabile nel testo; se il secondo parametro è definito, cliccando sul link generato da <<obj>> questo verrà impostato nella linea di parser, altrimenti verrà utilizzato il primo parametro. Esempio, voglio scrivere un paragrafo così:

"Sono nella cabina di pilotaggio di un A320 Airbus, di fronte a me vedo una complicata pulsantiera ed un leva di comando"

in cui sia la leva di comando che la pulsantiera siano cliccabili. Nel caso della leva basta un solo parametro (<<obj "una leva di comando">>) affinchè quando si clicchi sul link generato da obj il parser restituisca correttamente "una leva di comando"; nel caso della pulsantiera è meglio utilizzare il secondo parametro: <<obj "una complicata pulsantiera" "la pulsantiera">> in modo che quando cliccheremo sul link "una complicata pulsantiera" il parser scriverà solo "la pulsantiera".

- Si valuta la validità dell'espressione formata dal parser nel passaggio "interactions"; per ogni oggetto sono enumerate sottoforma di switch/case of tutte le possibili interazioni. Per aggiungerne una, è sufficiente inserire un nuovo <<case "espressione ">> e scrivere sotto il codice da eseguire.

- I verbi sono definiti nel passaggio Verbs, si possono ovviamente cambiare, aggiungere, togliere e mettere qualsiasi altra parola che si vuole aggiungere alla lista dei termini cliccabili sotto il parser

- L'inventario è automatico, sono presenti due widget <<prendi "oggetto">> e <<lascia "oggetto">> che fanno il lavoro di aggiungere o eliminare un oggetto dall'inventario.

- Il widget <<notify "messaggio">> serve per far comparire il popup con le risposte brevi

Per ora sono dietro a rifinire e migliorare il tutto e non ho una documentazione decente, ma il sistema è veramente semplice e se c'è qualcuno così ardimentoso da provare a farci qualcosa, basta chiedere e io sono qui pronto a rispondere.
Ciao a tutti e grazie!


Inviato da: pinellosil 22 Sep 2020, 17:39

Grazie 1000!
Avevo notato la cosa, ho apportato qualche modifica per renderlo più adattivo, dovrebbe fungere sia da mobile che da browser senza troppi problemi, per tutta la parte grafica poi ovviamente si può migliorare e fare quello che si vuole coi CSS:

https://www.pinellos.com/wp-content/uploads/sandbox/hyp/

Vado avanti...

Inviato da: pinellosil 23 Sep 2020, 18:11

ho aggiunto il sistema per i salvataggi e debuggato un po' il tutto, ora mi pare che funzioni bene sia da browser che da cell, ma ho fatto in modo che sia comunque tutto customizzabile, diciamo che al momento questo è un template con più o meno tutto quello che serve, su cui poter fare ogni successiva modifica. Se interessa posto anche lo zip, ciao a tutti!

https://www.pinellos.com/wp-content/uploads/sandbox/hyp/


Inviato da: riobros76il 28 Sep 2020, 15:56

Perfetto!
Così da smartphone è veramente ottimo! Rinnovo i complimenti, lavoro davvero ben fatto!

Best Regards.

Inviato da: pinellosil 15 Oct 2020, 17:36

Ciao!
Ho raffinato il sistema, lavorando "dietro le scene" ad un sistema che consentisse di organizzare in modo ponderato la quantità di azioni ed interazioni e descrizioni che si genera andando avanti nella costruzione di un ipotetico gioco di medie dimensioni: mi sono reso conto che buttare tutto in un unico costrutto non era molto bello e rendeva caotico il mantenimento del progetto, così ho suddiviso tutte le azioni prima per verbo (esamina, parla, prendi etc...) e poi per oggetto, rendendo molto più intuitiva la ricerca e la lettura del codice (ad esempio, se devo modificare qualcosa che risponde al verbo "Esamina", vado nella scheda relativa a "Esamina" e lì trovo tutti i riferimenti che chiamano l'azione in questione, rendendo molto più chiaro il flusso). Usando la modularità ho poi fatto in modo che sia possibile suddividere tutta questa roba in modo arbitrario, ogni azione in ultima istanza è un widget che viene chiamato da uno dei costrutti-verbo di cui sopra, ma che può stare ovunque: per praticità per esempio potremo fare dei nodi riferiti ai singoli ambienti o a gruppi di ambienti in cui avvengono le azioni, in modo da avere un file per le azioni che avvengono nella villa e uno per quelle che avvengono nel parco... o uno per le azioni della prima parte dell'avventura e uno per il secondo, a nostra scelta (è sufficiente mettere il tag "widget" ad un nodo qualsiasi per renderlo un "contenitore di interazioni"). In questo modo si può tenere tutto perfettamente organizzato e maneggiare anche con progetti medio-grandi... quanto grandi è ancora una incognita, credo che mi metterò a scrivere un'avventura apposta per testare il sistema "sul campo" e sradicare eventuali problemi.
Sul fronte "quello che l'utente può vedere" ho aggiunto un paio di cose: un effetto grafico per la "digitazione" del testo, e ho introdotto un sistema per emulare la vecchia regola non scritta delle AT secondo cui la prima volta che entri in una nuova locazione ti viene fornita la descrizione lunga, mentre dopo solo quella breve (e se vuoi rileggere quella lunga devi fare "esamina" o "x" o quello che era). Mi sembra che il tutto funzioni abbastanza bene, manca un vero e proprio sistema di dialogo ma essendo nelle previsioni un classico albero a scelta multipla, credo che mi manterrò sul semplice non facendo altro che nascondere la lista dei verbi e l'inventario durante le chiacchierate coi NPG.
Qui il link per provare il framework, a cui nel frattempo ho dato il nome provvisorio di MMIFIF (ovvero: Ovvero: Maniac Mansion Interface For Interactive Fiction!):

https://www.pinellos.com/wp-content/uploads/sandbox/mmifif/

NOTA: il link precedente non è più valido, ho cambiato la directory del progetto blush.gif
Ciao a tutti!

Fornito da Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)