Всё, из чего собираются спрайты, и ничего собранного. Источник истины —
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>
63 lines
3.6 KiB
YAML
63 lines
3.6 KiB
YAML
# Каталог тварей: единственный источник геометрии monster-конвейера.
|
||
#
|
||
# Твари — НЕ бумажная кукла. У агента слои обязаны совпадать пиксель в пиксель,
|
||
# поэтому там один силуэт на всех. Здесь наоборот: пять видов обязаны читаться
|
||
# по пятну, не глядя на детали, — значит у каждого своя морфология, свой рост и
|
||
# своя походка. Общее у них ровно две вещи: камера и точка привязки.
|
||
version: 1
|
||
|
||
# Ячейка листа и общий pivot. pivot_y НЕ на нижней кромке: изометрический пол
|
||
# уходит от точки опоры ВНИЗ по экрану, и всё, что у твари позади (хвост
|
||
# бегуна, задние лапы затаившегося), проецируется ниже точки опоры. Девять
|
||
# строк под pivot — это запас на глубину подставки, а не «воздух».
|
||
# Monsters may sprawl wider than the 70x90 human paper-doll when dying. The
|
||
# camera scale stays unchanged: this is transparent safety padding, not a
|
||
# larger creature. Human agent layers remain exactly 70x90.
|
||
frame: {width: 96, height: 112, pivot_x: 48, pivot_y: 88}
|
||
|
||
# Порядок направлений тот же, что у агентов: по -45° от юга.
|
||
directions: [south, southwest, west, northwest, north, northeast, east, southeast]
|
||
|
||
# Кадры на ОДНО направление. Лист direction-major: сначала все кадры юга,
|
||
# затем юго-запада и так далее.
|
||
animations:
|
||
walk: {frames: 8, fps: 10}
|
||
attack: {frames: 6, fps: 12}
|
||
hit: {frames: 4, fps: 14}
|
||
death: {frames: 8, fps: 10}
|
||
|
||
# Камера ровно та же, что у агентов: elevation_deg = atan(TILE_H / TILE_W) =
|
||
# atan(0.5). Разъедься эти числа — тварь встала бы к полу под другим углом,
|
||
# чем боец рядом с ней.
|
||
camera:
|
||
elevation_deg: 26.565
|
||
# Common mutants read slightly larger than an operator; brute dominates.
|
||
pixels_per_unit: 32.0
|
||
distance: 12.0 # только для клиппинга: проекция ортографическая
|
||
|
||
# height_m — справочная высота силуэта в метрах, ею меряется читаемость
|
||
# размеров: громила обязан быть вдвое выше затаившегося.
|
||
# fps_scale — темп клипа относительно animations.fps: бредущий волочится,
|
||
# бегун частит. Ассету это даёт разный fps при одинаковом числе кадров.
|
||
kinds:
|
||
shambler:
|
||
style: "flayed penitent; thorax cranked open, ribs splayed outward, one arm grown past the knee"
|
||
height_m: 1.58
|
||
fps_scale: 0.8
|
||
rusher:
|
||
style: "quadruped sprinter; horizontal spine, digitigrade hind legs, scythe forelimbs, headless split-jaw bloom"
|
||
height_m: 0.78
|
||
fps_scale: 1.4
|
||
spitter:
|
||
style: "pressure vessel; dragging gland sac, implanted throat valve and nozzle, vestigial arms"
|
||
height_m: 1.22
|
||
fps_scale: 0.9
|
||
brute:
|
||
style: "the fused; a second half-absorbed body grafted to the shoulder, bolted plating, hammer of fused bone"
|
||
height_m: 1.96
|
||
fps_scale: 0.7
|
||
lurker:
|
||
style: "arachnid harvester; flat sutured carapace slung under four long arching limbs, eyeless hook wedge"
|
||
height_m: 0.74
|
||
fps_scale: 1.2
|