LogoPixi’VN

ink 言語の統合

Pixi’VN に統合された、分岐型ストーリー向けに設計されたスクリプト言語 ink を使って、インタラクティブなナラティブを作成できます。

Pixi’VN を使用すると、分岐型ストーリー向けに設計されたスクリプト言語 ink を使って、インタラクティブなナラティブを記述できます。

ink とは? ink は、インタラクティブストーリー向けのシンプルなスクリプト言語で、80 Days、Heaven's Vault、Sorcery! などのゲームで使用されています! 詳しくは ink 公式サイト を参照してください。

ink + Pixi’VN の統合では、inkjsPixiVNJson を使用して ink コード を解析し、Pixi’VN が解釈可能な JSON を生成します。 これにより、JavaScript/TypeScript と ink は同じストレージとキャンバスを共有し、JavaScript/TypeScript から inkknots(または labels)を起動したり、その逆を行ったりできます。 ナレーションは ink で記述し、ミニゲームや高度なアニメーションは JavaScript/TypeScript で実装することで、両方の利点を活かせます。

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

なぜこれを使うのか?

JavaScript/TypeScript で直接ナラティブを書くのは、特に初心者にとっては遅く複雑になりがちです。 ink は学習しやすく、記述も簡単です。

新しい開発者は ink テンプレート から始め、必要に応じて JavaScript/TypeScript を学びながら高度な機能に進むことができます。

インストール

Templates

新しい Pixi’VN プロジェクトを開始しますか? ink がすでに含まれている テンプレート を使用してください。

既存の JavaScript プロジェクトに ink パッケージをインストールするには、次のいずれかのコマンドを使用します:

npm install @drincs/pixi-vn @drincs/pixi-vn-ink

初期化

インストール後、importInkText() を使用して ink スクリプト を読み込みます:

main.ts
import { importInkText } from '@drincs/pixi-vn-ink'

const inkText = `
=== start ===
Hello
-> END
`

importInkText([inkText, ...])

次に、Pixi’VN の関数 を使って inkknot(または label)を実行できます:

main.ts
import { narration } from '@drincs/pixi-vn'

narration.call(`start`, {})

今後追加予定の機能

これらの機能は現在開発中です。

Issue にいいねやコメントをして、関心を示してください。

Pixi’VN で無視される ink 構文

一部の ink 構文は Pixi’VN では無視されます。 これらは ink スクリプト 内で使用できます(例:Inky エディタでのテスト)が、Pixi’VN では処理されません。

INCLUDE

INCLUDE は別の ink ファイルを読み込むための ink ステートメントです。 Pixi’VN では、代わりに importInkText() を使用して複数の ink ファイルを読み込むため、INCLUDE は無視されます。

knots の外にあるナレーション

knots(または labels)の外にあるナレーションは、変数を除いて無視されます。

For example:

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