Con il permesso dell'autore, ecco a voi la guida ufficiale allo storyboarding manuale tradotta in italiano.
Personalmente ho anche apportato delle piccole migliorie per rendere il tutto più chiaro.
Storyboarding by Scripting
Il file .osb di una qualunque mappa si presenta sempre nella seguente struttura:
layers (I livelli, su cui potete distribuire gli oggetti):
- Background (Sfondo)
- Fail (Se in una combo non sono ottenuti tutti 300 oppure se nella fase di pausa si ha poca vita rimanente)
- Pass (Se in una combo ottenete tutti 300 o se nella fase di pausa avete molta vita rimanente)
- Foreground (Primo Piano)
Nota: BackGround e ForeGround sono sempre visibili; Pass e Fail solo nei casi specificati.
Nota2: Gli spazi vuoti possono essere sostituiti da underscoore ( cioè "_" )
Nota3: In ogni livello, l'ordine di apparizione è regolato dall'ordine con cui gli oggetti sono elencati (primo oggetto in lista appare dietro a tutti gli altri)
Sprites and Animations
Immagine statica:
Animazioni:
N.B.:
Per le animazioni il nome va specificato come nelle Immagini statiche ( esempio: "sliderball.png"), ma i file usati sono da rinominarsi aggiungendo come desinenza il numero del fotogramma (esempio: da "sliderball0.png" a "sliderball9.png" per una animazione di 10 fotogrammi).
- frameCount: numero dei fotogrammi dell'animazione
- frameDelay: durata di ogni fotogramma (in millisecondi)
- looptype: tipo di ripetizione dell'animazione: LoopForever (default) - ripetizione infinita; LoopOnce - l'animazione si interromperà all'ultimo fotogramma.
origin (L'origine, il punto che sarà preso come riferimento per l'utilizzo dell'oggetto):
- TopLeft (Angolo in alto a sinistra)
- TopCenter (Il punto più alto e centrale)
- TopRight (Angolo in alto a destra)
- CentreLeft (Il punto più centrale a sinistra)
- Centre (Il centro esatto)
- CentreRight (Il punto più centrale a destra)
- BottomLeft (Angolo in basso a sinistra)
- BottomCentre (Il punto più basso e centrale
- BottomRight (Angolo in basso a destra)
Nota: Non solo la posizione, ma anche altri valori come Scale (ridimensionamento) e Rotate (rotazione) sono influenzati dall'origine.
filepath: percorso relativo dell'oggetto utilizzato (relativo significa che la cartella è da considerarsi come "disco", quindi se dovete usare delle sottocartelle dovrete usare questa struttura: "/cartellaesempio/file.jpg")
Nota: Il percorso è da scriversi con le virgolette.
x, y: la posizione dell'oggetto; Il campo di gioco ha una dimensione pari a 640*480, dove 0*0 è l'angolo in alto a sinistra.
Eventi
Dopo aver specificato l'oggetto da utilizzare seguendo le specifiche elencate in precedenza, è ora di "programmare" le azioni da fargli compiere.
Codice tipico di un evento:
Tipi di eventi:
F - fade (dissolvenza)
M - move (Spostamento)
S - scale (ridimensionamento)
V - vector scale (ridimensionamento per specifiche non omogenee)
R - rotate (rotazione)
C - colour (colore)
L - loop (cicli di eventi)
T - Event-triggered loop (cicli di eventi scatenati da un'altro evento)
P - Parameters (parametri)
easing (il tipo di velocità che deve avere l'evento):
0 - uniforme
1 - veloce all'inizio, lento alla fine
2 - lento all'inizio, veloce alla fine
starttime, endtime: l'intervallo di tempo in cui si deve verificare l'evento (in millisecondi)
parametri specifici:
startopacity: opacità iniziale
endopacity: opacità finale
Nota: Sono accettati valori tra 0 e 1 (0 - invisibile, 1 - completamente visibile) e sono ammessi valori decimali (come ad esempio 0.55, opaco al 55%)
startx, starty: posizione iniziale
endx, endy: posizione finale
Nota: Come specificato prima, il campo è 640*480, ma sono accettati anche valori maggiori o negativi, se è necessario che l'oggetto compia un movimento fino ad uscire proprio dal campo (esempio ...,-50,-40,800,560)
startscale: valore dello zoom iniziale
endscale: valore dello zoom finale
Nota: Valori accettati solo se positivi. Sono accettati i valori decimali (1= 100% = dimensione originale, 2.34 = 234% e così via)
startx, starty: valori di zoom orizzontale e verticale iniziale
endx, endy: valori di zoom orizzontale e verticale finale
Nota: Come per lo Scale, valori accettati solo se positivi. Sono accettati i valori decimali (1= 100% = dimensione originale, 2.34 = 234% e così via)
startangle: l'angolo di rotazione iniziale, in radianti
endangle: l'angolo di rotazione finale, in radianti
Per una rotazione in senso orario, endangle > startangle. Sono accettati valori negativi e decimali.
r1, g1, b1: componenti cromatiche iniziali
r2, g2, b2: componenti cromatiche finali
r = componente rossa; g = componente verde; b = componente blu; il sistema di colorazione è sottrattivo (di conseguenza 255,255,255 , valore masimo che equivalrebbe al bianco, lascerà come risultato l'immagine con la colorazione originale; 0,0,0 la renderà totalmente nera). Questo evento è comodo se è necessario colorare in più modi una singola immagine in scala di grigi.
p: il tipo di parametro da applicare:
starttime: il momento di inizio del loop, in millisecondi
loopcount: numero di ripetizioni del loop
N.B.: Gli eventi elencati sotto un Loop sono da considerarsi con "starttime" come se fosse 0ms. Creare un evento a 0ms sotto il loop comporterà l'inizio dell'evento a "starttime" nella barra temporale.
start: momento da cui l'attivazione del trigger è valida, in millisecondi
end : momento da cui l'attivazione del trigger non è più valida, in millisecondi
Attuali eventi trigger supportati per "triggerName":
HitSoundClap (quando c'è un suono Clap assegnato)
HitSoundFinish (quando c'è un suono Finish assegnato)
HitSoundWhistle (quando c'è un suono Whistle assegnato)
Passing (durante il gioco: in una combo sono stati ottenuti tutti 300; in break time: quando il livello di HP è alto)
Failing (durante il gioco: in una combo sono stati ottenuti uno o più 100/50/X; in break time: quando il livello di HP è basso)
Gli eventi trigger sono eventi scatenati salla situazione specificata in "triggerName". Se il trigger viene scatenato mentre gli eventi sono ancora in corso, questi saranno interrotti per iniziarli nuovamente. Un evento trigger non viene attivato se va a sovrapporsi ad un evento simile in corso.
Effetti Sonori
time: the time in milliseconds to start playing the sound effect
layer:
Background = 0
Fail = 1
Pass = 2
Foreground = 3
filepath: Percorso relativo del file (la root / è la cartella che contiene la beatmap); il percorso del file deve comprendere le virgolette.
volume: volume del file contenente il suono. Valori accettati: da 1 a 100.
N.B.: questi eventi sono validi unicamente sotto "//Storyboard Sound Samples".
Notazioni speciali
Variabili:
E' possibile impostare variabili semplici tramite il codice seguente:
Scorciatoie:
E' possibile utilizzare delle scorciatoie per evitare di dover scrivere più volte valori che si ripetono:
Ad esempio, quando i valori dell'evento sono uguali:
Addirittura, se anche starttime e endtime sono uguali (cioè l'evento è istantaneo),
si può ridurre ulteriormente da:
Per ora è tutto!
C'è una sola scorciatoia che ancora non riesco a capire e che quindi non ho potuto aggiungere, lo farò appena possibile.
Per il resto la guida è completa, sono apprezzati suggerimenti!
Buono Storyboarding!
Personalmente ho anche apportato delle piccole migliorie per rendere il tutto più chiaro.
Storyboarding by Scripting
Il file .osb di una qualunque mappa si presenta sempre nella seguente struttura:
[Events]
//Background and Video events
//Storyboard Layer 0 (Background)
//Storyboard Layer 1 (Fail)
//Storyboard Layer 2 (Pass)
//Storyboard Layer 3 (Foreground)
//Storyboard Sound Samples
layers (I livelli, su cui potete distribuire gli oggetti):
- Background (Sfondo)
- Fail (Se in una combo non sono ottenuti tutti 300 oppure se nella fase di pausa si ha poca vita rimanente)
- Pass (Se in una combo ottenete tutti 300 o se nella fase di pausa avete molta vita rimanente)
- Foreground (Primo Piano)
Nota: BackGround e ForeGround sono sempre visibili; Pass e Fail solo nei casi specificati.
Nota2: Gli spazi vuoti possono essere sostituiti da underscoore ( cioè "_" )
Nota3: In ogni livello, l'ordine di apparizione è regolato dall'ordine con cui gli oggetti sono elencati (primo oggetto in lista appare dietro a tutti gli altri)
Sprites and Animations
Immagine statica:
Sprite,"layer","origin","filepath",x,y
_event, easing, starttime, endtime, [params]
_event, [...]
_event, [...]
Animazioni:
Animation,"layer","origin","filepath",x,y,frameCount,frameDelay,looptype
_event,easing,starttime,endtime,[params]
_event, [...]
_event, [...]
N.B.:
Per le animazioni il nome va specificato come nelle Immagini statiche ( esempio: "sliderball.png"), ma i file usati sono da rinominarsi aggiungendo come desinenza il numero del fotogramma (esempio: da "sliderball0.png" a "sliderball9.png" per una animazione di 10 fotogrammi).
- frameCount: numero dei fotogrammi dell'animazione
- frameDelay: durata di ogni fotogramma (in millisecondi)
- looptype: tipo di ripetizione dell'animazione: LoopForever (default) - ripetizione infinita; LoopOnce - l'animazione si interromperà all'ultimo fotogramma.
origin (L'origine, il punto che sarà preso come riferimento per l'utilizzo dell'oggetto):
- TopLeft (Angolo in alto a sinistra)
- TopCenter (Il punto più alto e centrale)
- TopRight (Angolo in alto a destra)
- CentreLeft (Il punto più centrale a sinistra)
- Centre (Il centro esatto)
- CentreRight (Il punto più centrale a destra)
- BottomLeft (Angolo in basso a sinistra)
- BottomCentre (Il punto più basso e centrale
- BottomRight (Angolo in basso a destra)
Nota: Non solo la posizione, ma anche altri valori come Scale (ridimensionamento) e Rotate (rotazione) sono influenzati dall'origine.
filepath: percorso relativo dell'oggetto utilizzato (relativo significa che la cartella è da considerarsi come "disco", quindi se dovete usare delle sottocartelle dovrete usare questa struttura: "/cartellaesempio/file.jpg")
Nota: Il percorso è da scriversi con le virgolette.
x, y: la posizione dell'oggetto; Il campo di gioco ha una dimensione pari a 640*480, dove 0*0 è l'angolo in alto a sinistra.
Eventi
Dopo aver specificato l'oggetto da utilizzare seguendo le specifiche elencate in precedenza, è ora di "programmare" le azioni da fargli compiere.
Codice tipico di un evento:
_"evento", easing, starttime, endtime, "parametri"Dove "evento" inice il tipo di azione e "parametri" le specifiche caratteristiche varianti per ogni evento (entrambi da specificare senza virgolette)
Tipi di eventi:
F - fade (dissolvenza)
M - move (Spostamento)
S - scale (ridimensionamento)
V - vector scale (ridimensionamento per specifiche non omogenee)
R - rotate (rotazione)
C - colour (colore)
L - loop (cicli di eventi)
T - Event-triggered loop (cicli di eventi scatenati da un'altro evento)
P - Parameters (parametri)
easing (il tipo di velocità che deve avere l'evento):
0 - uniforme
1 - veloce all'inizio, lento alla fine
2 - lento all'inizio, veloce alla fine
starttime, endtime: l'intervallo di tempo in cui si deve verificare l'evento (in millisecondi)
parametri specifici:
_F,[...],startopacity,endopacity
startopacity: opacità iniziale
endopacity: opacità finale
Nota: Sono accettati valori tra 0 e 1 (0 - invisibile, 1 - completamente visibile) e sono ammessi valori decimali (come ad esempio 0.55, opaco al 55%)
_M,[...],startx,starty,endx,endy
_MX,[...],startx,endx
_MY,[...],starty,endy
startx, starty: posizione iniziale
endx, endy: posizione finale
Nota: Come specificato prima, il campo è 640*480, ma sono accettati anche valori maggiori o negativi, se è necessario che l'oggetto compia un movimento fino ad uscire proprio dal campo (esempio ...,-50,-40,800,560)
_S,[...],startscale,endscale
startscale: valore dello zoom iniziale
endscale: valore dello zoom finale
Nota: Valori accettati solo se positivi. Sono accettati i valori decimali (1= 100% = dimensione originale, 2.34 = 234% e così via)
_V,[...],startx,starty,endx,endy
startx, starty: valori di zoom orizzontale e verticale iniziale
endx, endy: valori di zoom orizzontale e verticale finale
Nota: Come per lo Scale, valori accettati solo se positivi. Sono accettati i valori decimali (1= 100% = dimensione originale, 2.34 = 234% e così via)
_R,[...],startangle,endangle
startangle: l'angolo di rotazione iniziale, in radianti
endangle: l'angolo di rotazione finale, in radianti
Per una rotazione in senso orario, endangle > startangle. Sono accettati valori negativi e decimali.
_C,[...],r1,g1,b1,r2,g2,b2
r1, g1, b1: componenti cromatiche iniziali
r2, g2, b2: componenti cromatiche finali
r = componente rossa; g = componente verde; b = componente blu; il sistema di colorazione è sottrattivo (di conseguenza 255,255,255 , valore masimo che equivalrebbe al bianco, lascerà come risultato l'immagine con la colorazione originale; 0,0,0 la renderà totalmente nera). Questo evento è comodo se è necessario colorare in più modi una singola immagine in scala di grigi.
_P,[...],p
p: il tipo di parametro da applicare:
- H - effetto specchio orizzontale (alto-basso / basso-alto)
V - effetto specchio verticale (sinistra-destra / destra-sinistra)
_L,starttime,loopcount
__event, [...]
__event, [...]
starttime: il momento di inizio del loop, in millisecondi
loopcount: numero di ripetizioni del loop
N.B.: Gli eventi elencati sotto un Loop sono da considerarsi con "starttime" come se fosse 0ms. Creare un evento a 0ms sotto il loop comporterà l'inizio dell'evento a "starttime" nella barra temporale.
_T,triggerName,start,end
__event, [...]
__event, [...]
start: momento da cui l'attivazione del trigger è valida, in millisecondi
end : momento da cui l'attivazione del trigger non è più valida, in millisecondi
Attuali eventi trigger supportati per "triggerName":
HitSoundClap (quando c'è un suono Clap assegnato)
HitSoundFinish (quando c'è un suono Finish assegnato)
HitSoundWhistle (quando c'è un suono Whistle assegnato)
Passing (durante il gioco: in una combo sono stati ottenuti tutti 300; in break time: quando il livello di HP è alto)
Failing (durante il gioco: in una combo sono stati ottenuti uno o più 100/50/X; in break time: quando il livello di HP è basso)
Gli eventi trigger sono eventi scatenati salla situazione specificata in "triggerName". Se il trigger viene scatenato mentre gli eventi sono ancora in corso, questi saranno interrotti per iniziarli nuovamente. Un evento trigger non viene attivato se va a sovrapporsi ad un evento simile in corso.
Effetti Sonori
Sample,time,layer,"filepath",volume
time: the time in milliseconds to start playing the sound effect
layer:
Background = 0
Fail = 1
Pass = 2
Foreground = 3
filepath: Percorso relativo del file (la root / è la cartella che contiene la beatmap); il percorso del file deve comprendere le virgolette.
volume: volume del file contenente il suono. Valori accettati: da 1 a 100.
N.B.: questi eventi sono validi unicamente sotto "//Storyboard Sound Samples".
Notazioni speciali
Variabili:
E' possibile impostare variabili semplici tramite il codice seguente:
[Variables]In modo da non dover ricordare forzatamente valori usati più di una volta. I nomi e i valori assegnati sono liberamente selezionabili e utilizzabili dovunque, ma siccome il valore specificato sarà sempre sostituito durante i salvataggi nell'editor, si consiglia di farlo per valori piuttosto particolari/lunghi (esempio con il codice sopra: se una sezione presenta 35468 come valore, sarà sostituito con $beat68 e quindi non sarà valido).
$white=255,255,255
$beat=354
Scorciatoie:
E' possibile utilizzare delle scorciatoie per evitare di dover scrivere più volte valori che si ripetono:
Ad esempio, quando i valori dell'evento sono uguali:
_M,0,1000,2000,320,240,320,240può essere sintetizzato in:
_M,0,1000,2000,320,240
Addirittura, se anche starttime e endtime sono uguali (cioè l'evento è istantaneo),
si può ridurre ulteriormente da:
_M,0,1000,1000,320,240a:
_M,0,1000,,320,240N.B. è importante che la doppia virgola sia presente!
Per ora è tutto!
C'è una sola scorciatoia che ancora non riesco a capire e che quindi non ho potuto aggiungere, lo farò appena possibile.
Per il resto la guida è completa, sono apprezzati suggerimenti!
Buono Storyboarding!