DAPHNE SINGE - REALIZZA IL TUO LASERDISC GAME

Area dedicata alle guide tecniche,consigli e suggerimenti.
Avatar utente
saturnshadow
Arcade Maniac
Arcade Maniac
Messaggi: 4945
Iscritto il: 04/05/2016, 16:00
Medaglie: 40
Reputation: 991
Località: Pesaro/Bologna
Nazione: Italy
:
Medaglia d'oro Medaglia d'argento Medaglia di bronzo Medaglia di legno

DAPHNE SINGE - REALIZZA IL TUO LASERDISC GAME

Messaggio da saturnshadow »

ATTENZIONE! Quanto segue è la semplice traduzione della guida redatta e a cura di KARIS
Arcademania.eu, lo staff tutto, i traduttori e tutti i collaboratori che hanno partecipato alla stesura del testo seguente non sono in alcun modo coinvolti nei contenuti di quanto illustrato, né hanno collaborato in alcun modo, né hanno alcuna responsabilità su qualsivoglia aspetto.
Per qualunque tipo di informazione, richiesta o ulteriore approfondimento riguardo il materiale presente nella guida i riferimenti sono: l'autore stesso, KARIS (persona disponibilissima e cortese ndr) che detiene il Copyright del materiale ivi tradotto
Qualunque annotazione e/o variazione sul contenuto i riferimenti sono esclusivamente quelli dell'autore (KARIS).
Per modifiche alla traduzione invece, potete inviare liberamente i Vs. suggerimenti al fine di consentire le modifiche del caso


REALIZZA IL TUO LASERDISC GAME CON DAPHNE SINGE
Author: @Karis (v1.02 – 12/2019)
Special thanks to @Karis and @poiu and everybody generally making this a better document


Benvenuti!
Questo tutorial illustrerà come creare il vostro gioco FMV usando Daphne SINGE. È davvero semplice e veloce. Se siete in possesso di un semplice filmato da 10 minuti, probabilmente sarete già pronti a riprodurlo come FMV in solo un paio d'ore! Dovremo solo dire a Daphne dove sono i file e inserire l’elenco dei comandi nello script SINGE.

Un po’ di storia
Daphne è un emulatore per giochi su Laserdisc. È stato creato da Matt Ownby. Si chiama Daphne perché è
il nome della principessa di Dragon’s Lair. SINGE (che è il nome del drago) è un componente aggiuntivo di
Daphne creato da Scott Duensing (2006). È un dll che consente, tramite uno script LUA, di creare nuovi
Laserdisc game. Alcuni giochi sono dei porting di RDG. Principalmente giochi laser americani. Ma fino ad ora nessuno ha mai rilasciato un nuovo gioco fatto da zero (RDG ne ha fatti alcuni, ma non li ha mai rilasciati ufficialmente). Fire & Ice è il primo nel suo genere. Ho usato uno script di RDG e l'ho modificato per avere tutte le risorse necessarie in un unico file. Ora può essere il vostro turno…

Di cosa hai bisogno?
‐ Sistema operativo Windows. Daphne è disponibile anche per OSX e Linux, ma ad oggi il modulo SINGE non è presente (mai dire mai).
‐ Daphne v1.14 (con il modulo SINGE) che include Fire & Ice.
‐ Un software di editing video (come Adobe Premiere) per modificare i vostri filmati e controllare i frame.
‐ Un editor di testo: Notepad è sufficiente, ma Sublime Text è migliore.

File supportati:
‐ Formato dei filmati: .m2v (MPEG-2 senza audio)
‐ Formato per l’audio: .ogg (Ogg Vorbis)

Indicazioni generali
Il gioco sarà suddiviso in livelli. Ogni livello sarà diviso in scene. In ogni scena dichiarerai
le tue mosse, chiedendo al giocatore di inserire la mossa corretta tra il frame X (Inizio) e il frame Y (Fine). Se
il giocatore inserirà una mossa sbagliata (o nessuna mossa), questo attiverà una scena di morte e ricomincerà dall’inizio della scena

Limitazioni
‐ 65536 frames per tutti i tuoi video. Questo significa circa 36 minuti a 30 FPS oppure circa 45
minuti a 24 FPS.
‐ 16 Livelli + 1 Segreto.
‐ 15 Scene per ogni Livello (ovvero il numero di mosse contenute per ogni livello).
‐ 40 scene di morte.
È possibile ottenere anche più di quanto indicato sopra (tranne che per i frame), ma richiederà una programmazione aggiuntiva, ma di cui non ne parlerò qui.

Features
Il tuo gioco avrà queste funzionalità nativamente senza alcuna programmazione aggiuntiva (ovviamente si è liberi di usarle o meno):
- Controlli tastiera e pad;
- Frecce di movimento e fino a 3 pulsanti di azione;
- Azione speciale di tipo MASH pulsante 1: premere ripetutamente e velocemente il pulsante per ottenere questa azione;
- Azione doppia per il pulsante 1: si può richiedere al giocatore di combinare un comando direzionale con il pulsante 1;
- Livelli di difficoltà: da facile a estremo. La modalità facile non contiene né azioni MASH né AZIONI DOPPIE. Più alto sarà il livello di difficoltà meno frame saranno necessari per compiere l’azione e saranno presenti più mash;
- Livello di inizio e scena selezionabili;
- Modalità bambino: nessun comando, solo pulsante 1. L'unico input sarà il pulsante Azione.
- Modalità film: possibilità di guardare la sequenza filmata senza giocare;
- Livello segreto: un livello speciale, attivato in alcuni casi (non conta nel limite dei 10 livelli);
- Save: 3 slot di salvataggio più un salvataggio automatico alla fine di ogni segmento. Si può accedervi con un menu dedicato o direttamente dal gioco;
- Death rewind: possibilità di scegliere dal menu dove tornare dopo una morte. Entrambe le scene
(comportamento normale, come il primo livello di DL2), Livello (come altri livelli di DL2), Sposta (la mossa
appena fallita) o Avanti (superamento della mossa persa, come in Space Ace). Per quest'ultima opzione assicurarsi che l’input delle mosse non siano ravvicinate o sarà molto difficile giocare.
- Mappa: modo alternativo per selezionare i livelli. È solo una demo in Fire & Ice, ma in futuro ne verrà fatto uno speciale tutorial a riguardo.

Ok, sono pronto. Andiamo!
La creazione del tuo gioco sarà divisa in 3 parti. Montaggio video, preparazione dei file e modifica in SINGE. In questo tutorial tratterò la parte di editing video in modo molto superficiale (per questo aspetto ci sono tanti tutorial per questo sul web).
I parte: Video editing
Alcune note e suggerimenti per questa parte. Per un gioco completo sarà necessario creare vari piccoli film.
Title: questo film sarà il primo che verrà riprodotto all'avvio del gioco. Ovviamente
Si potrà avere anche solo un'immagine statica che si estende su alcuni frame. In Fire & Ice ad esempio, questo filmato si chiama title.m2v. Non deve durare troppo perché non prevederà nessuna azione mentre si visualizza.
Attract: è un filmato più lungo per presentare la storia. È più lungo perché verrà eseguito in loop, in attesa del giocatore che inizierà il gioco. Si potranno avere fino a 3 diversi Attract. (vedi ad esempio intro01.m2v e intro02.m2v in Fire&Ice).
Menu: questo filmato conterrà tutte le UI del gioco.

• Un frame statico per il menu delle opzioni
• Un frame statico per i salvataggi
• Un frame statico per la vittoria
• Un frame statico per le classifiche
• Un frame statico per il livello segreto (opzionale)
• Un video per continuare il gioco
• Un video per il Game Over (opzionalmente un secondo per game over "felice")
• Un video di avviso per un High Score
• Un video per inserire il punteggio
• Un video di chiusura per l’inserimento del punteggio
• Un video per il completamento di un livello

Questo è tutto, ma bisogna tener presente che quanto illustrato è altamente facoltativo. Si può avere anche un'immagine statica lunga 10 secondi e usarla per tutti questi scopi.
Sarà comunque preferibile con un po' di testo e musica. Date un'occhiata a Menu.m2v in Fire & Ice.
Morte: nei giochi FMV si muore spesso! Tutte le sequenze di morte sono contenute in questo video. Sarà necessario almeno un filmato e realizzabili fino a un totale di 40.
Una buona lunghezza per un filmato di morte è di circa 60 fotogrammi, per dare l’opportunità al giocatore di avere un tempo necessario per riprendersi tra i vari tentativi falliti.
A titolo di esempio guardate death.m2v in Fire & Ice.
Filmato del livello: è qui che si gioca. Necessario almeno 1 filmato e realizzabili fino a 10. In quei film la prima parte può essere una semplice introduzione e ignorata con la semplice pressione di un pulsante. È utile avere una clip di intro per presentare l'azione, ma è un’opzione molto facoltativa.

Si può notare che è possibile utilizzare perfettamente anche un singolo video per tutto questo. Daphne tratterà tutti i tuoi file come Laserdisc, quindi 1 o 15 file, non farà differenza alcuna. Detto questo, a volte Daphne ha dei problemi
trattare i film con più di 15/20 minuti. Ecco perché ho scelto di dividere.


I Parte: preparazione file
Adesso è il momento di preparare I file per il Daphne e il SINGE.
‐ Andare nella cartella Daphne/singe/ e copiare la directory fire_and_ice;
‐ Incollare (sempre in SINGE);
‐ Rinominarla con il nome desiderato del vostro gioco;
‐ Andare nella directory del vostro gioco e cancellare setupgame.singe;
‐ Rinominare setupgameblank.singe come setupgame.singe;
‐ Andare nella directory «dvd» e rimuovere ogni file;
‐ Inserire qui tutti I file dei filmati e dell’audio;
‐ Andare nella directory Daphne e copiare il file fire_and_ice.bat;
‐ Incollarlo;
‐ Rinominarlo con il nome del vostro gioco;
‐ Tasto destro sul mouse e cliccare su Modifica (il file verrà aperto con Notepad)
‐ All’interno troverete indicato due volte il nome «fire_and_ice». Rimpiazzatelo con il nome della vostra directory e salvate.
L’ultimo passaggio prevede che comunichiate al Daphne l’indice del vostro laserdisc:
Nella directory del vostro gioco, aprite il file fai.txt
Fai.txt è l’indice del vostro Laserdisc virtuale. Indica a Daphne in quale fotogramma troverà ogni video.
Ricordate che il limite totale è di 65536 fotogrammi. A parte questo, si è totalmente liberi di assegnare qualunque valore si desideri. Per Fire & Ice, è stato inserito tutto insieme perché pericolosamente vicini al limite (il totale è di circa 65520 fotogrammi): quindi ogni video inizia dopo il fotogramma finale del filmato precedente.
Esempio: nel file fai.txt, title.m2v è il primo video. Inizia dal fotogramma 0. La lunghezza di title.m2v è 292
frame. Quindi l’inizio del video successivo (intro01.m2v) è al frame 293 e così via.

Se si è più accorti (realizzazione di un filmato inferiore ai 45 minuti complessivi), si può aggiungere un qualsiasi gap senza che cambi qualcosa. Basta fare attenzione ad evitare eventuali sovrapposizioni: ogni video deve iniziare dopo la conclusione di quello precedente.
Nota Bene: l’ordine dei video all'interno del file non è importante. I valori inseriti verranno utilizzati anche da SINGE

II Parte: editing SINGE
Adesso siamo pronti a creare il nostro gioco. Questo verrà fatto in 3 parti. Andate nella vostra game directory e aprite setupgame.singe: qui è dove verranno effettuate tutte le operazioni.
1) Impostazioni generali:
Le prime righe del file solitamente sono dedicate alle configurazioni generali del gioco. Solo alcune di queste sono importanti da modificare:
MYDIR = "singe/fire_and_ice/"
Questo sarà il percorso del gioco. Basta sostituire la parte fire_and_ice con il nome della directory creata.
dofile(MYDIR .. "globals.singe")
dofile(MYDIR .. "main.singe")
dofile(MYDIR .. "map.singe")
dofile(MYDIR .. "hscore.singe")
dofile(MYDIR .. "service.singe")
dofile(MYDIR .. "toolbox.singe")
Queste righe appena indicate non vanno assolutamente toccate. Queste rappresentano gli script dove si richiamano altri file necessari al programma.
MovieFPS = 23.976
Scegliere un valore compreso tra 23.976 e 29.976; dipende dal filmato che avrete realizzato.
bShowTitle = false
mycolor1 = LIGHTBLUE
mycolor2 = BLACK
mycolor3 = WHITE
Qui invece potrete stabilire alcuni oggetti relative all’aspetto del gioco. bShowTitle, se “True”, scriverà i titoli dei menu (come OPTIONS oppure SAVE/LOAD). Se altrimenti avete pianificato di scriverli direttamente nel vostro video (così come ho fatto), lasciate il valore su “false”.
Mycolor 1, 2 e 3 rappresentano I colori dei menu.
1 sarà il colore principale (per gli LCD, scelta Titoli, Evidenziati); 2 è un colore neutro (non evidenziato); 3 è un colore “lampeggiante” (usato nel menu degli High Score). Si potrà scegliere tra: Rosso, Blu, Giallo, Verde, Arancione, Azzurro, Bianco, Nero e Grigio.
SCOREMOVE = 700
BUFFMOVE = 300
SCORESCENE = 10000
DEATHPENALTY = 1000
SCORELEVEL = 50000
SCOREGAME = 250000
SCORESECRET = 1
Scoring. Per ora non sarà necessario modificare queste stringhe.
finalstage = 6
E’ importante comunicare a SINGE dove il gioco finirà. Se abbiamo creato un solo livello, inserire il valore 1 e SINGE non tenterà la ricerca di un livello 2.
Ricordiamo che è possibile realizzare un gioco che contempla fino a 16 livelli.
bAllowSecret = true
“True” oppure “False”. Questa impostazione dirà a SINGE se esiste un livello segreto o meno. Se non dovesse esserci, inserire “False”.
Ci sono 3 modalità per accedere ad un eventuale livello segreto:
‐ Finire il gioco senza perdere vite;
‐ Finire il gioco con un solo credito;
‐ Una combinazione speciale di comandi durante il menu introduttivo.
bAllowMap = false
MapStart = 0
Queste righe sono specifiche per la Mappa (ovvero un modo diverso di selezionare i livelli utilizzato in alcuni giochi). Ci sarà un apposito tutorial per questo aspetto, quindi per ora non toccheremo l’argomento.

2) Frame iniziali e finali per i vari elementi del gioco
Qui di seguito è dove indicherai al SINGE dove trovare i video del gioco:
offsetTitle = 0
offsetIntro01 = 293
offsetIntro02 = 63755
offsetIntro03 = 0
offsetLevel01 = 2300
offsetLevel02 = 8959
offsetLevel03 = 18312
offsetLevel04 = 26127
offsetLevel05 = 33240
offsetLevel06 = 46082
offsetLevelExt = 57955
Questo è l’elenco dei frame in cui iniziano i diversi filmati. I valori sono gli stessi di fai.txt.
Notare che ho inserito solo 2 filmati introduttivi, quindi per Intro #3 ho inserito il filmato dei Titoli (a partire da 0). Si noti anche che il livello segreto è incorporato alla fine del livello 6. Quindi, per quest’ultimo, ho calcolato il frame in cui esso inizia.
offsetTitleend = offsetTitle + 291
offsetIntro01end = offsetIntro01 + 2005
offsetIntro02end = offsetIntro02 + 1760
offsetIntro03end = offsetTitle + 291
Questi sono i frame in cui termina ogni video introduttivo (in altri termini, la lunghezza del video). SINGE
deve avere questa impostazione. Si noti che ho ridotto la lunghezza effettiva di 1 fotogramma (ad esempio il video del titolo è in realtà di 292 frame ma è stato inserito il valore di 291). Questo perché se si inserirà l’effettivo ultimo fotogramma potrebbe generare piccoli glitch. Per evitare questo inconveniente tecnico, è preferibile tagliare 1 fotogramma.
offsetLevel01Clipend = offsetLevel01 +1111
offsetLevel02Clipend = offsetLevel02 +2540
offsetLevel03Clipend = offsetLevel03 +128
offsetLevel04Clipend = offsetLevel04 +2058
offsetLevel05Clipend = offsetLevel05 +2829
offsetLevel06Clipend = offsetLevel06 +878
offsetLevelExtClipend = offsetLevelExt +815
Questi sono i frame in cui termina la prima parte di ogni livello. Lo scopo di questo listato è di avere una clip cinematografica che introduce gli eventi prima dell'azione. Ad esempio nel livello 01, la clip filmata funziona fino al fotogramma 1111. Durante questo periodo, sullo schermo comparirà un'icona «salta». Se il giocatore dovesse premere il pulsante di azione, il programma salterà questa parte e passerà direttamente al fotogramma 1112. Naturalmente se il filmato all'inizio non ha una introduzione, è possibile sostituire il valore con «+0». In tal caso, il l'azione inizierà subito dopo l'inizio del livello.
Informazioni sui fotogrammi: il programma è scritto in termini di «frame relativi». Sopra, si è parlato di frame 1111. Ciò significa "frame 1111 del livello 1". È molto più conveniente se si ha un video per
livello, perché quando si lavorerà con il software di editing video, verificheremo che la clip introduttiva
termina al fotogramma 1111. Per Daphne però questo non è in realtà l’effettivo fotogramma 1111 (a causa della presenza dell'indice).
Comunque è bene ricordare che non è necessario calcolare i fotogrammi dal punto di vista del Daphne: basterà inserire i valori indicati dall'editor del film.

offsetMenus = 59955
Questa è la posizione del menu del film (così come in fai.txt).
frameOptions = offsetMenus +1
Questo è il fotogramma (relativo) all'immagine statica per lo sfondo del menu delle opzioni. Quando richiameremo questo menu (Tasto 9), il programma cercherà il frame corrispondente (59956 per Daphne, ma 1 per te) del menu film e lo incollerà sullo sfondo finché non usciremo dal menu. Si noti che nel menu delle opzioni è possibile modificare vari settaggi come il livello iniziale o la difficoltà.
This the (relative) frame of the static image for the background of your option menu.
frameSave = offsetMenus +3
Questo invece è il frame relativo all'immagine statica per lo sfondo del menu di salvataggio. Quando richiameremo questo menu (Tasto F4), il programma cercherà il fotogramma del filmato del menu e lo conserverà sullo sfondo fino all'uscita.
frameRankings = offsetMenus +6
Questo sarà il fotogramma dell’immagine statica sullo sfondo della classifica dei migliori punteggi
(top 10) del gioco.
frameCommands = offsetMenus +11
Questa sarà la selezione dell'immagine statica nella schermata dei controlli del gioco. Quando premeremo «Azione» durante il menu, il programma cercherà l'undicesima immagine del filmato del menu e la mostrerà per 15 secondi (mostrando una tastiera e un pad con i vari tasti / pulsanti).
frameVictory = offsetMenus +21
Questa invece sarà l’impostazione per l’immagine statica quando si completerà con successo il gioco. Questa verrà visualizzata per qualche secondo finché non si raggiungerà l’ultimo livello.
frameExtendedPlay = offsetMenus +29
Quest’altra invece è se si accederà al livello segreto, se impostato (vedi su). Resterà visualizzata per qualche istante.
offsetContinue = offsetMenus +31
offsetContinueend = offsetMenus +285
La selezione di questo fotogramma verrà mostrato nel menu dove sarà possibile continuare (un conto alla rovescia praticamente).
Se si finiscono le vite, il programma riprodurrà questo video e potremo premere start per continuare oppure non fare nulla. In quel caso…
offsetGameOver = offsetMenus +286
offsetGameOverend = offsetMenus +536
Ci saranno dei fotogrammi che verranno mostrati per la fine della partita, pertanto, una volta terminata e senza continuare, vedremo il filmato del Game Over.
offsetGameOverAlt = offsetMenus +537
offsetGameOverAltend = offsetMenus +870
Un’altra possibilità è un filmato alternativo per la fine del gioco (chiamiamola «felice»). Io la utilizzo in casi speciali (vittoria, o nuovo high score). Ovviamente, se si è realizzato un solo filmato per la fine del gioco, potranno essere copiati i valori dell’impostazione precedente.
offsetNewHScore = offsetMenus +871
offsetNewHScoreend = offsetMenus +940
Impostazione dei fotogrammi per il meno dove verrà annunciato un nuovo high score.
Procediamo al prossimo elemento
offsetEnterHScore = offsetMenus +941
offsetEnterHScoreend = offsetMenus +1540
La selezione dei fotogrammi dove il punteggio verrà inserito in classifica.
Il suggerimento è di farlo abbastanza lungo per consentire al giocatore di inserire il proprio nome.
Andiamo alla prossima impostazione
offsetOKHScore = offsetMenus +1541
offsetOKHScoreend = offsetMenus +1614
L’impostazione del filmato dove verrà validato il punteggio. Durante questo filmato verrà mostrata anche la classifica.
offsetClear = offsetMenus +1615
offsetClearend = offsetMenus +673
Questi sono i frame del filmato verrà riprodotto al termine di un livello. Anche il file audio "clear.wav", se presente, verrà riprodotto in questa occasione. Sentitevi liberi di modificare il file .wav in base allo stile del vostro gioco e al vostro gusto.
offsetMap = offsetMenus +1541
offsetMapend = offsetMenus +1614
Questi saranno i fotogrammi del filmato se, durante il gioco, utilizzerete una mappa (come già ricordato, sarà oggetto di una futura guida specifica).
Nota Bene: per tutti i filmati appena elencati sono stati utilizzati i termini «immagini statiche» e «video».
Se si guarda uno dei filmati menu che ho realizzato, noterete che è composto da immagini statiche. Alcuni
sono davvero brevi, altri molto lunghi (inserire il punteggio più alto ad esempio è un'immagine che copre oltre 600 frame). In effetti la lunghezza del video è paragonabile a un timer. Potrebbe essere un vero video, ma, come nel mio caso, anche un'immagine statica.

offsetDeath = 61571
Questa è la posizione dove partirà il filmato di morte nel gioco (come in fai.txt)
offsetDeath01 = offsetDeath
offsetDeath01end = offsetDeath +58
Questi sono i fotogrammi del filmato della morte nel gioco in cui viene riprodotto il file Death01. Si possono realizzare fino a 40 filmati diversi di morte durante il gioco (in tal caso è necessario nominare i file tutti allo stesso modo – ndr Death01, Death02, Death03, ecc…) e ne è necessario almeno uno. Si può notare che nei miei lavori ho abbreviato di 1 fotogramma anche qui, per evitare problemi tecnici precedentemente illustrati. Per la durata, suggerirei di evitare di realizzarli troppo corti (perché i giocatori hanno
bisogno di rendersi conto dell’errore commesso), o troppo lunghi (perché si fallisce spesso in questi giochi).

III Parte: Lista delle mosse per ogni livello, scena per scena
Ed eccoci finalmente alla parte divertente. Questo è dove il vostro gioco prenderà vita.
In questa sezione deciderete tutti i comandi corretti, livello per livello e scena per scena.
Ricordate solo il limite di massimo 10 livelli e di 10 scene per ogni livello.
Ma cos’è una scena?
Una scena è, di fatto, una parte del livello. Quando si morirà, si ritornerà all’inizio della scena. Se si compieranno correttamente tutte le mosse di una scena, si accederà a quella successiva, altrimenti, in caso contrario, verrà riprodotto il filmato di morte.
Iniziamo dal livello 1
TotalScenesLevel01 = 3
Questa è l’impostazione del numero di scene presenti nel livello 1 di Fire and Ice ad esempio. Sono presenti 3 scene. Praticamente il programma non cercherà alcuna “scena 4”. Ricordate solo che il limite massimo è di 10 scene.
function setupLevel01(thisSegment)
Non toccate assolutamente questa riga! Sono le impostazioni della gestione del livello 1
if thisSegment == SEGMENT01 then
Così come questa riga non va assolutamente variata! Rappresenta l’inizio del segmento 1(cioè la scena 1)
segmentStart = offsetLevel01Clipend + 1
Qui invece viene indicato dove inizia la scena 1. Questa inizia sempre alla fine del filmato di introduzione, quindi non è necessario modificare queste impostazioni.
segmentEnd = offsetLevel01 + 3018
Questa invece è la fine della scena 1. Quando il programma raggiungerà questo fotogramma, proseguirà alla scena 2 del livello 1.
totalMoves = 13
Questa stringa rappresenta il numero di mosse totali della scena 1.
move = nil; move = {}
Non toccate questa riga.
move[1] = {}; move[1] = {1352, 1374, BUTTON1, 1, 0, 0}
move[2] = {}; move[2] = {1620, 1645, LEFT, 1, 0, 0}
move[3] = {}; move[3] = {1930, 1950, BUTTON1, 1, 0, 0}
move[4] = {}; move[4] = {2078, 2097, BUTTON1, 1, 0, 0}
move[5] = {}; move[5] = {2105, 2125, BUTTON1, 2, 0, 0}
move[6] = {}; move[6] = {2229, 2248, RIGHT, 2, 0, 0}
move[7] = {}; move[7] = {2280, 2310, LEFT, 2, 0, 0}
move[8] = {}; move[8] = {2363, 2383, ACTRIGHT, 2, 0, 0}
move[9] = {}; move[9] = {2560, 2575, RIGHT, 2, 0, 0}
move[10] = {}; move[10] = {2755, 2771, RIGHT, 2, 0, 0}
move[11] = {}; move[11] = {2870, 2890, LEFT, 2, 0, 0}
move[12] = {}; move[12] = {2900, 2920, LEFT, 2, 0, 0}
move[13] = {}; move[13] = {2980, 3015, MASH, 3, 0, 0}
Quanto indicato è l’elenco delle 13 mosse della scena 1.
Adesso guardiamo più da vicino la prima riga delle mosse così che potrete imparare tutto quello di cui necessitate.
move[1] = {}; move[1] = {1352, 1374, BUTTON1, 1, 0, 0}
Questa è la stringa di una mossa. E’ come una tabella che contiene tutte le informazioni necessarie al Daphne.
move[1] = {}; move[1] =
Questa riga indica qual è la mossa 1. Ovviamente dovrete compilare il codice in ordine numerico crescente e non dimenticate che il valore va riportato due volte (nel caso in esempio abbiamo 2 volte “1”).
{1352, 1374, BUTTON1, 1, 0, 0}
Questa parte è il dettaglio specifico della mossa da compiere. Ogni impostazione è separata da una virgola.
‐ la prima cifra (1352) comunica al programma da quale fotogramma dovrà essere compiuta l’azione. La seconda cifra (1374) quando questa termina.
Questo significa che il giocatore dovrà fare qualcosa tra questi due fotogrammi.
‐ BUTTON1 è l’azione da compiere richiesta al giocatore (Attenzione! Le maiuscole sono importanti!). Perciò, tra il frame 1352 e il frame 1374, il giocatore dovrà premere il pulsante 1. Se fallisce nel farlo oppure preme altro o addirittura nulla, perderà una vita.
‐ La quarta cifra (1), comunica al programma quale filmato di morte riprodurre in caso di fallimento. In questo caso partirà il filmato Death01 come definito precedentemente.
Questo significa che sarà possibile impostare tanti filmati di morte per ogni errore compiuto.
‐ Le ultime due cifre (0,0) devono restare così, quindi potete ignorarle.
Possibili mosse:
‐ UP: significa freccia su (o stick in alto su un pad);
‐ DOWN: freccia giù (o stick in basso su un pad);
‐ LEFT: freccia sinistra (o stick a sinistra su un pad);
‐ RIGHT: freccia destra (o stick a destra su un pad);
‐ UPLEFT: freccia su + freccia sinistra (oppure diagonale alta a sinistra sul pad);
‐ UPRIGHT: freccia su + freccia destra (oppure diagonale alta a destra sul pad);
‐ DOWNLEFT: freccia giù + freccia sinistra (oppure diagonale in basso a sinistra sul pad);
‐ DOWNRIGHT: freccia giù + freccia destra (oppure diagonale in basso a destra sul pad);
‐ BUTTON1: significa Left Ctrl sulla tastiera (o pulsante A sul pad);
‐ BUTTON2: significa Spazio sulla tastiera (o pulsante B su pad);
‐ BUTTON3: significa Left Alt sulla tastiera (o pulsante C sul pad);
‐ ACTUP: freccia su + pulsante 1 (oppure su + pulsante A sul pad);
‐ ACTDOWN: freccia giù + pulsante 1 (oppure giù + pulsante A sul pad);
‐ ACTLEFT: freccia sinistra + pulsante 1 (or stick left + pulsante A sul pad);
‐ ACTRIGHT: freccia destra + pulsante 1 (or stick right + pulsante A sul pad);
‐ MASH: significa che bisogna premere ripetutamente e velocemente Left Ctrl sulla tastiera (oppure il pulsante A sul pad);
‐ SKIP: consente di saltare una parte del filmato con un comando definito (impostazione opzionale).

Se verificate il mio gioco [ndr: Fire & Ice], noterete che non utilizzo il pulsante 2 e il pulsante 3.
Tuttavia voi potreste aver bisogno del loro utilizzo (ad esempio c'è un pulsante dedicato alle mani e un pulsante dedicato ai piedi in Cliffhanger).
L'azione SKIP invece è speciale. Non è necessario eseguire questo comando particolare. Viene usato solo per saltare una parte di filmato in cui non è presente alcuna azione (ad esempio una clip di dialogo). L'azione MASH richiede al giocatore di premere il pulsante 1 molto rapidamente.

Timing
Qual è il giusto tempismo per le mosse? In realtà è una domanda assai difficile a cui dare risposta, e comunque non è qualcosa a cui possiamo davvero stabilire perché lo hanno stabilito i registi e/o animatori per noi (che non sanno assolutamente che abbiamo trasformato le loro opere cinematografiche in gioco).
Basti sapere che in Dragon’s Lair le mosse devono essere compiute entro circa 15 fotogrammi, perciò direi che:
‐ 30 frame: è molto facile;
‐ 25 frame: è facile;
‐ 20 frame: è medio;
‐ 15 frame: è difficile;
‐ 10 frame: è molto difficile.

Io consiglierei di non scendere al di sotto di 9 o 10 fotogrammi a meno che tu non voglia frustrare completamente il giocatore. Come detto però, ci sono casi in cui non si ha la possibilità di includere la mossa nell'elenco.
Per le azioni MASH ad esempio, bisogna concedere almeno 25 frame al giocatore (30 sarebbe meglio), altrimenti sarà molto difficile premere il tasto abbastanza volte per far sì che la mossa abbia successo. Se ci sono meno di 25 frame, non utilizzate il comando MASH.
Inoltre, tieni presente che il livello di difficoltà (scelto nel menu iniziale), ridurrà il numero di fotogrammi di conseguenza (meno 2 frame per ogni livello sopra il livello normale). Il livello di difficoltà aggiunge anche alcune difficoltà aggiuntive (al MASH +1 per ogni livello sopra il normale). Quindi, siate prudenti o i vostri giocatori piangeranno!
Ultimo avvertimento: non è una buona idea mettere mosse troppo vicine l'una all'altra. Provate a inserire almeno 1 fotogramma «spento» tra la fine di una mossa e l'inizio di quella successiva (ad esempio se la mossa 1 termina al frame 1374, è meglio iniziare la mossa 2 almeno dal frame 1376). Se non lo farete, c’è il rischio che il programma si perda la traccia.

Feeling
C'è un altro aspetto da considerare ben più importante della difficoltà: il feeling del giocatore.
Bisogna dare al giocatore l'illusione di controllare effettivamente il personaggio. Nel mondo reale, nei lasergame, quando premi un pulsante al momento giusto, impedisci semplicemente che il filmato si interrompa (avviando una scena di morte anziché continuare). Ma se le tue mosse sono posizionate in modo intelligente, creerai una magia: il giocatore avrà la percezione che il personaggio controllato si muoverà a causa dell’azione compiuta invece di un gioco basato su comandi a memoria/riflesso in un film interattivo. Questo è il compito più difficile secondo la mia opinione e non sarà semplice raggiungere questo risultato, perché saranno necessari molti test esterni per decidere quali fotogrammi sono i migliori.
Generalmente, quando posiziono le mosse, inizio dall'ultimo fotogramma della mossa e tendo a scegliere solo all’ultimo istante possibile prima che si verifichi la mossa effettiva (oppure anche al primo fotogramma in cui si trova il movimento). Poi vado a ritroso per stabilire quando inizia effettivamente la mossa. Andando indietro ho solo l’accortezza di non andare troppo in là (idealmente 15 fotogrammi).
Debugging
Durante il test del gioco, potreste avere alcuni problemi. Poiché LUA è uno script, molti di questi problemi
saranno causati da errori di sintassi.
Ecco alcuni esempi:
- List of moves not consistent (Elenco delle mosse non coerente): potreste aver dimenticato un numero; se la mossa 5 è seguita dalla 7 il programma non capirà;
- Bad number of scenes (Cattivo numero di scene): ricordate che il numero di scene deve essere coerente con quanto dichiarato all'inizio della funzione.
- Bad number of moves (Numero di mosse errato): ricordate che il numero di mosse deve essere coerente con il valore dichiarato all'inizio della scena.
- Overlapping (Sovrapposizione): se il fotogramma finale di una mossa è superiore al fotogramma iniziale della mossa successiva, causerà errori o bug (generalmente nessuna mossa presente sullo schermo).
- Syntax error within a move (Errore di sintassi all'interno di una mossa): ad esempio se dimentichi una virgola oppure non utilizzi correttamente le maiuscole (“button1” invece di “BUTTON1”).

E così via…
Questo è tutto! Ora devi solo definire ogni mossa per ogni scena e per ogni livello. Se avrete
dubbi sentitevi liberi di contattarmi o dare semplicemente un'occhiata al mio file setupgame.singe, che contiene molti file di commento.
Non mi resta che augurarvi Buona fortuna! E spero che un giorno potrò giocare al vostro gioco!



Avatar utente
saturnshadow
Arcade Maniac
Arcade Maniac
Messaggi: 4945
Iscritto il: 04/05/2016, 16:00
Medaglie: 40
Reputation: 991
Località: Pesaro/Bologna
Nazione: Italy
:
Medaglia d'oro Medaglia d'argento Medaglia di bronzo Medaglia di legno

Re: DAPHNE SINGE - REALIZZA IL TUO LASERDISC GAME

Messaggio da saturnshadow »

traduzione guida terminata [sweatdrop.gif]
spero di non aver scritto scemenze e aver adattato al meglio
buon lavoro a tutti e se c'è qualcosa da migliorare fatemi sapere nei commenti [book6.gif]
buon divertimento a tutti e un grandissimo "Merçi" a @Karis [shake2.gif]