Предполагается, что вы уже прочли раздел "Основы".
Ссылку на остальную документацию по RPG можно найти на панели справа.

Создайте новый проект, как уже было указано в статье Быстрый старт!, однако вместо "Визуальной Новеллы" выберите жанр "RPG".
После этого запустите созданную игру.

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

## Сценарий

Сценарий RPG-игры можно разделить на 3 части:

1. Регистрация локаций, объектов, персонажей и т. д. в `init`-блоках,
2. Запуск, установка стартовой локации, начальные описания и указания для игрока,
3. Реакция игры на действия игрока.

Теперь подробнее о каждом пункте.

## Регистрация

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

Например, в папке `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, т. к. в этом случае после выполнения указанной метки игра будет завершена.

Далее ->