Это статья для быстрого старта в создании игры жанра **"Визуальная Новелла"**.

Аналогичная статья для жанра **RPG** находится [здесь](./Быстрый-старт-RPG).  
Если вы планируете делать игру **другого жанра** то вам, вероятно,
придётся хотя бы поверхностно прочитать бОльшую часть этой документации
(за исключением RPG-части), после чего просмотреть код игр из
[демки](https://drive.google.com/open?id=1TUzhBevm2dRokaPw19rMbAauXFzuxjLh).

Для начала скачайте
[лаунчер](https://drive.google.com/file/d/1f7fbKDHxvXlO6R2Gy__r4M44ZiTt1rZR/view)
и распакуйте полученный архив туда, где планируете работать над проектами на основе Ren-Engine.

Войдите в распакованную папку и запустите файл `start`.  
Создайте новый проект, указав жанр "Визуальная Новелла".  
После создания вы сможете запустить игру или открыть её папку для исследования и редактирования её файлов.

![New Visual Novell](./images/new_vn.jpg)

Готово! Это почти всё, что вам потребуется для начала работы над игрой.

***

## Файл сценария.

Теперь давайте откроем файл сценария и посмотрим, как он устроен:
`resources/mods/std/main.rpy` - это просто текстовый файл, его можно открыть любым текстовым редактором.

```renpy
label start:
	scene bg room
	
	show rn happy with dspr
	rn "Visual Novell starts here."
	
	scene bg black with dissolve
```

Если вы видите что-то сильно другое, то ваш текстовый редактор,
возможно, не поддерживает UTF-8 и/или переносы строк в Unix-стиле.
В этом случае используйте Notepad++ или нечто похожее.  
Все `*.rpy` файлы обязательно должны быть в кодировке UTF-8 и иметь Unix'овые переносы строк.

***

## Разбор файла сценария

`label start:` говорит о том, что дальше будут даны команды метки `start`.
Это специальная метка, с которой начинается исполнение сценария игры.
Как и в питоне, все дальнейшие "дочерние" команды должны иметь отступ (табуляцией).

`scene bg room` показывает изображение с именем `bg room`.
Оно зарегистрировано в другом файле.

`show rn happy with dspr` - показывает изображение `rn happy` с эффектом `dspr`.
Как вы догадались, оно тоже зарегистрировано в другом файле.
Эффект указывается после ключевого слова `with`, `dspr` - плавное, но быстрое появление.  
В чём разница между `show` и `scene`? Оба показывают изображения, но `scene` перед этим удаляет все уже показанные.
Кроме того, `scene` даёт понять, что сейчас будет отображение именно полноразмерного изображения на весь экран,
а не спрайта какого-либо персонажа.

`rn "Текст"` - выводит текст в диалоговое окно от имени персонажа `rn`.
Конечно же, этот персонаж тоже зарегистрирован в другом файле.

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

***

## Файлы с определениями

Вынос определений изображений, персонажей и проч. в другие файлы нужен для большего удобства и порядка.  
За некоторыми исключениями, все сущности вашей игры должны определяться в файлах папки `resources/mods/common/`.  
По именам файлов можно легко понять, что они содержат.
Например, персонажи определяются в `resources/mods/common/characters.rpy`.

***

## Файлы движка

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

По пути `Ren-Engine/rpy/` лежат `*.rpy`-файлы движка.  
Их можно читать, чтобы смотреть разные приёмы работы, реализацию всяких вещей, значения по умолчанию и т. д.  
Но их нельзя редактировать, иначе все ваши изменения слетят при первом же обновлении движка (из Лаунчера).

Чуть более рекомендуемый вариант - скопировать в минимально возможном виде сущности, которые необходимо изменить
(например, какой-либо скрин) в папку `resources/mods/common/` (общие файлы вашей игры, т. е. всех её модов),
внося изменения уже там.  
Но при этом необходимо убедиться, что не используются недокументированные фичи - переменные, функции, скрины и т. д. -
даже если вы их не писали, а просто оставили от стандартной версии.  
Недокументированные вещи потому и не документированы, что являются внутренними деталями реализации,
и в любом обновлении движка могут быть изменены без предупреждений и уведомлений, даже в разделе сделанных изменений.

***

Как видите, всё довольно просто.
Более детальное описание читайте на следующих страницах.

[Далее ->](./Основы-команд-и-блоков)
