Files
TheDeclineOfWarriors/docs/tasks/items/TASK-0026.md
T
2026-04-08 21:23:40 +07:00

102 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.