| 2026-09-08 |
Карты внешних локаций ×2: новые раскладки генераторов и пересчёт контента
...
- Генераторы map.ts переписаны под новые размеры: луга 56×56, пруды 48×48,
Звенец 56×40, роща 48×40, разъезд 48×40, зал Машины 26×22 (интерьеры не тронуты).
- Вся геометрия контента пересчитана с сохранением взаимного расположения:
переходы у краёв и парные, тропа луга→Звенец, поляна Клинта, рельсы и люк;
квест-тайлы резонатора (QUEST_TONE_TILES) теперь гарантируются генератором рощи.
- Координаты: locations.ts (spawn/переходы/враги/патрули/hazards/fauna/свет),
interactables.ts, npcs.ts, quests.ts; NPC отодвинуты от дверей и колодца,
чтобы E брал нужную цель, а не ближайшего персонажа.
- Чеки и смоуки под новые дистанции: таймауты walkTo/approach, координаты,
чистка аудио-лога перед долгой прогулкой в music; валидатор-тест теперь
покрывает все 6 областей (ловит спавны, закрытые валуном).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
| 2026-09-07 |
feat(agent): мост scene:walk/approach вместо tapTile, чеки и смоуки на кнопках
...
- SceneAgentView: команды scene:walk (A* + followPath) и scene:approach
(findPathToNeighbor, возврат тайла прибытия)
- GameAgent: walkTo через одну команду + waitFor тайла (без !moving —
step-переход срабатывает в moving), новый approach; tapTile удалён
- lib.mjs: t.interactAt/t.talkTo/t.useInteractable — координаты из снапшота
по id; fightNearest — подход, доворот facing коротким шагом к врагу
(клавиши — экранный вектор) и конус, до 3 попыток
- Чеки и смоуки переписаны с кликов на кнопки: interact, interact-world,
quest-bells, transitions, final, resonator, zoom, lighting, collision,
perf; smoke-act1 и final-smoke green (бой починен)
- Доки: agent.md (контракт моста), practices.md (доворот facing, две
линейки), plan.md (задача 15)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|

К4: каркас withChecks для чек-сценариев, конфиги, доки
...
- apps/game/tools/lib.mjs: withChecks(name, fn) — сервер/браузер и помощники
(boot/goToArea/sleepEnemies/readAudioLog/waitAudioLog/expectInvariantsClean)
в одном месте; все 12 сценариев checks/*.mjs переписаны на шаги.
- Контекст сценария — только t.ctx (геттер): деструктуризация до boot давала
null — задокументировано в agent.md и practices.md.
- vitest.config.ts: явный include (src-тесты + тулзы с чистой математикой);
GameLoop.manual.test.ts -> GameLoop.timing.test.ts.
- Редактор диалогов: порт 5299 (5199 остаётся за dev-сервером смоуков) + фикс
разбора --port (indexOf(-1) -> NaN, npm run dialogues падал без аргумента).
- tsconfig: apps/game включает только src (движок типчекается своим проектом);
vite/client убран из движка (import.meta.env там нет).
- Докси: getting-started — regex-алиас вместо строкового; llms.txt + anim.md;
CLAUDE.md — полный список док; wav.mjs writeWav удалён (0 вызовов).
Проверено: agent:check 16/16, check:fast (692 теста), smoke-act1, редактор на 5299.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
| 2026-09-06 |

Тела не проходят друг сквозь друга + карта коллизий агенту
...
Расталкивание через реестр сцены: герой выталкивает себя из NPC
(PlayerController), враг — из героя, NPC и своих (EnemySystem); каждый
актор двигает только себя (separateCircles). attackStop (0.85) больше
суммы радиусов — авто-атака не дрожит.
A* не ведёт героя сквозь тело: SceneObjects.walkGrid() считает тайлы
NPC занятыми (герой застревал «на носу» у Ирвина — звон в верёвку
не поднимал флаг). Проводка: клик по миру, авто-подход к цели,
scene:route моста.
Карта коллизий агенту: слой s.collision {width, height, blocked (0/1
с footprint пропов), props} + команды scene:walkable {x, y} и
scene:raycast {from, to} (прямая видимость, вода прозрачна). Новый
сценарий checks/collision.mjs: слой валиден, walkable/raycast на
конкретных тайлах, клик в дерево — герой в проходимом, телепорт в
тело спящего ползуна — враг выталкивает себя.
Доки: agent.md (слой + 2 команды), practices.md (ситуация «проверяю
коллизии/движение» + грабли телепорта на тайл перехода).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|