Крупные объекты: props с footprint в движке, слоты арта, проба дома кодом
Работа C из docs/plan.md — подготовка к зданиям акта 2.

Движок:
- TileMapData.props: крупный объект с footprint w×h от СЗ-угла — коллизия
  по всему прямоугольнику, земля под ним (ground), спрайт якорем низ-центр
  footprint'а; без текстуры — колонна-плейсхолдер (общий с tall хелпер).
- IsoDepthLayer.addRect: глубина по диагонали юго-восточного угла
  footprint'а — герой у южной стены перекрывается домом, перед южным
  углом рисуется поверх.
- mapFormat: props в файловом формате + валидация (целые w/h ≥ 1,
  footprint внутри карты, высота в юнитах).
- LocationScene вставляет map.propViews в общий depth-слой.
- Доки движка: maps.md (секция props), render.md (addRect).

Арт (проба C2):
- Арт-библия: слоты крупных спрайтов (дом 2×2 — 64×80, 3×3 — 96×96,
  4×4 — 128×112); плотность пикселя как у тайлов.
- gen.mjs: tiles/house_big.png (64×80) — композит: модули щитов + крыша
  из шпал + козырёк + окна. Сравнение с AI-апскейлом 24→48 —
  tools/aiart/probe-c2.png: код-композит заметно чище, апскейл — мыло с
  чужой плотностью пикселя. Вывод: крупные объекты — код-композит;
  апскейл только как болванка (см. docs/plan.md, работа C).

Тесты: 318 (+9: footprint, depth-rect, валидация пропов).

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 83ef0aa commit 4f19b73d500b202a121b664882add6430d7ae77a
@root root authored 1 day ago
Showing 15 changed files
View
apps/game/assets/tiles/house_big.png 0 → 100644
View
apps/game/src/scenes/LocationScene.ts
View
apps/game/tools/aiart/probe-c2.png 0 → 100644
View
apps/game/tools/pixelart/gen.mjs
View
docs/art-style.md
View
docs/engine/maps.md
View
docs/engine/render.md
View
docs/plan.md
View
packages/engine/src/index.ts
View
packages/engine/src/map/IsometricTileMap.ts
View
packages/engine/src/map/__tests__/isometricMap.test.ts
View
packages/engine/src/map/__tests__/mapFormat.test.ts
View
packages/engine/src/map/mapFormat.ts
View
packages/engine/src/render/IsoDepthLayer.ts
View
packages/engine/src/render/__tests__/IsoDepthLayer.test.ts 0 → 100644