Девлог: визуальная новелла на собственном движке Liza

Девлог: визуальная новелла на собственном движке Liza

Первый девлог: свой движок визуальной новеллы на Java — диалоги, персонажи, мини-игры, темы и планы на будущее.

Девлог: визуальная новелла на собственном движке Liza

Привет! Делаю визуальную новеллу и хочу рассказать, на каком этапе сейчас проект.

Движок написан с нуля и называется Liza. Java 21 + JavaFX. Да, не Ren'Py, не Unity — свой велосипед. Зато полностью под контролем и можно встраивать что угодно.


Что сейчас есть

Движок Liza

Весь контент игры описывается в XML-файлах — диалоги, персонажи, команды. Чтобы добавить новую сцену, не нужно писать код — достаточно описать её в XML.

Что умеет движок на данный момент:

  • Диалоговая система — реплики персонажей с именем, цветом, стилем текста. Typewriter-эффект (посимвольный вывод), как в классических новеллах
  • Персонажи на сцене — спрайты с разными позами и эмоциями, позиционирование (лево/центр/право), плавные анимации появления, перемещения и ухода
  • Выборы в диалогах — ветвления сюжета через кнопки выбора, результат влияет на дальнейшие сцены
  • Система флагов и переменных — движок запоминает решения игрока и может менять сюжет в зависимости от них
  • Система репутации — у каждого персонажа есть показатель отношения (0–100), который меняется от действий игрока
  • Ввод имени — игрок вводит своё имя, и оно подставляется во все реплики
  • Оверлеи — полноэкранный текст на тёмном фоне для вступлений, внутренних монологов, переходов

Мини-игры

Прямо в сюжет можно встроить интерактивные панели:

  • Крестики-нолики — полноценная игра с ИИ-противником
  • Ввод кода — загадка, где нужно подобрать пароль
  • Доска улик — собранные по ходу игры улики выводятся на отдельную панель

Результат мини-игры (победа/поражение) перенаправляет на разные сцены — так паззлы влияют на сюжет.

Звук

  • Фоновая музыка с бесконечным циклом
  • Звуковые эффекты — клики, наведение, сюжетные звуки
  • Громкость настраивается

Темы оформления

5 тем, переключаемых прямо в игре:

  • HiTech — неон, киберпанк
  • Classic — тёплое дерево, золото
  • Walk — природа, зелёные тона
  • DnD — тёмный лес
  • Fire — пламя, красный/оранжевый

Тема полностью меняет вид кнопок, панелей, градиентов и текста.

Сохранения

  • 6 слотов для сохранений
  • Полная сериализация состояния: текущая сцена, история, флаги, переменные, выборы, тема
  • При загрузке игра восстанавливается точно в то место, где остановился

Навигация

  • Кнопки «вперёд/назад» для перелистывания реплик
  • История всех диалогов текущей сцены (выезжающая панель)
  • Главное меню: продолжить, новая игра, выбор главы, настройки

27 команд движка

Все действия вызываются из XML и выполняются движком автоматически:

Персонажи: показать, убрать, сменить позу, переместить влево/вправо/в центр, поставить в позицию без анимации, убежать за край экрана, эффект появления

Сцена: сменить фон, затемнение, оверлейный текст, показать/скрыть панель диалога

Состояние: установить флаг, записать выбор, изменить/добавить/уменьшить репутацию

Прочее: звуковой эффект, запуск титров, открытие мини-игры

Добавить новую команду — один класс с аннотацией @GameAction, движок подхватит автоматически.


Текущее состояние контента

  • 47 сцен написано (тестовые, для отладки механик)
  • 4 персонажа со спрайтами: Elein (9 поз), Liza (4 позы), Anna (2 позы), Marcus (3 позы)
  • Несколько точек ветвления сюжета
  • Сюжет пока в раннем этапе — основная работа впереди

Что дальше

Движок

  • Доработка системы репутации — чтобы она реально влияла на доступные варианты
  • Полноценное меню настроек внутри игры
  • Озвучка реплик
  • Больше типов мини-игр
  • Оптимизация загрузки ресурсов

Контент

  • Написание полноценного сюжета
  • Новые персонажи и спрайты
  • Больше ветвлений и концовок
  • Новые фоны и локации

Стек

  • | Язык | Java 21 |
  • | UI | JavaFX 21.0.5 |
  • | Сборка | Maven |
  • | Контент | XML (диалоги, персонажи, команды) |
  • | Стили | CSS (5 тем) |
  • | Конфиги | JSON + XML |
  • | Релиз | Launch4j (.exe для Windows) |

  • Проект живой, работа идёт. Если есть вопросы — пишите.