From a97a3f1fc13179568f99163e308ae5cf81e7dc4e Mon Sep 17 00:00:00 2001 From: Konstantin Dyachenko Date: Wed, 8 Apr 2026 21:23:40 +0700 Subject: [PATCH] [Add] New Tasks --- docs/tasks/Index.md | 4 +- docs/tasks/items/TASK-0025.md | 99 +++++++++++++++++++++++++++++++++ docs/tasks/items/TASK-0026.md | 101 ++++++++++++++++++++++++++++++++++ 3 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 docs/tasks/items/TASK-0025.md create mode 100644 docs/tasks/items/TASK-0026.md diff --git a/docs/tasks/Index.md b/docs/tasks/Index.md index 29108daa..b9f73ee6 100644 --- a/docs/tasks/Index.md +++ b/docs/tasks/Index.md @@ -63,4 +63,6 @@ | 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 арт на легальные ассеты для продакшена и зафиксировать источник/лицензии. | \ No newline at end of file +| 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 | Реализовать миникарту и механизм сохранения открытой карты у хоста так, чтобы состояние миникарты было общим для всех игроков мира. | diff --git a/docs/tasks/items/TASK-0025.md b/docs/tasks/items/TASK-0025.md new file mode 100644 index 00000000..14d812d8 --- /dev/null +++ b/docs/tasks/items/TASK-0025.md @@ -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. diff --git a/docs/tasks/items/TASK-0026.md b/docs/tasks/items/TASK-0026.md new file mode 100644 index 00000000..916fb10c --- /dev/null +++ b/docs/tasks/items/TASK-0026.md @@ -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.