Интеграция языка 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 для мини-игр или продвинутых анимаций.
=== 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.
-> startWhy?
Написание нарратива напрямую на JavaScript/TypeScript может быть медленным и сложным, особенно для новичков. ink гораздо проще в изучении и использовании.
Новые разработчики могут начать с шаблона ink, а затем постепенно изучать JavaScript/TypeScript для продвинутых возможностей.
Установка
Templates
Начинаете новый проект Pixi’VN? Используйте шаблон, который уже включает ink.
Чтобы установить пакет ink в существующий JavaScript-проект, используйте одну из следующих команд:
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, ...])Теперь вы можете запускать ink knot (или label) с помощью функций Pixi’VN:
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)
Синтаксис ink, игнорируемый Pixi’VN
Некоторый синтаксис 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