Контент и данные для сайта документации по моддингу «Бесконечного лета» (Everlasting Summer): статьи, каталог ресурсов игры, списки художников, учебных материалов и новостных площадок.
config.yaml — конфигурация самого сайта. Она хранится в этом репозитории,
чтобы тексты баннеров, названия их состояний, сообщения об ошибках и ссылки
поддержки менялись вместе с контентом. Пути к локальным каталогам и кэшу в неё
не входят: их задаёт .env в репозитории приложения es-doc.
После push в main GitHub Actions подключается к серверу по SSH, пересобирает
контейнер web из Git-копии приложения es-doc с ASSETS_REF, равным SHA
этого push, и ждёт успешного health check. Отдельный Git-клон es-doc-assets
на сервере не нужен: Dockerfile приложения загружает содержимое во время
сборки.
В GitHub Environment production этого репозитория нужны secrets
DEPLOY_HOST, DEPLOY_USER, DEPLOY_PATH, DEPLOY_SSH_KEY и
DEPLOY_KNOWN_HOSTS — те же значения, что используются в es-doc.
DEPLOY_PATH указывает на Git-копию приложения с compose.production.yaml
и .env.production. Если в окружении включено обязательное одобрение,
GitHub приостановит деплой до него.
Чтобы добавить ресурс, положите файл в папку категории внутри community/.
Для изображений доступны images/bg, images/cg, images/anim,
images/sprites (или короткие bg, cg, anim, sprites); для звука —
sound/music, sound/ambience, sound/sfx (или music, ambience, sfx).
Внутри них можно создавать вложенные папки. Изображения: JPG, PNG, WebP, GIF.
Аудио: OGG, MP3, WAV, Opus. Каталог обновляется по файлам, объявления Ren'Py
не нужны.
Подписи добавляются в community-descriptions.yaml по пути относительно
community/:
sound/ambience/cave.ogg:
title: 'Пещера'
description: 'Фоновая музыка для подземных сцен.'
captions:
- 'Автор: Имя автора'
- 'Лицензия: CC BY 4.0'Все поля необязательны. Если у музыкального файла нет title, плеер покажет
путь /resource/community/sound/ambience/cave.ogg. descriptions.yaml и
game/resources.rpy по-прежнему относятся только к ресурсам игры.
Группы спрайтов добавляются в community-sprites.json в корне репозитория.
Каждая группа содержит автора, описание и список вариантов:
{
"groups": {
"Лена в полицейской форме": {
"author": {"name": "Имя художника", "link": "https://example.com/artist"},
"description": "Спрайт из модификации «Главный Атрибут Пионера»",
"variations": [
{
"name": "Улыбается",
"distances": {
"normal": [
"/resource/raw/images/sprites/normal/un/un_1_body.png",
"/resource/community/sprites/lena_police/normal/clothes.png",
"sprites/lena_police/normal/smile.png"
],
"close": ["sprites/lena_police/close/smile.png"],
"far": ["sprites/lena_police/far/smile.png"]
}
}
]
}
}
}Это пример структуры; пользовательские изображения из него нужно добавить
отдельно. groups — объект, ключи которого становятся названиями групп.
author и description необязательны, можно оставить пустые строки.
Ссылка автора принимает HTTP(S). Названия вариантов внутри группы уникальны.
Каждая дистанция — непустой массив из одного или нескольких файлов. Слои накладываются в порядке массива: тело, одежда, эмоция. Все слои одной дистанции должны иметь одинаковые размеры и совмещаться от левого верхнего угла. Готовый спрайт укажите одним файлом. Поддерживаются PNG, WebP и JPG; прозрачные слои сохраняйте в PNG или WebP.
Относительный путь считается от community/. Префикс /resource/community/
тоже указывает на community/, а /resource/raw/ — на game/, поэтому
можно переиспользовать тело и эмоции оригинальных персонажей.
Пути пишутся через /; внешние URL и выход из этих папок запрещены.
Можно указать любую часть дистанций normal, close, far.
Первой показывается normal, при её отсутствии — close или far.
Комментарии // в JSON недопустимы.
Каталог показывается в /resources/community/sprites с автором, описанием,
переключением дистанций, просмотром и скачиванием собранного WebP.
Названия, описание и автор участвуют в поиске.
Изменения каталога и изображений подхватываются без перезапуска.
Ошибочные дистанции пропускаются с записью в журнал; при повреждённом JSON
сохраняется прежний каталог. Чтобы очистить каталог, задайте {"groups": {}}
или удалите файл. Одиночные изображения остаются доступны; слои, использованные
в каталоге, отдельно в списке спрайтов не дублируются.
Каталог /materials хранится в materials.yaml. Категория содержит name,
items и, при необходимости, вложенные sections той же структуры.
Новый материал добавляется одной записью:
- title: Автор — «Название книги»
url: https://example.org/book/read
url_label: Читать онлайн
access: Полный текст
description: Краткое пояснение
files:
- path: writing/book.pdf
- path: writing/book.epub
label: EPUB для читалкиВсе поля, кроме title, необязательны. url указывает непосредственно на
чтение по HTTP(S); url_label задаёт подпись ссылки. Без url_label ссылка
остаётся в названии материала. Для ознакомительного отрывка используйте
url_label: Читать онлайн и access: Фрагмент. Для полной книги укажите
access: Полный текст. Источник и язык в подписи не указываются.
Файлы положите в materials/: например, materials/writing/book.pdf.
В files указывайте путь относительно этой папки, через /. Можно записать
короче: files: [writing/book.pdf, writing/book.epub]. Название формата для
кнопки «Скачать» берётся из расширения; label позволяет его уточнить.
Допускаются несколько форматов, только файлы, только ссылка или оба варианта.
Файлы выдаются как вложения, поэтому PDF тоже можно скачать, а не только
открыть в браузере. Загрузка новых файлов выполняется через репозиторий.
Сайт показывает кнопки только для существующих файлов и отдаёт только
перечисленные в каталоге вложения. Пути за пределами materials/ запрещены.
Изменения YAML и добавление/удаление файлов обновляют каталог без перезапуска.
В репозитории соседствуют материалы с разными правовыми режимами. Читайте внимательно перед тем, как что-либо переиспользовать.
Ресурсы игры «Бесконечное лето» принадлежат Soviet Games и распространяются
на условиях Creative Commons Attribution-NonCommercial-ShareAlike. GPL на них
не распространяется, подробности и условия в NOTICE.md.
Претензии по размещённым материалам пишите в issues.