Написание сценариев и диалоговых древ игр

Наша компания по разработке видеоигр ведет независимые проекты, совместно с клиентом создает игры и оказывает дополнительные операционные услуги. Опыт нашей команды позволяет нам охватить все игровые платформы и разработать потрясающий продукт, соответствующий видению клиента и предпочтениям игроков.

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Написание сценариев и диалоговых древ игр
Сложная
от 1 недели до 2 месяцев
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Написание сценариев и диалоговых древ игр

Игровой сценарий — это не киносценарий с пробелами под реплики. Это технический документ с состояниями, условиями и ветвлениями, который одновременно читает нарратив-дизайнер и парсит движок диалогов. Написать сценарий, который хорошо звучит и при этом корректно реализуется без армии флагов и хардкода — задача, требующая понимания архитектуры с обеих сторон.

Структура диалогового древа: узлы, ребра, условия

Диалоговое древо — это ориентированный граф, а не дерево в строгом смысле: один узел может иметь несколько входящих связей, и к нему можно прийти из разных точек нарратива. Каждый DialogueNode хранит: speaker ID, текст реплики, список исходящих рёбер (DialogueEdge[]), опциональный список условий входа и список actions (триггеры событий игрового мира).

Условия — это проверки игрового состояния: QuestFlag("rescued_merchant") == true, PlayerLevel >= 5, Reputation("thieves_guild") > 30. Если ни одно условие входящей реплики не выполнено — ветка скрыта или заменяется fallback-репликой.

Actions — это воздействия на игровой мир: выдать квест, добавить предмет, изменить репутацию, воспроизвести анимацию, запустить кат-сцену. Actions прикрепляются к узлам или рёбрам (при выборе варианта ответа).

Это разделение на conditions и 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 → правка → финальный текст.

Обязательный этап — тест всех ветвей вручную в редакторе с включёнными логами: какой узел загрузился, какое условие сработало. Это находит «мёртвые» ветки, к которым нет пути, и узлы без выхода, зависающие диалог.