Быстрый старт RPG - TrueCat17/Ren-Engine GitHub Wiki
Предполагается, что вы уже прочли раздел "Основы".
Ссылку на остальную документацию по RPG можно найти на панели справа.
Создайте новый проект, как уже было указано в статье Быстрый старт!,
однако вместо "Визуальной Новеллы" выберите жанр "RPG".
После этого запустите созданную игру.
Если всё запустилось и работает, используйте эту заготовку для экспериментов и создания своей игры.
Сценарий RPG-игры можно разделить на 3 части:
- Регистрация локаций, объектов, персонажей и т. д. в
init
-блоках, - Запуск, установка стартовой локации, начальные описания и указания для игрока,
- Реакция игры на действия игрока.
Теперь подробнее о каждом пункте.
Чтобы можно было использовать какие-либо сущности, сначала их следует зарегистрировать, указав необходимые параметры.
Например, в папке locations
мода std
(т. е. resources/mods/std/locations
) есть файл с регистрациями
локаций (locations.rpy
) и файл с регистрациями объектов локаций (objects.rpy
).
По их именам понятно, что делает каждый из них.
Рядом может быть файл с указанием фоновых звуков локаций (например, так сделано в демке движка) и прочие ваши файлы,
если вы решите, что они вам понадобятся.
Так как редактировать файлы локаций и их объектов вручную довольно муторно, для этого создан RPG-редактор
(по некоторым причинам регистрировать объекты всё равно нужно самостоятельно,
но гораздо бОльшая проблема - расстановка - там решена).
Там имеется собственная справка.
Персонажи регистрируются в общих файлах всех модов (common/characters.rpy
), а не конкретно в каком-то одном.
Помещать предыдущие файлы в "общие" нежелательно, т. к. обновление основной игры будет менять эти важные общие файлы
для других модов, что плохо. Регистрация персонажей же довольно проста, и ломаться там особо нечему.
Конечно, вы можете зарегистрировать и своих персонажей в дополнение к общим, если делаете мод к уже существующей игре.
Запуск rpg-игры, как и любой другой, начинается в метке start
, её можно найти в файле main.rpy
:
label start:
call rpg_start
call rpg_loop
Также в этом файле логично поместить инициализацию общих для всей игры (не для какой-то её отдельной части) python-переменных и определение функций вроде get_place_labels.
Метка rpg_start
находится в labels.rpy
:
label rpg_start:
python:
set_location("enter", "ikarus_out")
me.set_direction(to_back)
window show
"Здесь начинается RPG."
"Управление WASD/стрелки + Shift (бег/шаг). Кнопка <Действие> - E."
"Быстрые сохранение/загрузка - Q/L."
"Скрытие/Показ интерфейса - H, скриншот - P."
window hide
$ set_rpg_control(True)
Как и говорилось ранее, при запуске мы устанавливаем локацию и персонажей (блок python
),
даём некоторые объяснения (строки между window show
и window hide
),
после чего разрешаем игроку управлять персонажем.
Может показаться, что разбиение на файлы чрезмерно, но через некоторое время развития вашего проекта это разбиение вполне может оказаться даже недостаточным.
После выполнения метки rpg_start
из предыдущего абзаца управление вновь возвращается к start
, которая, как можно
заметить выше, передаёт управление rpg_loop
.
Это уже "служебная" метка, которая заранее определена движком, в ней и осуществляется проверка на то, происходит ли переход между локациями, вошёл ли игрок в определённую зону, взаимодействует ли с каким-либо объектом и прочее (подробности здесь).
Если обнаружено какое-то событие, то вызывается соответствующая метка, после выполнения которой управление опять
возвращается к rpg_loop
, поэтому в играх жанра RPG важно не использовать jump, т. к. в этом случае после
выполнения указанной метки игра будет завершена.