Jasefly.VN — модульный движок визуальных новелл на Unity

Модульный runtime и игровая архитектура для визуальных новелл на Unity. Проект отделяет сценарную логику от движка и UI, поддерживает собственный формат .jvn, диалоги, выборы, переменные, ветвление, сохранения, backlog, Auto/Skip, rollback, аудио и анимированные presentation-переходы.

Jasefly.VN — собственная архитектура визуальной новеллы на Unity

Jasefly.VN — это не просто игровой проект, построенный поверх готового VN-фреймворка. Это самостоятельный модульный runtime для story-driven и visual novel игр, разработанный вокруг идеи строгого разделения сценарной логики, игрового состояния, presentation-слоя и конкретного игрового движка.

Архитектура

Ключевой принцип проекта — игровой код не должен знать, какой именно VN-backend используется под капотом. Jasefly.VN предоставляет собственные контракты сценарного runtime. Это позволяет постепенно заменять сторонний runtime собственными системами, не переписывая всю игру целиком.

Runtime-слой Jasefly.VN отделён даже от UnityEngine и не зависит от UI, файловой системы или конкретных игровых ассетов. Unity используется в качестве клиента и presentation-слоя: она отображает состояние, связывает идентификаторы персонажей, фонов и аудио с реальными ресурсами и обрабатывает пользовательский ввод.

Собственный сценарный runtime

Для сценариев используется собственный текстовый формат .jvn. Сценарий преобразуется в граф исполнения, который поддерживает последовательные диалоги, варианты выбора, переменные, условное ветвление и управление состоянием сцены.

Runtime хранит семантическое состояние истории независимо от визуального представления. Благодаря этому сохранение игры не привязано к текущему состоянию UI или конкретной Unity-сцене.

Реализованные возможности

Presentation layer

Визуальное представление намеренно вынесено из runtime. Unity-слой занимается отображением персонажей, фонов, текста и аудио, а также переходами между состояниями. Runtime при этом остаётся чистой моделью игры.

Такое разделение позволяет использовать один и тот же сценарный движок с разными интерфейсами, presentation-системами и потенциально даже с различными клиентами.

Save / Load и восстановление состояния

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

На той же модели реализован rollback: runtime хранит ограниченную историю состояний в ключевых точках диалога и выбора и может восстановить предыдущий snapshot.

Почему этот проект важен

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

Такой подход делает возможным дальнейшее развитие Jasefly.VN как самостоятельного движка и набора инструментов для narrative-игр: от визуальных новелл до других 2D story-driven проектов, где контент, состояние и presentation должны развиваться независимо друг от друга.

Все проекты