Merge branch 'master' into task/0023-0028-navmesh

# Conflicts:
#	Assets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs
#	docs/tasks/Index.md
This commit is contained in:
Alexander Borisov
2026-04-08 20:42:18 +03:00
32 changed files with 1667 additions and 25 deletions
+3 -1
View File
@@ -58,11 +58,13 @@
| TASK-0016 | ToDo | High | classes | unassigned | 1d | docs/tasks/items/TASK-0016.md | Реализовать MVP-скилл Лучника: выстрел через общую систему оружия и навыков. |
| TASK-0017 | BackLog | Medium | networking | unassigned | 1d | docs/tasks/items/TASK-0017.md | Добавить reconnect/resume после дисконнекта с восстановлением позиции и session state. |
| TASK-0018 | BackLog | Medium | persistence | unassigned | 1d | docs/tasks/items/TASK-0018.md | Добавить миграции формата сохранений между версиями для world save и player save. |
| TASK-0019 | BackLog | High | worldgen | unassigned | 1d6h | docs/tasks/items/TASK-0019.md | Добавить детерминированное размещение dungeon prefab в voxel-мире через stamp/carve в данных чанков. |
| TASK-0019 | InProgress | High | worldgen | pretty_kotik | 1d6h | `docs/tasks/items/TASK-0019.md` | Добавить детерминированное размещение dungeon prefab в voxel-мире через stamp/carve в данных чанков. |
| TASK-0020 | BackLog | High | security | unassigned | 1d | docs/tasks/items/TASK-0020.md | Добавить серверные ограничения и валидации против читов и некорректных клиентских команд. |
| TASK-0021 | ToDo | High | architecture | unassigned | 2d | docs/tasks/items/TASK-0021.md | Привести проект в порядок: разнести код по asmdef, навести структуру Editor/Runtime и добавить базовые автотесты. |
| TASK-0022 | ToDo | Highest | worldgen | unassigned | 1d | docs/tasks/items/TASK-0022.md | Интегрировать спавн врагов в VoxelWorldGenerator: спавнить по загрузке чанка и учитывать kill-state. |
| TASK-0023 | InProgress | Highest | ai | abysscion | 2d | `docs/tasks/items/TASK-0023.md` | Реализовать runtime NavMesh bake для voxel-чанка и интегрировать обновление навигации при загрузке/изменении чанков. |
| TASK-0024 | ToDo | Highest | art | unassigned | 2d | docs/tasks/items/TASK-0024.md | Заменить Minecraft-placeholder арт на легальные ассеты для продакшена и зафиксировать источник/лицензии. |
| TASK-0025 | ToDo | Highest | build | unassigned | 1d | docs/tasks/items/TASK-0025.md | Описать и зафиксировать flow локального теста билда: сборка, запуск, host/client сценарий и обязательный smoke checklist. |
| TASK-0026 | BackLog | High | ui | unassigned | 2d | docs/tasks/items/TASK-0026.md | Реализовать миникарту и механизм сохранения открытой карты у хоста так, чтобы состояние миникарты было общим для всех игроков мира. |
| TASK-0027 | ToDo | Highest | gameplay-core | unassigned | 3d | docs/tasks/items/TASK-0027.md | Перевести player movement на host-authoritative NavMesh pipeline с server-side path planning и shared debug path preview для всех клиентов. |
| TASK-0028 | ToDo | Highest | ai | unassigned | 2d | docs/tasks/items/TASK-0028.md | Перевести основной runtime pathing mode на interest-cluster-based coverage windows, чтобы убрать seam-разрывы region-based NavMesh и учитывать multiplayer interest set. |
+1 -1
View File
@@ -4,7 +4,7 @@ title: Добавить генерацию данжей-предфабов по
summary: Реализовать BackLog-задачу на детерминированное размещение dungeon prefab в voxel-мире: одинаковая позиция по seed, встраивание через stamp/carve и сохранение результата.
priority: High
area: worldgen
owner: unassigned
owner: pretty_kotik
created: 2026-03-30
updated: 2026-03-30
execution_time: 1d6h
+99
View File
@@ -0,0 +1,99 @@
---
id: TASK-0025
title: Описать flow локального теста билда
summary: Зафиксировать repeatable flow локального теста билда: как собрать проект, как запускать host/client сценарий и что обязательно проверять перед ручным прогоном.
priority: Highest
area: build
owner: unassigned
created: 2026-03-31
updated: 2026-03-31
execution_time: 1d
depends_on: []
canonical_docs:
- docs/tasks/Index.md
related_files:
- ProjectSettings/
- Assets/Scenes/
---
# TASK-0025 - Описать flow локального теста билда
## Status
Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.
## Why
Без зафиксированного локального flow билд-тестов сложно быстро и одинаково проверять игру перед изменениями, особенно когда проект одновременно развивается в networking, voxel worldgen и gameplay.
## Expected Outcome
Есть понятный и повторяемый локальный сценарий проверки билда: как собрать проект, как запустить игру, как проверить host/client сценарий и какие smoke-checks обязательны перед ручным завершением теста.
## Current Context
Сейчас локальная проверка билда не оформлена как канонический процесс. Из-за этого каждый новый прогон легко делается по-разному и важные регрессии можно пропустить.
## Source Of Truth
- `ProjectSettings/...`
- фактический build pipeline проекта
- актуальные игровые сцены и точка входа в игру
## Read First
- `README.md`
- `docs/tasks/Index.md`
- `ProjectSettings/...`
- `Assets/Scenes/...`
## Scope In
- описать локальную сборку проекта для основного target
- зафиксировать host/client сценарий локального прогона
- описать smoke checklist после запуска билда
- указать, какие артефакты или логи нужно смотреть при сбое
## Scope Out
- автоматизация CI/CD
- полное end-to-end покрытие всех игровых сценариев
## Constraints
- flow должен быть достаточно коротким для частого повторения
- шаги должны быть воспроизводимыми на одной машине разработчика
## Suggested Approach
1. Зафиксировать основной build target и точку входа.
2. Описать последовательность сборки и запуска host/client локально.
3. Сформировать короткий smoke checklist.
4. Добавить заметки по типовым ошибкам и логам.
## Acceptance Criteria
- есть документированный flow локального теста билда
- есть checklist для host/client smoke test
- новый человек или AI может повторить прогон без уточнений в чате
## Verification
- пройти описанный flow вручную
- убедиться, что шаги не зависят от скрытых предположений
## Risks / Open Questions
- если build flow сильно зависит от окружения, понадобится отдельно фиксировать prerequisites
## Human Decisions Needed
- none currently
## Decision Log
- `2026-03-31` - задача добавлена для стандартизации ручной локальной проверки билда.
## Handoff Notes
Если в проекте появится отдельный build script или launcher, этот task нужно обновить и сослаться уже на него как на канонический entry point.
+101
View File
@@ -0,0 +1,101 @@
---
id: TASK-0026
title: Реализовать миникарту и сохранение карты у хоста
summary: Добавить миникарту и хранить ее открытое состояние у хоста так, чтобы карта была общей для всех игроков мира и сохранялась вместе с world-state.
priority: High
area: ui
owner: unassigned
created: 2026-03-31
updated: 2026-03-31
execution_time: 2d
depends_on:
- TASK-0003
- TASK-0004
canonical_docs:
- docs/tasks/Index.md
related_files:
- Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs
- Assets/Scenes/
---
# TASK-0026 - Реализовать миникарту и сохранение карты у хоста
## Status
Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.
## Why
Миникарта нужна как gameplay и navigation feature, но ее состояние не должно жить только локально у клиента. Хост должен быть источником истины для открытой карты мира, чтобы все игроки видели согласованное состояние.
## Expected Outcome
В игре есть миникарта, а открытые области карты сохраняются в состоянии мира у хоста и корректно восстанавливаются для всех игроков при повторном входе в мир.
## Current Context
Воксельный мир уже генерируется чанками, а world persistence выделен в отдельные задачи. Миникарта должна опираться на те же координаты чанков и храниться как часть world-state, а не как чисто локальный UI cache.
## Source Of Truth
- `docs/tasks/items/TASK-0003.md`
- `docs/tasks/items/TASK-0004.md`
- runtime реализация minimap и world save
## Read First
- `docs/tasks/items/TASK-0003.md`
- `docs/tasks/items/TASK-0004.md`
- `Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs`
## Scope In
- базовое UI отображение миникарты
- определение, какие области карты считаются открытыми
- host-authoritative хранение открытой карты мира
- восстановление состояния миникарты для всех игроков
## Scope Out
- полнофункциональная world map с маркерами, пингами и пользовательскими заметками
- сложная система fog-of-war по каждому игроку отдельно
## Constraints
- источник истины по открытой карте у хоста
- состояние карты должно быть частью world-state, а не только локального клиента
- решение должно быть совместимо с chunked voxel world
## Suggested Approach
1. Определить формат minimap data на уровне чанков/областей.
2. Выбрать правило открытия карты: посещение, радиус обзора, загрузка чанка или явный reveal.
3. Сохранить это состояние в world save у хоста.
4. Подключить синхронизацию minimap state для новых и уже подключенных игроков.
## Acceptance Criteria
- миникарта отображает мир в согласованной форме
- открытая карта сохраняется у хоста
- новые игроки и повторно подключившиеся игроки получают актуальное состояние карты
## Verification
- ручной тест: открыть часть мира, перезапустить мир и проверить восстановление
- ручной тест: второй игрок подключается и получает ту же карту
## Risks / Open Questions
- нужно решить, хранить ли карту как coarse chunk-state, bitmap или другой компактный формат
## Human Decisions Needed
- none currently
## Decision Log
- `2026-03-31` - задача добавлена как backlog feature с host-authoritative persistence minimap state.
## Handoff Notes
Если позже понадобится отдельная личная карта игрока, не ломать эту задачу: вынести per-player overlays поверх общего world minimap state.