4.3 KiB
4.3 KiB
id, title, summary, priority, area, owner, created, updated, execution_time, depends_on, canonical_docs, related_files
| id | title | summary | priority | area | owner | created | updated | execution_time | depends_on | canonical_docs | related_files | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TASK-0023 | Runtime NavMesh bake для voxel-чанка | Реализовать генерацию/обновление NavMesh в рантайме для каждого voxel-чанка, чтобы враги могли корректно ходить по процедурному миру. | Highest | ai | unassigned | 2026-03-31 | 2026-03-31 | 2d |
|
|
|
TASK-0023 - Runtime NavMesh bake для voxel-чанка
Status
Статус задачи ведется в docs/tasks/Index.md и является каноническим там.
Why
AI врагов (TASK-0012) опирается на NavMesh. Воксельный мир генерируется чанками в рантайме, значит навигация должна обновляться динамически, иначе враги не смогут корректно находить путь.
Expected Outcome
- Для активных чанков есть актуальный NavMesh, соответствующий walkable поверхности.
- При загрузке/обновлении чанка навигация перестраивается предсказуемо и без зависаний.
- Есть понятные границы: когда перестраиваем NavMesh, когда откладываем, как ограничиваем стоимость.
Current Context
VoxelWorldGenerator строит mesh/collider для чанка. Это хорошая опора для NavMeshSource сборки, но нужно аккуратно сделать runtime bake на уровне чанка или группы чанков.
Scope In
- определить модель bake: per-chunk NavMeshData, либо один NavMeshData на область вокруг игрока
- собрать NavMesh build sources из чанка (MeshCollider/BoxCollider/Renderer)
- обновлять NavMesh при загрузке/выгрузке чанков
- ограничения производительности: throttle, бюджет на кадр, батчирование
Scope Out
- полноценный crowd simulation
- оптимизация под большие карты без ограничений
Constraints
- runtime bake не должен фризить игру
- результат должен быть одинаков в рамках одного мира при одинаковых чанках
Suggested Approach
- Выбрать подход:
NavMeshSurface(если используется пакет) или ручнойNavMeshBuilder.UpdateNavMeshDataAsync. - Определить build bounds по чанку и собрать build sources по его коллайдерам.
- Встроить вызов bake в lifecycle чанка: после генерации mesh/коллайдера.
- Добавить throttling и очереди обновлений.
Acceptance Criteria
- после генерации чанка враг способен построить путь по поверхности чанка
- при выгрузке чанка навигация не содержит "висячих" областей
Verification
- ручной тест: враг преследует игрока при перемещении между чанками
- стресс тест: быстро двигаться по миру и убедиться, что обновления не фризят
Risks / Open Questions
- нужно определить, как синхронизировать bake с сетевой моделью (сервер/клиент) и где AI реально работает
Human Decisions Needed
- none currently
Decision Log
2026-03-31- runtime bake вынесен в отдельную задачу как prerequisite для enemy NavMesh AI.
Handoff Notes
Если в проекте нет пакета NavMeshComponents, возможно придется добавить его или реализовать минимальный runtime builder.