Написання сценаріїв та діалогових дерев ігор
Ігровий сценарій — це не кінозценарій з пробілами під реплики. Це технічний документ зі станами, умовами і ветвленнями, який одночасно читає нарватив-дизайнер і парсить рушій діалогів. Написати сценарій, який добре звучить і при цьому коректно реалізується без армії прапорів і hardcода — задача, що вимагає розуміння архітектури з обох боків.
Структура діалогового дерева: вузли, ребра, умови
Діалогове дерево — це орієнтований граф, а не дерево у строгому сенсі: один вузол може мати кілька вхідних з'єднань, і до нього можна прийти з різних точок нарративу. Кожний DialogueNode зберігає: speaker ID, текст реплики, список вихідних ребер (DialogueEdge[]), опціональний список умов входу та список actions (тригери подій ігрового світу).
Умови — це перевірки ігрового стану: QuestFlag("rescued_merchant") == true, PlayerLevel >= 5, Reputation("thieves_guild") > 30. Якщо жодна умова вхідної реплики не виконана — гілка приховується або замінюється fallback-репікою.
Actions — це впливи на ігровий світ: видати квест, додати предмет, змінити репутацію, відтворити анімацію, запустити кат-сцену. Actions прикріплюються до вузлів або ребер (при виборі варіанту відповіді).
Це розділення на умови та actions — основа будь-якої нарративної системи. Не важливо, реалізовано це в Yarn Spinner, Ink, Dialogue System for Unity або кастомному редакторі — логіка одна.
Yarn Spinner та Ink: реальна різниця
Yarn Spinner — текстовий формат з синтаксисом, близьким до Twine. Умови пишуться прямо у скрипті: <<if $player_level >= 5>>. Команди: <<jump NodeName>>, <<set $flag = true>>. Добре підходить для лінійних діалогів з ветвленнями, легко редагується письменниками без технічного бекграунду. Інтегрується в Unity через офіційний пакет з компонентом DialogueRunner.
Ink — потужніша мова з концепцією «knots» та «diverts», підтримкою лічильників відвідувань (visited, visit_count) і weave-структурою для паралельних нарративних потоків. Використовується у Disco Elysium, 80 Days, Heaven's Vault. Для складних нарративів з відстеженням історії взаємодій Ink зазвичай чистіше.
Вибір інструменту залежить від нарративної складності проекту: для 200 рядків діалогу в action-RPG достатньо Yarn Spinner; для нарративної гри з 100k+ словами та ветвною історією — Ink або кастомне рішення.
Як писати реплики, які технічно працюють
Кожна реплика повинна функціонувати без попереднього контексту — тому що гравець може прийти до цього вузла з різних гілок. Перевіряється просто: прочитати реплику в ізоляції. Якщо незрозуміло — потрібен fallback-контекст або реструктуризація.
Варіанти відповідей не повинні бути семантично порожніми. «Так», «Ні», «Розкажи більше» — це погані варіанти: вони не передають характер гравця. «Я вже чув про це» / «Продовжуй, мені цікаво» / «Некогди — що потрібно?» — це варіанти з голосом персонажа.
Локалізаційні мітки. Кожна рядок отримує унікальний ID (NPC_MERCHANT_GREETING_01) — не порядковий номер. При локалізації перекладач бачить контекст в ID, а не гадає що таке рядок №847. Це стандартна практика при роботі з LocalizationTable в Unity Localization пакеті.
Нарративний дизайн: квести та структура
Окремий масштаб роботи — написання квестових діалогів з урахуванням станів квеста. Один NPC може мати різні реплики в залежності від QuestState: NotStarted, InProgress, ObjectiveComplete, Turned In, Failed. Це мінімум 5 версій діалогового дерева на квест, або одне дерево з умовними гілками на кожен state.
Типічна помилка: написати діалоги лише для NotStarted та InProgress, забути про Turned In — і гравець після здачі квеста чує видачу завдання повторно. QA відловлює, але правки вимагають роботи як нарративу, так і програміста.
Діалог як навчання механіці. Найефективніші tutorial-діалоги не говорять «натисни X для атаки» — вони вбудовують навчання у нарватив: «Покажи мені, як ти вмієш обходитися з мечем» з наступним вимушеним енкаунтером. Сценарій і дизайн рівня пишуться разом.
Орієнтовні строки
| Масштаб | Обсяг | Строк |
|---|---|---|
| Малий | 1–3 квести, ~500 рядків діалогу | 1–2 тижні |
| Середній | Основний сюжет + побічки, ~3000–5000 рядків | 1–2 місяці |
| Великий | Повна нарративна система, 20k+ рядків | 3–6 місяців |
Процес роботи над сценарієм
Починаємо з нарративного документа: хто персонаж, які його мотивації, що повинен дізнатися і почути гравець після діалогу. Тільки потім — структура вузлів в інструменті (Yarn Spinner Visual Editor або Articy:Draft). Чорновик діалогу → технічне ревю на виконуваність умов та actions → правка → фінальний текст.
Обов'язковий етап — тест усіх гілок вручну в редакторі з увімкненими логами: який вузол завантажився, яка умова спрацювала. Це знаходить «мертві» гілки, до яких немає шляху, і вузли без виходу, зависаючі діалог.





