LogoPixi’VN

Интеграция языка ink

Pixi’VN позволяет создавать интерактивные нарративы с использованием ink — языка сценариев, разработанного для разветвлённых историй и интегрированного с Pixi’VN.

Pixi’VN позволяет писать интерактивные нарративы с использованием ink — скриптового языка, созданного для ветвящихся историй.

Что такое ink? ink — это простой скриптовый язык для интерактивных историй, используемый в таких играх, как 80 Days, Heaven's Vault и Sorcery! Подробнее см. на официальном сайте ink.

Интеграция ink + Pixi’VN использует inkjs и PixiVNJson для разбора ink кода и генерации JSON, который может интерпретировать Pixi’VN. Это означает, что JavaScript/TypeScript и ink используют общее хранилище и canvas, и вы можете запускать ink knots (или labels) из JavaScript/TypeScript и наоборот. Вы получаете лучшее из двух миров: написание повествования в 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

Why?

Написание нарратива напрямую на JavaScript/TypeScript может быть медленным и сложным, особенно для новичков. ink гораздо проще в изучении и использовании.

Новые разработчики могут начать с шаблона ink, а затем постепенно изучать JavaScript/TypeScript для продвинутых возможностей.

Установка

Templates

Начинаете новый проект Pixi’VN? Используйте шаблон, который уже включает ink.

Чтобы установить пакет ink в существующий JavaScript-проект, используйте одну из следующих команд:

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, ...])

Теперь вы можете запускать ink knot (или label) с помощью функций Pixi’VN:

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

narration.call(`start`, {})

Будущие функции

Эти функции находятся в разработке.

Покажите свою заинтересованность, поставив лайк или оставив комментарий в issue.

Синтаксис ink, игнорируемый Pixi’VN

Некоторый синтаксис 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