LogoPixi’VN

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.

file_type_ink
ink/start.ink
=== 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.
-> start

Perché?

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-ink

Inizializzare

Dopo l'installazione, usa importInkText() per caricare il tuo script ink:

main.ts
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:

main.ts
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.

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:

file_type_ink
ink
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 handled

Differenze tra ink nativo e ink Pixi’VN

  • in questo caso:

    file_type_ink
    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 seguente shove) è 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:

    file_type_ink
    ink
    -> start
    === start ===
    * [1] -> shove
    * (shove) [2] 2
    * {shove} [3] -> END
    -  -> start
    -> DONE

    Nel caso in cui si scelga 1, la seconda volta verrà aperto start:

    • se utilizzi ink nativo, potrai scegliere solo l'opzione 3. La scelta 2 è 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 2 o 3. La scelta 2 non è nascosta perché Pixi’VN ink non sa che shove è associato a una scelta.

    Per ottenere la stessa logica di start sia in native ink che in Pixi’VN ink dovrai scrivere il seguente codice:

    file_type_ink
    ink
    -> start
    === start ===
    * [1] -> shove
    * (shove) {!shove} [2] 2
    * {shove} [3] -> END
    -  -> start
    -> DONE