Files
TheDeclineOfWarriors/docs/tasks/items/TASK-0004.md
T

111 lines
4.3 KiB
Markdown

---
id: TASK-0004
title: Спроектировать раздельные сохранения мира и персонажей
summary: Зафиксировать и реализовать модель сохранений по аналогии с Terraria: отдельно данные мира, отдельно профиль игрока, с возможностью входить любым персонажем в любой мир.
priority: High
area: persistence
owner: unassigned
created: 2026-03-30
updated: 2026-03-30
execution_time: 1d
depends_on:
- TASK-0001
canonical_docs:
- docs/tasks/Index.md
related_files:
- Assets/Scenes/SampleScene.unity
- Assets/Scripts/WorldGen/InfiniteWorldGenerator.cs
---
# TASK-0004 - Спроектировать раздельные сохранения мира и персонажей
## Status
Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.
Допустимые значения статуса:
- `BackLog`
- `ToDo`
- `InProgress`
- `Review`
- `Done`
## Why
Пользователь явно хочет модель Terraria-style. Без этого раннее проектирование инвентаря, прогрессии, выбора мира и сетевого join flow будет хрупким.
## Expected Outcome
Есть документированная и реализуемая структура world save и player save, описаны поля, границы владения данными и точка их загрузки/сохранения.
## Current Context
Системы сохранения мира, игрока и их версионирования пока не оформлены. Эта задача создает основу для enemy bitmask, инвентаря и прогрессии.
## Source Of Truth
- `docs/tasks/items/TASK-0001.md`
- `docs/tasks/items/TASK-0002.md`
- последующая реализация persistence layer
## Read First
- `docs/tasks/items/TASK-0001.md`
- `docs/tasks/items/TASK-0002.md`
- `Assets/Scripts/WorldGen/InfiniteWorldGenerator.cs`
## Scope In
- определить world save schema
- определить player profile schema
- описать lifecycle load/save в singleplayer и multiplayer host flow
- определить ownership и conflict rules
## Scope Out
- миграции между версиями save format
- reconnect/resume после дисконнекта
## Constraints
- world save и player save должны быть независимыми файлами/сущностями
- world save хранит world-state, player save хранит прогрессию и инвентарь персонажа
## If You Find Drift
- если в коде появится смешение player и world state, это нужно фиксировать как архитектурный drift
## Suggested Approach
1. Зафиксировать schema и ownership для мира и персонажа.
2. Описать момент чтения и записи для host/server.
3. Подготовить точку интеграции для inventory, progression и chunk kill state.
## Acceptance Criteria
- игрок может существовать отдельно от мира
- мир хранит собственное состояние независимо от конкретного персонажа
- схема не мешает любому игроку зайти в любой мир
## Verification
- вычитка схемы сохранений на отсутствие циклических зависимостей
- ручная проверка сценария выбора персонажа и выбора мира как независимых шагов
## Risks / Open Questions
- потребуется заранее решить идентификаторы игроков и персонажей для мультиплеерного join flow
## Human Decisions Needed
- none currently
## Decision Log
- `2026-03-30` - Terraria-style сохранения выделены в отдельную задачу перед инвентарем и enemy save state.
## Handoff Notes
Все persistence-задачи ниже должны ссылаться на эту схему как на базовую.