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 primostepdellalabelviene 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
stepsuccessivo dellalabel. Alcunistepspossono anche avviare altrelabels. - Il gioco termina solo quando tutti gli
stepssono 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 allalabelnel gioco (deve essere univoco).steps: Una serie di funzioni da eseguire in ordine. 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 inonStepStartse 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.jump(labelId, props),
]
)