Архитектура движка

Moirai состоит из трёх основных частей:

  • Moirai Editor - редактор, в котором вы создаёте проект: добавляете ассеты, настраиваете персонажей, собираете сцены и связываете их в историю.
  • Moirai Engine - движок, который воспроизводит вашу историю: запускает сцены, исполняет события, проверяет условия и хранит значения переменных.
  • Moirai Player - плеер, в котором игрок проходит готовую новеллу.

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

Проект

Проект Moirai хранит всё, что нужно для одной визуальной новеллы:

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

При экспорте проект может быть сохранён в файл .vnproject. Это архив с историей и ресурсами проекта. Обычно его не нужно открывать вручную: редактор сам импортирует, экспортирует и читает такие файлы.

Не редактируйте .vnproject вручную без необходимости

Формат проекта рассчитан на работу через Moirai Editor. Ручное изменение файлов внутри архива может привести к ошибкам при загрузке проекта или воспроизведении истории.

Ассеты

Ассеты - это изображения, музыка, звуковые эффекты и другие файлы, которые используются в сценах.

Обычно ассеты сначала добавляют в проект через вкладку «Ресурсы», а затем выбирают в настройках сцен и событий. Например:

  • персонажи используются в диалоговых сценах;
  • локации становятся фоном диалогов и карт;
  • аудио используется для фоновой музыки и звуковых эффектов;
  • изображения могут применяться в комиксах, книгах, галереях и телефонных сценах.

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

Сцены

Сцена - это отдельный фрагмент истории. В Moirai есть разные типы сцен: диалог, комикс, книга, интерактивная карта, телефонный чат, мини-игра и другие.

Каждая сцена отвечает за свой формат взаимодействия с игроком. Например, диалоговая сцена показывает персонажей и реплики, а телефонный чат имитирует переписку в мессенджере.

У сцены есть:

  • ID;
  • тип;
  • настройки;
  • список событий или элементов;
  • связи с другими сценами.

ID сцены используется внутри проекта, поэтому его лучше задавать коротко и понятно: intro, office_day_1, ending_good.

События

Внутри многих сцен история строится из событий. Событие - это одно действие, которое должен выполнить движок.

В диалоговой сцене событиями могут быть:

  • вход персонажа;
  • выход персонажа;
  • реплика;
  • фокус на персонаже;
  • сброс фокуса;
  • включение музыки;
  • остановка музыки;
  • погодный эффект;
  • переход;
  • выбор игрока;
  • ветвление.

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

Граф истории

После создания сцен их нужно связать в единую историю. Для этого используется граф.

Граф показывает:

  • какая сцена является стартовой;
  • какие сцены идут после неё;
  • где история разветвляется;
  • какие сцены могут оказаться недостижимыми;
  • где есть тупики без дальнейшего перехода.

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

Переменные и условия

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

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

Переменные используются для:

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

Мы рекомендуем давать переменным понятные имена на английском языке: metBoss, acceptedCall, routeChoice. Имена вроде var1 или flag2 быстро становятся неудобными, особенно в больших проектах.

Плеер

Когда игрок запускает новеллу, Moirai Player начинает со стартовой сцены и дальше следует по связям графа.

Плеер:

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

Для автора это значит главное: если сцены корректно связаны в графе, а переменные создаются до того, как проверяются, история будет воспроизводиться предсказуемо.

results matching ""

    No results matching ""