ink 言語の統合
Pixi’VN に統合された、分岐型ストーリー向けに設計されたスクリプト言語 ink を使って、インタラクティブなナラティブを作成できます。
Pixi’VN を使用すると、分岐型ストーリー向けに設計されたスクリプト言語 ink を使って、インタラクティブなナラティブを記述できます。
ink とは? ink は、インタラクティブストーリー向けのシンプルなスクリプト言語で、80 Days、Heaven's Vault、Sorcery! などのゲームで使用されています! 詳しくは ink 公式サイト を参照してください。
ink + Pixi’VN の統合では、inkjs と PixiVNJson を使用して ink コード を解析し、Pixi’VN が解釈可能な JSON を生成します。 これにより、JavaScript/TypeScript と ink は同じストレージとキャンバスを共有し、JavaScript/TypeScript から ink の knots(または labels)を起動したり、その逆を行ったりできます。 ナレーションは ink で記述し、ミニゲームや高度なアニメーションは JavaScript/TypeScript で実装することで、両方の利点を活かせます。
=== 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 スクリプト を読み込みます:
import { importInkText } from '@drincs/pixi-vn-ink'
const inkText = `
=== start ===
Hello
-> END
`
importInkText([inkText, ...])次に、Pixi’VN の関数 を使って ink の knot(または label)を実行できます:
import { narration } from '@drincs/pixi-vn'
narration.call(`start`, {})今後追加予定の機能
これらの機能は現在開発中です。
Issue にいいねやコメントをして、関心を示してください。
- Functions and Game Queries (#11):
- User-created functions (#32)
CHOICE_COUNT()TURNS()TURNS_SINCE()SEED_RANDOM()
LIST(#15)Tunnels(#38)
Pixi’VN で無視される ink 構文
一部の ink 構文は Pixi’VN では無視されます。 これらは ink スクリプト 内で使用できます(例:Inky エディタでのテスト)が、Pixi’VN では処理されません。
INCLUDE
INCLUDE は別の ink ファイルを読み込むための ink ステートメントです。 Pixi’VN では、代わりに importInkText() を使用して複数の ink ファイルを読み込むため、INCLUDE は無視されます。
knots の外にあるナレーション
knots(または labels)の外にあるナレーションは、変数を除いて無視されます。
For example:
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