Skip to content

Инструменты: конвейер ассетов одной командой и ассеты из GitHub Release - #44

Merged
devAsmodeus merged 2 commits into
mainfrom
assets-release
Sep 29, 2026
Merged

devAsmodeus merged 2 commits into
mainfrom
assets-release

Conversation

@devAsmodeus

Copy link
Copy Markdown
Owner

Что сделано

  • tools/build_assets.py — весь конвейер raw/ → assets/ одной командой. Он по порядку вызывает decode_textures, convert_atlases, visuals_to_json, ccbi_to_json и копирует шрифты TTF.
    • С --pack DIR упаковывает результат для релиза: underfire-assets-json.tar.gz (всё, кроме WebP), underfire-assets-webp.tar (WebP уже сжат, поэтому без gzip) и manifest.json с версией игры, коммитом, числом файлов, размерами и sha256.
    • Архивы не зависят от машины: у файлов обнулены владелец и время изменения.
  • tools/fetch_assets.py — готовые ассеты для тех, у кого нет XAPK: облачных сессий и CI.
    • Скачивает manifest.json и архивы из релиза assets-v1.3.12, сверяет sha256 и распаковывает в assets/ с filter="data", то есть без путей за пределы папки.
    • --only json скачивает всё без текстур.
    • Пишет только на стандартной библиотеке, поэтому работает до pip install.
  • Тесты (tests/test_assets_release.py): упаковка на игрушечном assets/, скачивание через file:// без сети, повреждённый архив, --only, перекрытие шрифтов по слоям.
  • Документация:
    • README: полный список инструментов, раздел «Без XAPK: готовые ассеты», как обновить релиз;
    • CLAUDE.md и CONTRIBUTING: assets/ берётся из релиза;
    • .gitignore: dist/.

Зачем

Без raw/ не собрать assets/, а он нужен для задач клиента и графики: #10, #17–#20, #33. После этого PR им хватает одной команды python3 tools/fetch_assets.py.

Как проверено

  • python3 tools/build_assets.py --pack dist/ на настоящих данных отработал за 16 с (текстуры уже были актуальны):
    • JSON-часть — 4 028 файлов, 54 МБ в распаковке, 3,3 МБ в архиве;
    • WebP-часть — 3 503 файла, 403 МБ.
  • ruff check . проходит, все тесты зелёные.

Сам релиз assets-v1.3.12 создам после слияния: перепакую из main, чтобы в манифесте был итоговый коммит.

🤖 Generated with Claude Code

devAsmodeus and others added 2 commits September 29, 2026 15:28
build_assets.py прогоняет весь конвейер raw/ → assets/ (текстуры,
атласы, анимации, макеты UI, шрифты) и с --pack упаковывает его для
релиза: JSON-часть (3 МБ в gzip) и WebP-часть (403 МБ) плюс
manifest.json с версией игры, коммитом и sha256. fetch_assets.py
(только стандартная библиотека) скачивает архивы из релиза, сверяет
sha256 и распаковывает в assets/ — для сессий и машин без XAPK.
Тесты — на игрушечном assets/ через file://, без сети.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devAsmodeus
devAsmodeus merged commit 97169a6 into main Sep 29, 2026
3 checks passed
@devAsmodeus
devAsmodeus deleted the assets-release branch September 29, 2026 12:31
devAsmodeus added a commit that referenced this pull request Sep 30, 2026
…se (#44)

build_assets.py: весь конвейер raw/ → assets/ (текстуры, атласы, анимации, макеты UI, шрифты), --pack — архивы для релиза (JSON-часть 3 МБ, WebP-часть 403 МБ) и manifest.json с sha256. fetch_assets.py (стандартная библиотека): скачать архивы из релиза, сверить sha256, распаковать в assets/ — для сессий без XAPK.
devAsmodeus added a commit that referenced this pull request Sep 30, 2026
…se (#44)

build_assets.py: весь конвейер raw/ → assets/ (текстуры, атласы, анимации, макеты UI, шрифты), --pack — архивы для релиза (JSON-часть 3 МБ, WebP-часть 403 МБ) и manifest.json с sha256. fetch_assets.py (стандартная библиотека): скачать архивы из релиза, сверить sha256, распаковать в assets/ — для сессий без XAPK.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant