Движковые коллизии: круг поверх сетки + LOS по пропам
Новый чистый модуль map/collision.ts в движке: gridOf (Grid из
TileMapData с footprint пропов), точная проверка круга circleFits
(ближайшая точка квадрата Blocked-тайла — ловит угловой прокол по
диагонали), moveCircle со скольжением по осям, pushOutOfWalls для
телепортов, separateCircles для будущего расталкивания тел.

Дедупликация четырёх копий worldToTile+isWalkable: движение героя
(moveFree), шаги врагов, фауна и валидатор контента теперь на одних
функциях. IsometricTileMap.isPropBlocked публичен.

Бой против стен: конус удара требует прямой видимости (hasLineOfSight
по tall + пропам), снаряды гасятся о стены и дома (вода прозрачна —
плевок летит над прудом). Отброс героя — только если тело помещается
(circleFits): прищёлкивание к центру тайла после отброса меняло
динамику погонь у прудов и валило пробу interact-world.

14 юнит-тестов на коллизии (скольжение, угловой прокол, совместимость
с A*-маршрутом, push-out, separateCircles). Доки: maps.md (раздел
«Коллизии»), README.md, llms.txt.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent f8e5424 commit 76521cbcce5316e47e9400ec70a59c497cdac17c
@root root authored 13 hours ago
Showing 15 changed files
View
apps/game/src/data/validate.ts
View
apps/game/src/scenes/LocationScene.ts
View
apps/game/src/systems/PlayerController.ts
View
apps/game/src/systems/combat/CombatWorld.ts
View
apps/game/src/systems/combat/los.ts
View
apps/game/src/systems/combat/stats.ts
View
apps/game/src/systems/fauna/FaunaSystem.ts
View
apps/game/src/testing/combatWorld.ts
View
docs/engine/README.md
View
docs/engine/maps.md
View
docs/llms.txt
View
packages/engine/src/index.ts
View
packages/engine/src/map/IsometricTileMap.ts
View
packages/engine/src/map/__tests__/collision.test.ts 0 → 100644
View
packages/engine/src/map/collision.ts 0 → 100644