| 2026-09-06 |

Крупные объекты: 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>
|
| 2026-09-05 |
Фаза 4: TallSpec.height в мировых юнитах
...
- плейсхолдер-колонна: h = tall.height * iso.tileW (вместо px);
- удалён устаревший map.screenSize (остался worldBounds в юнитах);
- data/map.ts: высота дерева 1.5 юнита (те же 48 px на экране);
- .map-файлы перегенерированы (diff — только height: 48 -> 1.5);
- parseMap отвергает tall.height > 16 как высоту в px (защита от
протухших карт-файлов);
- тесты: 186/186.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
камера: позиция и границы в мировых юнитах
...
- Camera.x/y и bounds в юнитах (1 юнит = 1 тайл); клэмп по экранному
bbox мирового прямоугольника; deadZone -> deadZonePx (окно на экране)
- IsometricTileMap.worldBounds; LocationScene использует его
- camera.test.ts переписан в юнитах (проверка проекций)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
игра: квест «Три цветка» — сбор, журнал, сумка, сдача и крючок акта 1
...
- движок: IsometricTileMap.setTile — изменение тайла с перерисовкой ячейки (+тест);
InputManager: одна клавиша маппится на несколько действий (Space = advance+attack)
- data/quests.ts: журнал квестов и предметы из флагов/варов GameState
- сбор лунных колокольчиков кликом на прудах (тайл зеленеет, прогресс flowers)
- сдача квеста Ирвину (elder_hand_in) — посадка цветов у тропы, крючок «Машина дышит»
- повторные реплики Милы (trader_repeat/trader_after)
- InventoryScene: сумка и журнал на Panel (клавиша I / геймпад Y)
- tools/smoke-quest.mjs: смоук диалога и сумки
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
Мир, арт-библия и пиксель-арт
...
- docs/world.md: библия мира (Великий Пепелопад, звонари, лунные колокольчики,
регион Низина Звенца, персонажи, арка акта 1)
- docs/art-style.md: арт-библия — палитра 32 цвета, размеры, стиль, чеклист
- tools/pixelart: генератор PNG из кода (тайлы, дерево, герой 3 направления,
NPC) без внешних зависимостей
- игра: загрузка ассетов через AssetLoader в BootScene с прогресс-баром,
тайлсет в карте, анимированный герой, спрайты NPC, квестовый тайл
с колокольчиками
Co-Authored-By: Claude Code <noreply@anthropic.com>
gbook
committed
2 days ago
|
Скелет проекта: свой движок + изометрическая RPG
...
- packages/engine: жанронезависимый движок (цикл, сцены, ECS, ввод, камера,
изометрия 2:1, A*, сейвы, диалоги, анимация) на PixiJS-бэкенде
- apps/game: первый вертикальный срез — меню, локация «Выжженные луга»,
герой с click-to-move, 2 NPC с диалогами, автосейв по Esc
- CLAUDE.md, README.md, workspaces + Vite + Vitest
Co-Authored-By: Claude Code <noreply@anthropic.com>
gbook
committed
2 days ago
|