Как создать визуальную новеллу: от сценария до игры в Godot

Чтобы создать визуальную новеллу, напишите сценарий со схемой развилок и выберите движок: конструктор, Ren'Py или Godot.

Внутри рабочий прототип на Godot 4 с репликами и выбором, проверенный в редакторе, установка плагина Dialogic и сборка игры для Steam, RuStore и itch.io.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3177 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3831 экспертное мнение Подписаться на Телеграм-канал
Обложка: Как создать визуальную новеллу: от сценария до игры в Godot

Чтобы создать визуальную новеллу, сначала пишут сценарий со схемой развилок, потом выбирают движок и собирают в нём сцены: фон, персонажа, реплику и кнопки выбора. Новичку без кода хватит онлайн-конструктора, для классической новеллы есть Ren’Py, а Godot подойдёт, если в истории будут мини-игры или своя механика.

Ниже разберём выбор движка и соберём рабочий прототип новеллы в Godot 4: с репликами, развилкой и двумя ветками. Если вы ещё сравниваете движки и языки для игр вообще, начните со статьи как научиться создавать игры.

CheckroiCheckroiПодборка курсов по Godot1 курс • 1 школаСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Что подготовить до первой строчки кода

Рой раскладывает на столе карточки сцен и рисует схему развилок для своей новеллы

Визуальная новелла прежде всего текст. Код и картинки только подают историю, поэтому начинать стоит со сценария.

Минимальный набор для первой главы:

Что нужно Что именно подготовить Кто обычно делает
Сценарий Реплики по сценам, имена говорящих, места выбора Сценарист или нарративный дизайнер
Схема развилок Какой выбор куда ведёт и где ветки сходятся обратно Тот же автор, на бумаге или в любой программе для схем
Фоны Одна картинка на каждую локацию 2D-художник
Спрайты персонажей Персонаж в полный рост или по пояс, 3–5 эмоций 2D-художник
Звук Фоновая музыка и пара шумов вроде шагов и двери Композитор или бесплатные библиотеки звуков

Как пишут истории для игр и чем сценарист отличается от нарративного дизайнера, мы разбирали в обзорах профессий игровой сценарист и нарративный дизайнер. Про рисованную часть есть материал кто такой 2D-художник.

Совет по развилкам: на первую новеллу берите один выбор на главу и не больше двух веток. Каждая новая развилка удваивает объём текста, и автор бросает проект на середине, не дописав ветки.

Как написать сюжет и сценарий новеллы

Сюжет новеллы удобно собирать от развилок. Сначала решите, какие выборы будут у игрока и к каким концовкам они ведут, потом пишите сцены между ними.

  1. Сформулируйте завязку в одном предложении. Кто герой, чего он хочет и что ему мешает. Например: «Аня нашла письмо без обратного адреса и решает, открывать ли его при друге».
  2. Нарисуйте схему. Прямоугольник на сцену, ромб на выбор, стрелки между ними. Для первой главы хватит 5–7 сцен и одного ромба.
  3. Решите, сходятся ли ветки. Если после выбора ветки снова встречаются в общей сцене, текста меньше. Если расходятся до конца, каждая концовка требует своей главы.
  4. Пишите сцены репликами. Одна реплика помещается в окно диалога, это 1–3 строки на экране. Длинный монолог режьте на несколько щелчков.

Удобнее всего записывать сценарий сразу в том виде, в каком его прочитает движок:

Сцена Кто говорит Реплика Фон, эмоция, звук
start Аня Ты всё-таки пришёл. Комната, Аня встревожена
start Макс Обещал же. Что случилось? Тот же фон
start Выбор Открыть письмо → open; Отложить до утра → later Музыка стихает

Такую таблицу почти без правок переносят в код: в примере ниже столбец «Сцена» становится ключом словаря, а реплики идут парами «имя, текст». Если сценарий пишет один человек, а собирает другой, таблица заодно снимает споры о том, где какая картинка.

Писать сценарий можно в любом текстовом редакторе или таблице. Отдельная программа для сюжета нужна, когда веток становится больше десятка и схема перестаёт помещаться на лист.

Канал основателя Checkroi Вани Буявца3 800 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Какой движок выбрать для визуальной новеллы

Рабочий стол автора визуальной новеллы: ноутбук с окном диалога, скетчи персонажей и схема ветвления

Программ для создания новелл много, но почти все сводятся к трём подходам: конструктор в браузере, специализированный движок и универсальный движок с плагином.

Инструмент Что это Нужно ли программировать Кому подходит
VetkaNovel Бесплатный онлайн-конструктор, работает и с телефона Нет Тем, кто хочет рассказать историю за вечер
Ren’Py Бесплатный движок, созданный под визуальные новеллы, на ноябрь 2026 актуальна версия 8.5.3 Простой сценарный язык, сложная логика пишется на Python Классической новелле с текстом, выборами и сохранениями
Godot Бесплатный универсальный движок, на ноябрь 2026 актуальна версия 4.7.2 Да, язык GDScript или готовый плагин Dialogic Новелле с мини-играми, картой, инвентарём, своим интерфейсом
Naninovel Платное расширение для Unity Свой сценарный язык поверх Unity Тем, кто уже работает в Unity

Сделать новеллу на телефоне проще всего в конструкторе: VetkaNovel открывается в мобильном браузере. У Godot есть редактор для Android, но собирать новеллу удобнее на компьютере. Если выбираете не только для новеллы, загляните в обзор программ для создания игр на компьютер.

Ren’Py проще на старте: сцены там пишутся почти как пьеса, сохранения и меню уже встроены. Сам движок написан на Python, и сложную логику тоже пишут на нём. Азы языка пригодятся, начать можно с примеров Hello World на Python.

Godot требует больше работы в начале, но не упирается в жанр. Когда в новелле появляется головоломка, бой или прокачка героя, на Godot её не придётся переносить на другой движок. Программы обучения по нему собраны в каталоге в разделе курсы по Godot.

Как создать новеллу в Godot: пошаговая инструкция

Кадры ниже сняты в веб-редакторе Godot 4.7.2. Он открывается в браузере без установки и без регистрации, а меню у него те же, что у обычной программы. На первом экране веб-редактор сам предупреждает, что предназначен для обучения и экспериментов и для рабочих проектов не рекомендуется. По документации Godot у него нет экспорта игры, поэтому для готовой сборки всё равно понадобится версия для компьютера.

  1. Создайте проект. В менеджере проектов нажмите «Создать новый проект», впишите имя и оставьте отрисовщик «Совместимость»: для 2D-новеллы его хватает, а в браузере работает только он. Нажмите «Создать».
Окно «Создать новый проект» в Godot 4.7: имя проекта, путь и отрисовщик «Совместимость»
Вместо «Новый игровой проект» впишите своё название. Отрисовщик «Совместимость» в веб-редакторе выбран по умолчанию, другие там недоступны
  1. Выберите корневой узел. На панели «Сцена» нажмите «Пользовательский интерфейс». Появится узел Control, он займёт весь экран игры.
  2. Прикрепите скрипт. Нажмите на значок свитка с плюсом над деревом узлов. Откроется окно «Прикрепить скрипт узла»: язык GDScript, путь вроде res://control.gd. Нажмите «Создать».
Окно «Прикрепить скрипт узла» в Godot: язык GDScript, узел Control, путь res://control.gd
Godot предлагает имя файла по имени узла. Его можно оставить или переименовать, на работу кода это не влияет
  1. Замените шаблон своим кодом. Godot откроет вкладку «Скрипт» с заготовкой. Удалите её и вставьте код из следующего раздела целиком.
Код визуальной новеллы на GDScript во вкладке «Скрипт» редактора Godot
Сценарий хранится в словаре story в начале скрипта. В нашем проекте файл назван novella.gd, а корневой узел Novella
  1. Сохраните сцену и запустите игру. Сохраните сцену сочетанием Ctrl+S (на Mac Cmd+S), затем нажмите треугольник «Запустить проект» в правом верхнем углу или клавишу F5 (на Mac Cmd+B). При первом запуске Godot спросит, какую сцену считать главной: нажмите «Выбрать текущую сцену».
  2. Пройдите главу. Реплики листаются кликом мыши или клавишей Enter. На развилке появятся две кнопки, и каждая уводит в свою ветку.
Развилка в прототипе визуальной новеллы на Godot: реплика Ани и две кнопки выбора
Так выглядит выбор в запущенной игре. Пока кнопки на экране, клик мимо них реплику не листает

После нажатия «Открыть письмо» история уходит в ветку open, после второй кнопки в ветку later. Когда реплики ветки кончаются, на экране появляется «Конец главы».

Ветка open после выбора «Открыть письмо» в прототипе новеллы на Godot
После нажатия «Открыть письмо» кнопки пропали, и история пошла по ветке open

Код новеллы на GDScript

Весь прототип умещается в один скрипт. Мы запускали его в Godot 4.7.2: кадры выше сняты с этого кода без правок.

extends Control

# Сценарий: метка → список реплик. Словарь с ключом "choice" — развилка.
var story := {
	"start": [
		["Аня", "Ты всё-таки пришёл."],
		["Макс", "Обещал же. Что случилось?"],
		["Аня", "Я нашла письмо без обратного адреса. Откроем?"],
		{"choice": [["Открыть письмо", "open"], ["Отложить до утра", "later"]]},
	],
	"open": [
		["Аня", "Тут адрес и время: завтра, семь утра."],
		["Макс", "Значит, идём вместе."],
	],
	"later": [
		["Аня", "Ладно. Но я его всё равно открою, когда ты уйдёшь."],
	],
}

var label := "start"
var index := 0

var name_label := Label.new()
var text_label := Label.new()
var choices := VBoxContainer.new()


func _ready() -> void:
	var box := VBoxContainer.new()
	box.set_anchors_and_offsets_preset(Control.PRESET_BOTTOM_WIDE)
	box.offset_left = 40
	box.offset_right = -40
	box.offset_top = -240
	box.offset_bottom = -40
	add_child(box)
	name_label.add_theme_font_size_override("font_size", 28)
	text_label.add_theme_font_size_override("font_size", 24)
	text_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
	box.add_child(name_label)
	box.add_child(text_label)
	box.add_child(choices)
	show_line()


func _input(event: InputEvent) -> void:
	var pressed: bool = event.is_action_pressed("ui_accept") \
		or (event is InputEventMouseButton and event.pressed)
	if pressed and choices.get_child_count() == 0:
		index += 1
		show_line()


func show_line() -> void:
	var lines: Array = story[label]
	if index >= lines.size():
		name_label.text = ""
		text_label.text = "Конец главы"
		return
	var line = lines[index]
	if line is Dictionary:
		for option in line["choice"]:
			var button := Button.new()
			button.text = option[0]
			button.pressed.connect(jump.bind(option[1]))
			choices.add_child(button)
		return
	name_label.text = line[0]
	text_label.text = line[1]


func jump(target: String) -> void:
	for button in choices.get_children():
		choices.remove_child(button)
		button.queue_free()
	label = target
	index = 0
	show_line()

Разберём, что здесь за что отвечает.

  • Словарь story хранит сценарий. Ключ, например "start", называет ветку, значение содержит список её реплик. Реплика записана парой «имя, текст», а развилка записана словарём с ключом "choice".
  • _ready() собирает интерфейс: контейнер внизу экрана, подпись с именем, подпись с текстом и пустой контейнер для кнопок.
  • show_line() показывает текущую реплику. Если вместо реплики попалась развилка, функция создаёт по кнопке на каждый вариант.
  • jump() убирает кнопки и переводит историю в выбранную ветку с первой реплики.
  • _input() листает реплики по клику и по Enter, но молчит, пока на экране висят кнопки выбора.

Чтобы дописать главу, меняйте только словарь. Для новой ветки добавьте ключ со списком реплик, для новой развилки вставьте ещё один словарь {"choice": …} в нужном месте списка.

Если пишете на GDScript впервые: отступы в нём значат то же, что в Python. Строка с лишним или недостающим табом ломает скрипт, и Godot подсветит её ещё до запуска.

Фоны, персонажи и музыка

Прототип выше показывает только текст. Картинки и звук добавляются узлами, без новой логики.

  • Фон. Узел TextureRect на весь экран, первым в дереве, чтобы остальное рисовалось поверх.
  • Персонаж. Ещё один TextureRect со спрайтом. Эмоции меняются подменой картинки в его свойстве texture.
  • Музыка. Узел AudioStreamPlayer с файлом трека, включается флажком Autoplay в инспекторе: свойства узлов Godot показывает по-английски даже в русском интерфейсе.

Музыку для новеллы часто заказывают отдельно. Что входит в работу автора саундтреков, мы разбирали в обзоре профессии композитора.

Картинки и звуки перетащите в панель «Файловая система», и Godot сам их импортирует. Чтобы фон менялся вместе с репликой, добавьте в каждую реплику третье поле с путём к картинке и выставляйте его в show_line().

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

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 800 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Dialogic 2: готовая система диалогов для Godot

Dialogic это бесплатный плагин под лицензией MIT, который превращает Godot в редактор визуальных новелл. В нём есть персонажи с портретами, таймлайны с репликами, развилки, переменные и сохранения.

На ноябрь 2026 у Dialogic 2 статус альфа-версии, последний выпуск 2.0 Alpha 20. Плагину нужен Godot 4.5 или новее, а разработчики предупреждают, что между альфа-выпусками код может меняться, поэтому перед обновлением делайте копию проекта.

Установка по инструкции Dialogic:

  1. Скачайте ZIP нужной версии на странице выпусков на GitHub.
  2. Распакуйте из архива папку addons и положите её в папку проекта. В проекте появится путь res://addons/dialogic.
  3. Откройте «Проект» → «Настройки проекта…», вкладку «Модули», и отметьте «Включено» напротив Dialogic.
  4. Перезапустите Godot. Вверху редактора, рядом с вкладками 2D, 3D и «Скрипт», появится вкладка плагина.

Дальше работа идёт в редакторе плагина. Персонажи создаются кнопкой Add Character и хранятся в файлах .dch, сцены с репликами называются таймлайнами и лежат в файлах .dtl. Таймлайн можно собирать блоками или писать текстом вида «Имя: реплика», а запускается он в игре одним вызовом Dialogic.start() с именем таймлайна.

Что сравниваем Свой скрипт Dialogic 2
Порог входа Нужно понимать GDScript Можно работать почти без кода
Сохранения и журнал Писать самому Есть в плагине
Стабильность Ваш код, ваши правила Альфа, возможны изменения при обновлении
Нестандартный интерфейс Любой Через стили и собственные сцены плагина

Как собрать игру и опубликовать новеллу

Рой с гордостью показывает запущенную на ноутбуке первую главу своей новеллы

В веб-редакторе экспорта нет. Скачайте проект архивом через «Проект» → «Инструменты» → «Загрузить исходный код проекта» и откройте его в Godot на компьютере: веб-редактор хранит файлы во внутренней базе браузера, обычной папки на диске у него нет.

Сборка в программе для компьютера идёт так:

  1. Откройте «Редактор» → «Управление шаблонами экспорта…» и установите шаблоны для нужных платформ. Без них Godot не соберёт игру.
  2. Откройте «Проект» → «Экспортировать…», нажмите «Добавить…» и выберите платформу: Windows, Linux, macOS, Android, iOS или Web.
  3. Укажите путь и нажмите «Экспортировать проект…». Для Android дополнительно понадобятся инструменты Android SDK, это расписано в разделе об экспорте.

Где выкладывать готовую новеллу:

  • Steam. По правилам Steam Direct за каждую новую игру платят взнос 100 долларов. Он не возвращается, но компенсируется в выплатах, когда скорректированная выручка игры достигает 1 000 долларов.
  • RuStore. Магазин приложений для Android-сборки, если новеллу хотят ставить на телефон.
  • itch.io. Площадка для инди-игр, где удобно выложить первую главу и собрать первые отзывы. Из России сайт открывается не всегда: при сбое загрузите страницу позже.

Частые ошибки и что с ними делать

Большую часть этих проблем мы поймали сами, пока собирали прототип для статьи.

  • Клик по экрану не листает реплики. Причина: обработка ввода в _unhandled_input(). Корневой Control по умолчанию забирает клики мыши себе, и до этой функции они не доходят, а Enter работает.
    Решение: ловить ввод в _input(), как в коде выше.
  • Кнопки выбора копятся или реплика проскакивает. Причина: старые кнопки остались в контейнере, и проверка на развилку срабатывает неверно.
    Решение: перед переходом в ветку убирать кнопки из контейнера и только потом удалять их, как в функции jump().
  • Скрипт не запускается, строка подсвечена красным. Чаще всего это отступ: в GDScript смешались пробелы и табы или пропал таб в теле функции.
    Решение: выровнять строку по соседним. Табы редактор помечает серыми стрелками слева от текста, на кадре со скриптом их видно.
  • Проект пропал из веб-редактора. Файлы веб-редактора лежат в хранилище браузера и стираются вместе с данными сайта или кнопкой Clear Persistent Data.
    Решение: после каждого рабочего дня скачивать проект архивом.
  • Вкладка Dialogic не появилась. Плагин лежит не в res://addons/dialogic, не включён во вкладке «Модули» или Godot старше 4.5.
    Решение: проверить путь, флажок и номер версии внизу окна редактора, затем перезапустить Godot.
  • Сюжет разросся, ветки путаются. Код тут не поможет.
    Решение: вернуться к схеме развилок и свести лишние ветки к общим сценам.

Где освоить Godot и разработку игр системно

Прототип из статьи показывает механику, а полноценной новелле нужны сохранения, меню, анимация и сборка под несколько платформ. Если хочется делать игры дальше, разберитесь в движке по курсу: в каталоге собраны программы по Godot и по разработке игр в целом.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
Профессия «Разработчик игр на Unity с нуля»
Перейти на сайт курса
SkillboxSkillbox132 445 ₽3679 ₽/мес.10 месяцевОбзор курса
Разработчик игр на Unity
Перейти на сайт курса
SkillFactorySkillFactory132 840 ₽3690 ₽/мес.12 месяцевОбзор курса
ДО Профессия Разработчик игр на Unreal Engine 5 с нуля
Перейти на сайт курса
GeekBrainsGeekBrains174 536 ₽4849 ₽/мес.6 месяцевОбзор курса
VR-разработчик на Unreal Engine 4
Перейти на сайт курса
SkillboxSkillbox31 273 ₽4588 ₽/мес.1 месяцОбзор курса
Разработчик игр на Unreal Engine
Перейти на сайт курса
Академия ЭдюсонЭдюсон135 720 ₽5655 ₽/мес.9 месяцевОбзор курса

Больше программ — в полном каталоге курсов по разработке игр

Для сценарной части пригодятся курсы по сценарному мастерству. А если думаете превратить хобби в работу, начните с обзора как стать разработчиком игр.

CheckroiCheckroiПодборка курсов по разработке игр164 курса • 33 школыСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Часто задаваемые вопросы

Можно ли создать визуальную новеллу без программирования?

Да. В онлайн-конструкторе VetkaNovel персонажи, диалоги и развилки собираются в браузере без кода. В Ren'Py простую новеллу пишут сценарным языком, похожим на пьесу.

Какой движок лучше для первой новеллы: Ren'Py или Godot?

Для классической новеллы из текста, картинок и выборов проще Ren'Py: сохранения и меню там уже есть. Godot выбирают, когда в новелле будут мини-игры, карта или свой интерфейс. Подробное сравнение есть в таблице выше.

Как сделать новеллу на телефоне?

Проще всего в конструкторе VetkaNovel: по описанию сервиса редактор и плеер адаптированы под телефон. У Godot есть редактор для Android, но длинный проект удобнее вести на компьютере.

Сколько стоит выпустить новеллу в Steam?

По правилам Steam Direct за каждую новую игру платят взнос 100 долларов. Он не возвращается, но компенсируется в выплатах, когда скорректированная выручка игры достигает 1 000 долларов.

Можно ли собрать игру в веб-редакторе Godot?

Нет. По документации Godot экспорта в веб-редакторе нет. Проект скачивают архивом через «Проект» → «Инструменты» → «Загрузить исходный код проекта» и собирают в версии для компьютера.

С какой версией Godot работает Dialogic 2?

По описанию плагина Dialogic 2 требует Godot 4.5 или новее. На ноябрь 2026 плагин в статусе альфа-версии, поэтому перед обновлением делайте копию проекта.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!