# Начало работы

# Необходимые компоненты

Naninovel – это расширение для игрового движка Unity, поэтому настоятельно рекомендуется изучить основы использования движка перед началом работы с Naninovel.

Указанные ниже главы руководства являются важнейшими:

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

# Основные концепты

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

Важнейшим из них, с которым вы постоянно будете сталкиваться в остальной части руководства, является актор. Актор – это объект, описываемый идентификатором (ID), внешностью, положением в пространстве (в сцене) и некоторыми другими параметрами.

Актор – абстрактный объект, который не может существовать непосредственно; вместо этого используются его специализированные типы с различными дополнительными параметрами:

Тип актора Дополнительные параметры Описание
Персонаж Направление взгляда Представляет персонажа в сцене.
Фон Отсутствуют Представляет фоновое изображение сцены; по умолчанию размещается за акторами персонажей.
Текстовый принтер Текст, ID персонажа, Процесс отображения Постепенно проявляет (печатает) текстовое сообщение в течение некоторого времени.
Обработчик выбора Варианты выбора Позволяет игроку выбрать один из доступных вариантов.

Рассмотрим типичную сцену визуальной новеллы – с персонажем, изображенным поверх фона. В Naninovel она будет представлена следующим образом:

Теперь, предположим, вы хотите, чтобы персонаж "Kohaku" выглядел счастливым. У вас есть несколько текстур (изображений) этого персонажа, изображающих различные эмоции. В Naninovel такие текстуры называются "внешностью" актора. Чтобы получить желаемый результат, нужно изменить внешность актора персонажа. Точно так же для того, чтобы "MainBackground" отображал другой фон, необходимо изменить внешность актора фона.

Акторы и их параметры управляются (направляются) с помощью команд, указанных в скриптах Naninovel.

Ещё одним широко используемым концептом является пользовательский интерфейс (UI). UI используется игроком для взаимодействия с акторами и остальной игрой. Сюда входят различные меню (главное меню, сохранение-загрузка, настройки и т. д.) и панели управления (режим авточтения, пропуск текста и т. д.). Элементы пользовательского интерфейса по умолчанию располагаются поверх акторов.

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

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

# Создание нового проекта Unity

Итак, держа основные концепты в уме, начнем первоначальную настройку. Первое, что вам понадобится – проект Unity. Обратитесь к руководству Unity, описывающему создание проекта.

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

Когда вы создадите новый проект, Unity автоматически добавит пример сцены с двумя игровыми объектами в ней: "Main Camera" и "Directional Light". Naninovel полностью независим от сцены, поэтому вы можете удалить эти объекты из сцены, чтобы они не создавали ненужной производительной нагрузки. Вы также можете удалить саму сцену, хотя для корректной работы некоторых функций редактора рекомендуется иметь в проекте хотя бы одну сцену.

# Установка Naninovel

Загрузите пакет Naninovel с помощью окна Asset Store и дождитесь начальной компиляции скриптов и импорта ассетов. Вы можете свободно перемещать папку 'Naninovel' в любое место в директории ассетов вашего проекта, если хотите.

В процессе использования Naninovel в папке 'Assets/NaninovelData' будет автоматически сгенерирован ряд ассетов (конфигурация, настройки, сохранения и т.д.). В отличие от папки пакета Naninovel, не стоит вручную перемещать папку данных (она будет автоматически перегенерирована). Если вы хотите изменить её расположение, измените свойство Generated Data Path в меню конфигурации движка.

# Добавление скрипта Naninovel

Воспользуйтесь контекстным меню ассетов Create -> Naninovel -> Naninovel Script для создания ассета скрипта Naninovel.

Создание скрипта Naninovel

ПРИМЕЧАНИЕ

Вы можете создавать и хранить скрипты Naninovel (а также все другие ресурсы Naninovel) в любой папке проекта и организовывать их по своему усмотрению, как и задавать им имена. Приведенная выше иллюстрация является лишь примером.

Скрипты Naninovel – это текстовые документы (с расширением .nani), где вы контролируете происходящее в сцене. Вы можете открывать их и редактировать с помощью любого текстового редактора на ваш выбор, например Notepad, TextEdit или VS Code.

Открытие скрипта Naninovel

Вы также можете использовать визуальный редактор скриптов для редактирования скриптов Naninovel. Выберите созданный скрипт, и вы увидите, что визуальный редактор автоматически откроется в окне инспектора.

Чтобы добавить новую строку в скрипт, щелкните правой кнопкой мыши в месте, куда вы хотите вставить строку, либо нажмите Ctrl+Space (вы можете изменить стандартные комбинации клавиш в меню конфигурации ввода) и выберите нужную строку или тип команды. Чтобы изменить порядок строк, перетащите их, используя их номерные метки. Чтобы удалить строку, нажмите на неё правой кнопкой мыши и выберите "Удалить".

После изменения скрипта с помощью визуального редактора вы увидите звездочку (*) над именем сценария в шапке инспектора. Это означает, что ассет изменён и должен быть сохранен; нажмите Ctrl+S, чтобы сохранить внесённые изменения. Если вы попытаетесь выбрать другой ассет, не сохранив изменения в скрипте, появится диалоговое окно, позволяющее либо сохранить, либо отменить изменения.

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

ПРИМЕЧАНИЕ

В остальной части этого руководства мы будем использовать текстовый редактор, но вы можете повторить все те же шаги в визуальном редакторе, если хотите.

Для того, чтобы ассет Naninovel (например, созданный вами скрипт) стал "видимым" для движка, он должен быть назначен ресурсом проекта. При создании с помощью меню создания ассетов скрипты назначаются автоматически. Чтобы назначить (или отредактировать/удалить) файл скрипта вручную, используйте окно скриптовых ресурсов, доступное в меню редактора Naninovel -> Resources -> Scripts. Чтобы добавить скрипт, нажмите кнопку + (знак плюс) в списке, чтобы добавить новую строку, и перетащите файл скрипта в неё. Кроме того, можно перетащить несколько выделенных ассетов или даже целые папки в список, чтобы добавить их группой.

Добавление скрипта Naninovel

Откройте созданный скрипт в текстовом редакторе и добавьте следующий текст:

Hello World!
@stop

Первая строка выведет текст "Hello World!" при запуске игры, а вторая требуется для корректной остановки выполнения скрипта.

Войдите в режим воспроизведения и начните новую игру, чтобы увидеть результат.

ПРИМЕЧАНИЕ

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

Если кнопка "НОВАЯ ИГРА" в главном меню неактивна, убедитесь, что свойство Start Game Script в настройках скриптов (Naninovel -> Configuration -> Scripts) равно имени созданного скрипта. Свойство заполняется автоматически при создании первого скрипта через меню создания ассетов, но может не сработать, если вы скопируете в проект уже существующий скрипт.

# Добавление персонажа

Персонажи в Naninovel могут быть основаны на обычных и нарезанных спрайтах, анимированных моделях Live2D и 3D-моделях; вы также можете добавить свои собственные варианты реализации. В этом туториале мы будем использовать спрайты.

Каждый персонаж представлен ID и набором вариантов внешности. Чтобы добавить персонажа, используйте графический интерфейс менеджера персонажей, доступный через меню Naninovel -> Resources -> Characters, добавьте новую строку актора персонажа, указав ее ID, затем дважды щелкните по ней (или нажмите кнопку в конце строки) и добавьте все варианты спрайта в список Resources. Как и в случае со скриптами Naninovel, вы можете перетащить в список сразу несколько ассетов и папок.

Создание персонажа

Предположим, что ID созданного персонажа – "Kohaku". Отредактируйте скрипт Naninovel, чтобы показать добавленного персонажа:

@char Kohaku
Hello World!
@stop

Запустите игру, и вы увидите спрайт персонажа в центре экрана. Если вы не укажете внешность, то по умолчанию будет выбрана либо та, имя которой равно ID персонажа, либо внешность с названием "Default". Чтобы выбрать определенную внешность, добавьте её название после ID персонажа, разделив их точкой, как здесь:

@char Kohaku.Happy
Hello World!
@stop

Так как персонажу "Kohaku" была выбрана внешность под названием "Happy", соответствующий спрайт будет отображен вместо стандартного.

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

@char Kohaku.Happy
Kohaku: Hello World!
@stop

Кроме того, можно объединить объявление внешности персонажа с выводом текста, чтобы сократить код:

Kohaku.Happy: Hello World!
@stop

Чтобы скрыть (удалить из сцены) персонажа (или любой другой актор, например, фон, текстовый принтер и т. д.), используйте команду @hide, за которой следует ID актора:

Kohaku.Happy: Hello World!
@hide Kohaku
@stop

# Добавление фона

Подобно персонажам, фон в Naninovel может быть представлен несколькими способами: спрайт, простой объект, видео и сцена; также возможны пользовательские реализации.

Вы можете создать несколько независимых акторов фона, хотя в типичной визуальной новелле обычно используется только один, меняется лишь его внешность. Чтобы упростить процедуру, актор MainBackground по умолчанию добавляется в список акторов фона, и вам не нужно указывать его ID каждый раз, чтобы изменить его внешность в скриптах Naninovel.

Добавьте фоновые спрайты через меню Naninovel -> Resources -> Backgrounds. Строка MainBackground откроется автоматически, но вы все равно можете вернуться в список акторов и создать другие, если потребуется.

Добавление фона

Предположим, что добавленная внешность спрайта фона называется "City". Чтобы отобразить фон, используйте команду @back, за которой следует название внешности фона:

@back City 

При переключении между фонами по умолчанию будет использоваться кроссфейд (эффект перехода). Чтобы сменить эффект, укажите тип перехода после внешности:

@back City 
@back School.RadialBlur

Это позволит перейти от фона "City" к фону "School", используя эффект перехода "RadialBlur".

Чтобы обратиться к фону, отличному от основного (например, если вы хотите создать несколько фонов поверх друг друга), укажите ID актора. Например, если фоновый актор с ID "Flower" существует отдельно от основного, следующие команды изменят его внешность на "Bloomed", а затем на "Withered":

@back Flower id:Flower
@back Withered id:Flower

# Добавление музыки и звуковых эффектов

Чтобы добавить ассет BGM (фоновая музыка) или SFX (звуковой эффект), используйте меню редактора Naninovel -> Resources -> Audio. Вы можете использовать любые аудиоформаты, поддерживаемые Unity.

Управление аудио

Допустим, вы добавили BGM трек под названием "ThePromenade". Для воспроизведения этого трека в качестве фоновой музыки используйте команду @bgm, за которой следует название трека:

@bgm ThePromenade

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

Напротив, звуковые эффекты по умолчанию не будут зациклены. Предположим, вы добавили SFX с названием "Explosion" – используйте команду @sfx, чтобы воспроизвести его:

@sfx Explosion

# Видеогайд

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

# Демо-проект

Полные исходники демо-проекта (того же, что демонстрировался в магазине) доступны на GitHub здесь: github.com/Naninovel/Demo.

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

ВНИМАНИЕ

Пакет Naninovel не распространяется вместе с проектом, а значит, при первом его открытии могут появиться ошибки компиляции; импортируйте Naninovel из Asset Store, чтобы решить эту проблему.

Обновлено: October 28, 2020