NodeTale это Unity-плагин для быстрого создания ветвящихся диалогов и сюжетных сцен без ручной сборки логики в коде.
Он дает команде удобный графовый редактор прямо внутри Unity: реплики, выборы игрока, условия, переменные, локализация, предпросмотр диалога и диагностика ошибок собираются в одном месте.
NodeTale
Плагин помогает быстрее прототипировать нарратив, проверять ветки и передавать сценарии от автора к разработчику без хаоса в таблицах и скриптах.
Целевая аудитория — инди-разработчики, геймджем-команды, нарративные дизайнеры и Unity-команды, которым нужен понятный инструмент для создания интерактивных диалогов.
NodeTale
Архитектура решения
Проект оформлен как Unity UPM-пакет, который можно подключить к любому Unity 6.x проекту как локальный или embedded package.
Структура разделена на несколько ключевых частей:
Runtime — ядро плагина. Здесь находятся сериализуемая модель данных диалогов, NPC, реплик, выборов, условий, переменных и связей между узлами. Также реализован DialoguePlayer — runtime-компонент для прохождения диалога, выбора веток и проверки условий.
Используемые технологии
Основная технология — Unity 6.x и C#. Для визуального графового редактора используется UnityEditor.Experimental.GraphView, а интерфейс редактора построен на UI Toolkit. Данные диалогов хранятся в ScriptableObject, что делает их нативными Unity-ассетами и удобными для сохранения, версионирования и использования в игре.
Плагин поддерживает CSV/TSV-импорт и экспорт для работы с локализацией через Google Sheets или похожие таблицы. Для проверки поведения используются Unity Test Runner и EditMode-тесты.
Scene node
Архитектура сделана расширяемой: игровая логика не зашита внутрь плагина. Проекты могут подключать собственные исполнители функций, сцен, условий и внешних ссылок через интерфейсы. Благодаря этому NodeTale остается универсальным редактором диалогов, а конкретная игра сама решает, как именно выполнять игровые события.
Function node
Editor — визуальный редактор внутри Unity. В этой части находятся окна редактора, графовая поверхность, инспекторы узлов, предпросмотр диалога, импорт/экспорт локализации, autosave, диагностика связей и настройки интерфейса.
Samples~ — демонстрационный пример, который создает готовую базу диалогов с NPC, ветвлениями, условиями и комментариями.
Tests/Editor — EditMode-тесты, проверяющие поведение runtime-логики, графа, предпросмотра, локализации, autosave и редакторских сценариев.
История разработки
Разработка NodeTale началась с MVP: был создан Unity UPM-пакет, базовая модель данных на ScriptableObject, графовый редактор, узлы реплик, варианты ответа, связи и простой предпросмотр диалога.
После этого основной фокус сместился на удобство редактора. Были доработаны создание и перемещение узлов, удаление, сохранение, autosave, предпросмотр и поддержка Unity Undo/Redo. На этом этапе главной проблемой была стабильность графа: связи между узлами, выделение, удаление и отмена действий должны были работать предсказуемо.
Следующая итерация добавила инструменты для реального нарративного пайплайна: условия, переменные, комментарии, диагностику ошибок в ветвлениях и систему speaker-ов. Это решало проблему сложных диалогов, где автору важно видеть ошибки до запуска игры.
История общения с агентом Codex
Отдельным этапом стала локализация. Были добавлены импорт и экспорт CSV/TSV для работы с таблицами. Основная сложность была в повторном импорте: нужно было обновлять текст, но не ломать уже собранный граф. Для этого использованы стабильные ключи локализации.
Затем появилась архитектура для production-интеграции: executable nodes, voice keys и расширяемые интерфейсы для условий, переменных, сцен и функций. Главная проблема здесь была в разделении ответственности: плагин должен оставаться универсальным, а логика конкретной игры, аудио, боев и сцен должна подключаться через project-side адаптеры.
Финальные итерации были посвящены polish и стабильности: rich text, палитра цветов, WASD-навигация по графу, горячие клавиши, русско-английский интерфейс, sample-контент, тесты и документация.
Agent.md и Readme.md проекта
Оценка вклада
Основная часть кода была сгенерирована с помощью ИИ-инструментов. Мой вклад заключался в постановке продуктового видения, формулировании требований, проверке результата в редакторе, выявлении UX-проблем и итерационном уточнении поведения.
Ручных правок кода я не вносил: доработки выполнялись через уточняющие промпты и тестирование. Такой подход позволил быстро пройти путь от идеи до рабочего прототипа, при этом сохранить авторский контроль над логикой, удобством использования и соответствием инструмента задачам проекта.
Debug node

