Labels e steps
Spiega i concetti fondamentali di label e step in Pixi'VN, spiegando nel dettaglio come il flusso narrativo è strutturato e gestito all'interno del motore.
Le visual novel sono solitamente costituite da una sequenza di scene con immagini e testo.
Nomenclature
Il termine label
è preso da Ren'Py, dove funge da "segnalibro" o "punto di riferimento" nella storia. Nel linguaggio ink, il termine equivalente è knot
.
Il termine step
è stato introdotto da Pixi'VN per rappresentare le singole azioni o eventi che si verificano all'interno di una label
.
In Pixi’VN, l’intero flusso narrativo si basa sui concetti di labels
e steps
.
Una label
viene utilizzata per organizzare la narrazione; funziona come un "segnalibro" o una sezione della storia. Tecnicamente, una label
è una classe che funge da contenitore per i label
.
Un step
è un'azione o un evento individuale che si verifica all'interno di una label
. I steps vengono utilizzati per visualizzare immagini, testo e altri elementi narrativi.
Il ciclo di vita di base del gioco è il seguente:
- Il gioco inizia chiamando una
label
. Il primostep
dellalabel
viene eseguito automaticamente. - Dopodiché, collegando la funzione Next Step a un evento (ad esempio il click di un pulsante), ogni volta che la funzione viene chiamata, viene eseguito il
step
successivo dellalabel
. Alcunisteps
possono anche avviare altrelabels
. - Il gioco termina solo quando tutti gli
steps
sono stati completati. A quel punto viene attivata la funzione Game.onEnd.
Aggiungi
Per creare una label
, utilizza la funzione newLabel()
.
Questa funzione ha i seguenti parametri:
id
: Un identificatore univoco (stringa). Utilizzato per fare riferimento allalabel
nel gioco (deve essere univoco).steps
: An array of functions to be executed in order. Per creare un array dinamico, puoi trovare maggiori informazioni qui.options
(Opzionale): Un oggetto con le opzioni dellalabel
:onStepStart
(Opzionale): una funzione eseguita prima di ognistep
. Scopri di più qui.onStepEnd
(Opzionale): una funzione eseguita dopo ognistep
. Scopri di più qui.onLoadingLabel
(Opzionale): funzione eseguita inonStepStart
se l'indicestep
è 0 oppure quando si carica un file di salvataggio. Scopri di più qui.
import { narration, StepLabelProps } from '@drincs/pixi-vn'
export const startLabel = newLabel("start_label",
[
() => {
narration.dialogue = { character: liam, text: "Example of dialogue" }
},
(props: StepLabelProps, { labelId }) => narration.jumpLabel(labelId, props),
]
)