Всё, из чего собираются спрайты, и ничего собранного. Источник истины —
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>
72 lines
2.3 KiB
YAML
72 lines
2.3 KiB
YAML
# Five production monster rigs rendered directly by SpriteForge. Each asset
|
|
# contains every gameplay clip; no intermediate sprite sheets are required.
|
|
version: 1
|
|
defaults:
|
|
backend: blender
|
|
dirs: 8
|
|
fps: 12
|
|
size: 96x112
|
|
postprocess_scale: 0.5
|
|
pivot: "96,176"
|
|
tags: [enemy, body_horror, blender, consolidated]
|
|
|
|
shambler:
|
|
rig: ../monsters/shambler.blend
|
|
parts: {body: unused_when_prefix_is_set}
|
|
anims: [walk, attack, hit, death]
|
|
params: &monster_render
|
|
executable: blender
|
|
render_size: 192x224
|
|
ortho_scale: 3.5
|
|
elevation: 26.565
|
|
camera_distance: 12
|
|
camera_target: [0, 0, 1.118]
|
|
direction_offset_deg: -90
|
|
engine: BLENDER_EEVEE
|
|
samples: 12
|
|
frames: {walk: 8, attack: 6, hit: 4, death: 8}
|
|
animation_fps: {walk: 8, attack: 10, hit: 11, death: 8}
|
|
loop_sampling: {walk: true, attack: false, hit: false, death: false}
|
|
actions: {walk: shambler_walk, attack: shambler_attack, hit: shambler_hit, death: shambler_death}
|
|
part_prefixes: {body: shambler_}
|
|
|
|
rusher:
|
|
rig: ../monsters/rusher.blend
|
|
parts: {body: unused_when_prefix_is_set}
|
|
anims: [walk, attack, hit, death]
|
|
params:
|
|
<<: *monster_render
|
|
animation_fps: {walk: 14, attack: 17, hit: 20, death: 14}
|
|
actions: {walk: rusher_walk, attack: rusher_attack, hit: rusher_hit, death: rusher_death}
|
|
part_prefixes: {body: rusher_}
|
|
|
|
spitter:
|
|
rig: ../monsters/spitter.blend
|
|
parts: {body: unused_when_prefix_is_set}
|
|
anims: [walk, attack, hit, death]
|
|
params:
|
|
<<: *monster_render
|
|
animation_fps: {walk: 9, attack: 11, hit: 13, death: 9}
|
|
actions: {walk: spitter_walk, attack: spitter_attack, hit: spitter_hit, death: spitter_death}
|
|
part_prefixes: {body: spitter_}
|
|
|
|
brute:
|
|
rig: ../monsters/brute.blend
|
|
parts: {body: unused_when_prefix_is_set}
|
|
anims: [walk, attack, hit, death]
|
|
params:
|
|
<<: *monster_render
|
|
animation_fps: {walk: 7, attack: 8, hit: 10, death: 7}
|
|
actions: {walk: brute_walk, attack: brute_attack, hit: brute_hit, death: brute_death}
|
|
part_prefixes: {body: brute_}
|
|
|
|
lurker:
|
|
rig: ../monsters/lurker.blend
|
|
parts: {body: unused_when_prefix_is_set}
|
|
anims: [walk, attack, hit, death]
|
|
params:
|
|
<<: *monster_render
|
|
animation_fps: {walk: 12, attack: 14, hit: 17, death: 12}
|
|
actions: {walk: lurker_walk, attack: lurker_attack, hit: lurker_hit, death: lurker_death}
|
|
part_prefixes: {body: lurker_}
|