Создание собственной игры - мечта многих современных людей. С использованием движков это становится возможным даже для тех, кто далек от программирования.
Визуальная новелла - жанр специфический. По сути, процесс игры сравним с чтением книги, полной иллюстраций и музыкального сопровождения. А еще сюжетная линия может зависеть от выборов игрока.
После прохождения очередной концовки "Бесконечного лета» (одна из наиболее популярных русскоязычных новелл) я обратила внимание на строку в титрах: "Игра сделана при помощи RenPy". Погуглив что такое это загадочное RenPy (как выяснилось - гибкий движок для игр подобного жанра), я загорелась созданием собственной новеллы, потому что:
1. очень простой синтаксис;
2. добавление изображений/аудио/видео не вызывает проблем (а ведь это самое важное, учитывая количество спрайтов, CG, саундтреков);
3. удобный интерфейс.
RenPy можно бесплатно скачать с официального сайта. После установки вы можете пройти очень подробное обучение в виде диалога с персонажем Эйлин. Но скажу пару слов о главных компонентах новеллы.
1) Для начала стоит выбрать редактор, в котором вы будете писать код: Atom, jEdit, Editra.
2) Открыв файлы сценария, не стоит пугаться непонятного кода, комментарии могут прояснить многие моменты. Главный файл для вас - scripts.rpy, в котором и пишется игра.
На начальном этапе при запуске будет следующая картина:
3) Выглядит не очень, но с главным меню разберемся позже. Пока давайте попробуем записать реплику какого-нибудь персонажа.
Синтаксис следующий:
"имя_персонажа" "реплика"
Чтобы упростить запись имени и задать его цвет, можно использовать следующую конструкцию:
define короткое_имя_персонажа = Character('полное_имя', color="код_цвета").
Если фраза должна принадлежать безликому рассказчику, то запись становится еще проще:
"реплика"
Посмотрим, как это выглядит в действии:
Успех игры напрямую зависит от качества текста. Написание сценария - не дело одного дня, так что стоит отнестись к этому этапу со всей серьезностью.
4) Самое время добавить фон и изображение персонажа. Так как в игре следует передавать эмоции героев, то возникает необходимость часто менять спрайты на экране. Для удобства все используемые изображения нужно добавить в папку игры images. К примеру, нужно отобразить персонажа на фоне в его левой части, а после реплики поменять эмоцию:
scene название_фоновой_картинки
show название_спрайта at left
"имя_персонажа" "реплика"
show название_спрайта at left
Как это выглядит:
Можно сделать переход между изображениями, задать траекторию движения спрайта и еще много чего. Уроков великое множество, так что остается лишь скопировать готовое решение и адаптировать под свою игру.
5) Добавление аудио записывается в одну строчку:
play music "music/название_песни.mp3"
Подразумевается, что музыка хранится в папке игры music (автоматически не создается). Аудио тоже можно обрабатывать определенным образом, об операторах подробнее можно почитать в документации или в обучении Эйлин.
Не забывайте, что если ваша новелла в будущем станет коммерческим проектом, то использовать любую понравившуюся песню нельзя. В таких случаях есть несколько вариантов:
- библиотеки бесплатных звуков и мелодий
- поиск энтузиастов, которые напишут саундтрек бесплатно
- покупка лицензии на использование мелодий
- самостоятельная работа над саундтреком (в наше время для этого не нужно иметь музыкальное образование и инструмент)
6) Стандартный интерфейс выглядит довольно уныло. Начинающим будет сложно вносить кардинальные изменения в GUI, но можно, как минимум, выбрать свой фон и переделать навигацию. Если до этого мы использовали файл scripts.rpy, то теперь писать код придется в первую очередь в gui.rpy. Вот что получилось при модификации нескольких строк и добавления своего шрифта:
Если у вас в голове есть отличная идея для сюжета, вы или ваши знакомые могут заняться графикой и музыкой для игры, то почему бы не попробовать свои силы в данном направлении? Опыт многих разработчиков доказывает, что подобные игры лучше делать командой. И если друзья отказываются, то поиск умельцев стоит продолжить на имижбордах и в группах соответствующей тематики.
Дарья Прядка