--- 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.