Integrazione del linguaggio ink
Pixi’VN ti consente di scrivere narrazioni interattive utilizzando ink, un linguaggio di scripting progettato per storie ramificate.
Cos'è ink? ink è un semplice linguaggio di scripting per storie interattive, utilizzato in giochi come 80 Days, Heaven's Vault e Sorcery! Per saperne di più, visita il sito web di ink.
L'integrazione ink + Pixi’VN utilizza inkjs e PixiVNJson per analizzare il codice ink e generare JSON che Pixi’VN può interpretare. Ciò significa che JavaScript/TypeScript e ink condividono lo stesso spazio di archiviazione e la stessa area di lavoro, e puoi avviare knots (o labels) di ink da JavaScript/TypeScript e viceversa. Ottieni il meglio da entrambi i mondi: scrivi la narrazione in ink e usa JavaScript/TypeScript per i minigiochi o le animazioni avanzate.
=== start ===
We arrived into London at 9.45pm exactly.
* "There is not a moment to lose!"[] I declared.
-> hurry_outside
* "Monsieur, let us savour this moment!"[] I declared.
My master clouted me firmly around the head and dragged me out of the door.
-> dragged_outside
* [We hurried home] -> hurry_outside
=== hurry_outside ===
We hurried home to Savile Row -> as_fast_as_we_could
=== dragged_outside ===
He insisted that we hurried home to Savile Row
-> as_fast_as_we_could
=== as_fast_as_we_could ===
<> as fast as we could.
-> startPerché?
Scrivere una narrazione direttamente in JavaScript/TypeScript può essere lento e complesso, soprattutto per i principianti. ink è molto più facile da imparare e scrivere.
I nuovi sviluppatori possono iniziare con un modello ink, per poi imparare gradualmente JavaScript/TypeScript per ottenere funzionalità avanzate.
Installazione
Templates
Stai iniziando un nuovo progetto Pixi'VN? Utilizza un template che includa già ink.
Per installare il pacchetto ink in un progetto JavaScript esistente, utilizzare uno dei seguenti comandi:
npm install @drincs/pixi-vn @drincs/pixi-vn-inkInizializzare
Dopo l'installazione, usa importInkText() per caricare il tuo script ink:
import { importInkText } from '@drincs/pixi-vn-ink'
const inkText = `
=== start ===
Hello
-> END
`
importInkText([inkText, ...])Ora puoi eseguire un ink knot (o label) utilizzando le funzioni Pixi’VN:
import { narration } from '@drincs/pixi-vn'
narration.call(`start`, {})Prossime funzionalità
Queste funzionalità sono in fase di sviluppo.
Mostra il tuo interesse mettendo "Mi piace" o commentando gli argomenti.
- Functions and Game Queries (#11):
- User-created functions (#32)
CHOICE_COUNT()TURNS()TURNS_SINCE()SEED_RANDOM()
LIST(#15)Tunnels(#38)
Sintassi ignorata da Pixi'VN
Pixi'VN ignora parte della sintassi ink. Puoi usarli nel tuo script ink (ad esempio, per testare nell'editor Inky), ma Pixi'VN li ignorerà.
INCLUDE
INCLUDE è un'istruzione ink per includere un altro file ink. In Pixi'VN, dovresti usare importInkText() per caricare più file ink, quindi INCLUDE viene ignorato.
Narrazione fuori dai knots
La narrazione al di fuori dei knots (o labels) viene ignorata, fatta eccezione per le variabili.
Ad esempio:
VAR my_var = false // ✅ This will be handled (because it is a variable)
Hello // ❌ This will be ignored [!code warning]
-> start // ❌ This will be ignored [!code warning]
=== start === // ✅ This will be handled
My name is John // ✅ This will be handled
-> DONE // ✅ This will be handledDifferenze tra ink nativo e ink Pixi’VN
-
in questo caso:
ink { shuffle: - 2 of Diamonds. 'You lose this time!' crowed the croupier. }Nella versione nativa di ink, vedrai due dialoghi diversi, il primo sarà
2 of Diamonds.e il secondo sarà'You lose this time!' crowed the croupier..In Pixi’VN ink, non vedrai due dialoghi diversi, ma il seguente dialogo:
2 of Diamonds.\n\n'You lose this time!' crowed the croupier.. In Markdown verrà visualizzato in questo modo:2 of Diamonds. 'You lose this time!' crowed the croupier. -
se un
weave(nell'esempio seguenteshove) è associato a una scelta una tantum e viene aperto con-> shove, ciò non invaliderà la scelta una tantum. Per invalidarlo dovrai selezionare la scelta come di consueto.Ecco un esempio:
ink -> start === start === * [1] -> shove * (shove) [2] 2 * {shove} [3] -> END - -> start -> DONENel caso in cui si scelga
1, la seconda volta verrà apertostart:- se utilizzi ink nativo, potrai scegliere solo l'opzione
3. La scelta2è nascosta perché essendo un ink nativo* "una tantum" saprà che hai già preso questa decisione con-> shove. - se utilizzi Pixi’VN ink, potrai scegliere l'opzione
2o3. La scelta2non è nascosta perché Pixi’VN ink non sa cheshoveè associato a una scelta.
Per ottenere la stessa logica di
startsia in native ink che in Pixi’VN ink dovrai scrivere il seguente codice:ink -> start === start === * [1] -> shove * (shove) {!shove} [2] 2 * {shove} [3] -> END - -> start -> DONE - se utilizzi ink nativo, potrai scegliere solo l'opzione