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

***

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

![New RPG](./images/new_rpg.png)

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

***

## Сценарий

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

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

***

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

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

Например, в папке `locations` мода `std` (т. е. `resources/mods/std/locations`) есть файл с регистрациями
[локаций](./Локации) (`locations.rpy`) и файл с регистрациями [объектов локаций](./Объекты-локации) (`objects.rpy`).
По их именам понятно, что делает каждый из них.  
Рядом может быть файл с указанием фоновых звуков локаций (например, так сделано в демке движка) и прочие ваши файлы,
если вы решите, что они вам понадобятся.

Так как редактировать файлы локаций и их объектов вручную довольно муторно, для этого создан RPG-редактор
(по некоторым причинам регистрировать объекты всё равно нужно самостоятельно,
но гораздо бОльшая проблема - расстановка - там решена).  
Там имеется собственная справка.

Персонажи регистрируются в общих файлах всех модов (`common/characters.rpy`), а не конкретно в каком-то одном.  
Помещать предыдущие файлы в "общие" нежелательно, т. к. обновление основной игры будет менять эти важные общие файлы
для других модов, что плохо. Регистрация персонажей же довольно проста, и ломаться там особо нечему.
Конечно, вы можете зарегистрировать и своих персонажей в дополнение к общим, если делаете мод к уже существующей игре.

***

## Запуск

Запуск rpg-игры, как и любой другой, начинается в метке `start`, её можно найти в файле `main.rpy`:
```renpy
label start:
	call rpg_start
	
	call rpg_loop
```

Также в этом файле логично поместить инициализацию общих для всей игры (не для какой-то её отдельной части)
python-переменных и определение функций вроде [get_place_labels](./Локации#user-content-Система-событий).

Метка `rpg_start` находится в `labels.rpy`:
```renpy
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`.

Это уже "служебная" метка, которая заранее определена движком, в ней и осуществляется проверка на то,
происходит ли переход между локациями, вошёл ли игрок в определённую зону, взаимодействует ли с каким-либо объектом и
прочее (подробности [здесь](./Прочее#user-content-Реакция-на-действия-игрока)).

Если обнаружено какое-то событие, то вызывается соответствующая метка, после выполнения которой управление опять
возвращается к `rpg_loop`, поэтому в играх жанра RPG важно **не использовать jump**, т. к. в этом случае после
выполнения указанной метки игра будет завершена.

***

[Далее ->](./Локации)
