Как создать свой мод
Итак, вы решили создать мод на Бесконечное Лето. Здесь мы расскажем о том, что нужно сделать, чтобы успешно перенести вашу историю в игру.
Подготовка окружения
Перед тем как начать создавать свои моды, вам понадобится ПО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
- Нажмите клавишу
F1. - Напишите
Indent Using Spacesи нажмите клавишуEnter. - Нажмите клавишу
Enterещё раз, чтобы выбрать рекомендованный размер отступа — 4 пробела.
Sublime Text
- В нижнем правом углу найдите строку
Tab Size: #и нажмите на неё. - В открывшемся меню нажмите "Использовать в отступах пробелы" и при необходимости выберите размер отступа в 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
Полный гайд по использованию загрузчика вы можете найти здесь.
Программное обеспечение — программа или множество программ, используемых для управления компьютером.
Индентация — отступы (состоящие из пробелов или табуляции) в начале строк для визуального или синтаксического выделения блоков кода.
Инициализация — процесс подготовки программы, устройства, переменной или системы к работе, при котором задаются их начальные значения или параметры.
Список модов инициализируется в раннем Python-блоке. Источник: Ресурсы оригинальной игры, game/script.rpy:2.
