Как создать свой мод

Итак, вы решили создать мод на Бесконечное Лето. Здесь мы расскажем о том, что нужно сделать, чтобы успешно перенести вашу историю в игру.

Подготовка окружения

Перед тем как начать создавать свои моды, вам понадобится ПО1, в котором вы будете писать код, — текстовый редактор. В нём вы пишете свой код, чтобы игра потом превратила его в сцену.

Одни из лучших, самых удобных и функциональных: Visual Studio Code и Sublime Text.

Visual Studio Code

Visual Studio Code — довольно большой и мощный текстовый редактор от Microsoft с поддержкой множества языков, расширений, терминала и отладки, а также со встроенной поддержкой Git. Одно из его главных преимуществ в том, что он абсолютно бесплатен. С помощью встроенного магазина можно установить множество расширений (в том числе официальное расширение для поддержки языка Ren'Py), цветовых тем и сниппетов. В нём довольно гибкие настройки, особенно сочетания клавиш и поддержка профилей.

Но для разработки модов он подходит настолько же, насколько для разогревания еды подходит доменная печь. Он медленный, а при большом количестве установленных расширений может стать ещё медленнее. Он создан для Python, JavaScript, C++ и PowerShell, и, хотя поддержку Ren'Py в него можно установить, он для неё не предназначен.
Это Инструмент. С большой буквы.

Sublime Text

Sublime Text — лёгкий и быстрый текстовый редактор с минималистичным интерфейсом и большими возможностями для кода или любого другого текста. Он условно бесплатен2: использовать его можно без лицензии, и функционал не будет обрезан, но время от времени он будет просить о поддержке. А ещё он очень быстрый. Он менее дружелюбен к пользователю, но, тратя меньше ресурсов на дополнительный функционал, он выигрывает у Visual Studio Code в скорости.

Он хорош для редактирования текста и написания кода, но на нём не получится его отладить, терминала внутри нет, и хлеб он вам не поджарит. Установка пакетов (именно так называются расширения для Sublime Text) работает через палитру команд, внутреннюю командную строку программы, и для неопытного пользователя может показаться непонятной или неудобной. Настройки в нём ещё более гибкие: если вы хотите что-то изменить — вы это изменяете, но правя код, так как визуальных настроек там мало.


Подытожим.

Выбирайте Visual Studio Code, если вам важно иметь под рукой простой, но мощный и медленный инструмент для разработки чего-то большего, чем мод для Бесконечного Лета.

Выбирайте Sublime Text, если вам важны скорость и минималистичность и если вы считаете, что сможете в нём разобраться.

Создание мода

Файл .rpy

Весь код вашего мода будет находиться в одном, а лучше в нескольких файлах с расширением .rpy. Именно их при запуске игра ищет и из них берёт всю информацию, весь код.

Создайте папку вашего мода в папке <Папка Steam>\steamapps\common\Everlasting Summer\game в файлах игры и создайте файл с расширением .rpy. Допустим — scenario.rpy.

Итоговый путь должен быть похож на <Папка Steam>\steamapps\common\Everlasting Summer\game\<Название папки мода>\scenario.rpy.

В некоторых гайдах вам могут сказать, что ваш мод всегда должен находиться по пути <Папка Steam>\steamapps\common\Everlasting Summer\game\mods, но это не так. Пока ваш файл с расширением .rpy находится в <Папка Steam>\steamapps\common\Everlasting Summer\game или ниже, он будет читаться так же, как и другие.

Ваш мод может находиться где угодно, пока он не мешает другим модам.

После создания файла откройте его в текстовом редакторе и переходите к следующему шагу.

Синтаксис

Весь код Ren'Py состоит из блоков, в которых имеются какие-либо команды. Некоторым он может напоминать синтаксис языка программирования Python, что не так далеко от истины, ведь Ren'Py написан на Python.

<Блок>:
    <Команда>
    <Команда>
    <Команда>

Игровой движок не примет файл и вернёт ошибку, если найдёт в коде хоть один неизолированный символ табуляции. Версия интерпретатора кода игры (Python 2.7 вне бета-версий) не позволяет использовать символы табуляции для индентации3.

Кратко: используйте пробелы вместо табуляции. Четыре пробела на один символ табуляции.

Перед началом написания кода рекомендуется настроить замену табуляции на пробелы.

Visual Studio Code
  1. Нажмите клавишу F1.
  2. Напишите Indent Using Spaces и нажмите клавишу Enter.
  3. Нажмите клавишу Enter ещё раз, чтобы выбрать рекомендованный размер отступа — 4 пробела.
Sublime Text
  1. В нижнем правом углу найдите строку Tab Size: # и нажмите на неё.
  2. В открывшемся меню нажмите "Использовать в отступах пробелы" и при необходимости выберите размер отступа в 4 пробела.

Комментарии

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

Это комментарии. Их основная цель — объяснять логику, намерения и причины принятия конкретных технических решений там, где сам код не может говорить за себя. Хоть они чаще и используются чтобы оставлять в коде ASCII-рисунки, обидные высказывания датамайнерам, неиспользуемый или нерабочий функционал или жалобы бедных кодеров...

Чтобы оставить комментарий, введите символ # в любом месте кроме строчного значения.
Пример:

init python:
    a = 10 # Эта переменная равна 10 потому, что я так хочу

    # >:)

    mycolor = "#FFF" # Символ # не начинает комментарий в строчном значении

Написание мода

Все игры на Ren'Py состоят из нескольких отдельных фаз. Из них, самые важные для нас, это фаза инициализации4 и внутриигровая фаза, или повествование.

При инициализации создаются переменные, читаются изображения, задаются трансформации и т. д. Игра подготавливает различные данные перед запуском.

В повествовании же находится весь сюжет. Реплики, вызов звуков, изображений, анимаций и т. д.

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

После того, как вы прочитаете эти статьи, вы можете переходить к объявлению и публикации своего мода.

Объявление мода

Без этого ваша модификация не появится в списке модов!

Чтобы ваша модификация появилась в списке модов, её нужно добавить в особый словарь.
Синтаксис:

init: # При инициализации...
    $ mods["<Название открывающего лэйбла мода>"] = "<Название мода>"

Переменная доступна в любом приоритете инициализации5.

Открывающий лэйбл мода — это самый первый лэйбл, с которого мод будет начинаться. Интро, дисклеймеры, меню, всё туда.

Текст названия мода также можно изменять текстовыми тэгами.

Публикация мода в Steam

Чтобы опубликовать свой мод, используйте инструмент ES Content Uploader. Он поставляется с каждой копией игры и находится по пути:

<Папка Steam>\steamapps\common\Everlasting Summer\game\mods\ES_Content_Uploader.exe

Полный гайд по использованию загрузчика вы можете найти здесь.


1^

Программное обеспечение — программа или множество программ, используемых для управления компьютером.

3^

Индентация — отступы (состоящие из пробелов или табуляции) в начале строк для визуального или синтаксического выделения блоков кода.

4^

Инициализация — процесс подготовки программы, устройства, переменной или системы к работе, при котором задаются их начальные значения или параметры.

5^

Список модов инициализируется в раннем Python-блоке. Источник: Ресурсы оригинальной игры, game/script.rpy:2.