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