Всё, из чего собираются спрайты, и ничего собранного. Источник истины —
assets/manifests и assets/*/catalog.yaml; PNG, .sfa и contact sheet остаются
за бортом, потому что воспроизводятся командой (docs/12-assets.md).
assets/manifests что и как рендерить: окружение, твари, агенты, предметы
assets/agents паперdoll-риг восьми направлений, каталог снаряжения
assets/monsters пять морфологий, каждая своим ригом (docs/14-monsters.md)
assets/sources исходные развёртки и импорты
assets/art_masters мастер-развёртки, по которым сверяется стиль
tools/ сборка ассетов, покрытие, генераторы, blender-скрипты
generated/ заголовки с константами SF_ASSET_*: без них игра не
соберётся, поэтому они в репозитории, хотя и производные
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
152 lines
4.1 KiB
YAML
152 lines
4.1 KiB
YAML
# Собрано `python tools/monster_assets.py sync`.
|
||
# Записи с backend: import перегенерируются по PNG в assets/sources/monsters/.
|
||
# Записи с любым другим backend sync СОХРАНЯЕТ как есть: правь их руками
|
||
# здесь, это единственное место, где такая правка переживает sync.
|
||
#
|
||
# ID ассета — <kind>_<animation>: ровно то, что требует
|
||
# tools/asset_coverage.py от группы enemy. Переименуешь — упадёт покрытие.
|
||
version: 1
|
||
defaults:
|
||
dirs: 8
|
||
pivot: "48,88"
|
||
|
||
shambler_walk:
|
||
backend: import
|
||
source: ../sources/monsters/shambler_walk.png
|
||
fps: 8
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, shambler, walk]
|
||
|
||
shambler_attack:
|
||
backend: import
|
||
source: ../sources/monsters/shambler_attack.png
|
||
fps: 10
|
||
params: {frame_width: 96, frame_height: 112, frames: 48}
|
||
tags: [enemy, shambler, attack]
|
||
|
||
shambler_hit:
|
||
backend: import
|
||
source: ../sources/monsters/shambler_hit.png
|
||
fps: 11
|
||
params: {frame_width: 96, frame_height: 112, frames: 32}
|
||
tags: [enemy, shambler, hit]
|
||
|
||
shambler_death:
|
||
backend: import
|
||
source: ../sources/monsters/shambler_death.png
|
||
fps: 8
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, shambler, death]
|
||
|
||
rusher_walk:
|
||
backend: import
|
||
source: ../sources/monsters/rusher_walk.png
|
||
fps: 14
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, rusher, walk]
|
||
|
||
rusher_attack:
|
||
backend: import
|
||
source: ../sources/monsters/rusher_attack.png
|
||
fps: 17
|
||
params: {frame_width: 96, frame_height: 112, frames: 48}
|
||
tags: [enemy, rusher, attack]
|
||
|
||
rusher_hit:
|
||
backend: import
|
||
source: ../sources/monsters/rusher_hit.png
|
||
fps: 20
|
||
params: {frame_width: 96, frame_height: 112, frames: 32}
|
||
tags: [enemy, rusher, hit]
|
||
|
||
rusher_death:
|
||
backend: import
|
||
source: ../sources/monsters/rusher_death.png
|
||
fps: 14
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, rusher, death]
|
||
|
||
spitter_walk:
|
||
backend: import
|
||
source: ../sources/monsters/spitter_walk.png
|
||
fps: 9
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, spitter, walk]
|
||
|
||
spitter_attack:
|
||
backend: import
|
||
source: ../sources/monsters/spitter_attack.png
|
||
fps: 11
|
||
params: {frame_width: 96, frame_height: 112, frames: 48}
|
||
tags: [enemy, spitter, attack]
|
||
|
||
spitter_hit:
|
||
backend: import
|
||
source: ../sources/monsters/spitter_hit.png
|
||
fps: 13
|
||
params: {frame_width: 96, frame_height: 112, frames: 32}
|
||
tags: [enemy, spitter, hit]
|
||
|
||
spitter_death:
|
||
backend: import
|
||
source: ../sources/monsters/spitter_death.png
|
||
fps: 9
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, spitter, death]
|
||
|
||
brute_walk:
|
||
backend: import
|
||
source: ../sources/monsters/brute_walk.png
|
||
fps: 7
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, brute, walk]
|
||
|
||
brute_attack:
|
||
backend: import
|
||
source: ../sources/monsters/brute_attack.png
|
||
fps: 8
|
||
params: {frame_width: 96, frame_height: 112, frames: 48}
|
||
tags: [enemy, brute, attack]
|
||
|
||
brute_hit:
|
||
backend: import
|
||
source: ../sources/monsters/brute_hit.png
|
||
fps: 10
|
||
params: {frame_width: 96, frame_height: 112, frames: 32}
|
||
tags: [enemy, brute, hit]
|
||
|
||
brute_death:
|
||
backend: import
|
||
source: ../sources/monsters/brute_death.png
|
||
fps: 7
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, brute, death]
|
||
|
||
lurker_walk:
|
||
backend: import
|
||
source: ../sources/monsters/lurker_walk.png
|
||
fps: 12
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, lurker, walk]
|
||
|
||
lurker_attack:
|
||
backend: import
|
||
source: ../sources/monsters/lurker_attack.png
|
||
fps: 14
|
||
params: {frame_width: 96, frame_height: 112, frames: 48}
|
||
tags: [enemy, lurker, attack]
|
||
|
||
lurker_hit:
|
||
backend: import
|
||
source: ../sources/monsters/lurker_hit.png
|
||
fps: 17
|
||
params: {frame_width: 96, frame_height: 112, frames: 32}
|
||
tags: [enemy, lurker, hit]
|
||
|
||
lurker_death:
|
||
backend: import
|
||
source: ../sources/monsters/lurker_death.png
|
||
fps: 12
|
||
params: {frame_width: 96, frame_height: 112, frames: 64}
|
||
tags: [enemy, lurker, death]
|