4.4 KiB
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/VoxelWorld/Runtime/VoxelWorldGenerator.cs
TASK-0004 - Спроектировать раздельные сохранения мира и персонажей
Status
Статус задачи ведется в docs/tasks/Index.md и является каноническим там.
Допустимые значения статуса:
BackLogToDoInProgressReviewDone
Why
Пользователь явно хочет модель Terraria-style. Без этого раннее проектирование инвентаря, прогрессии, выбора мира и сетевого join flow будет хрупким.
Expected Outcome
Есть документированная и реализуемая структура world save и player save, описаны поля, границы владения данными и точка их загрузки/сохранения.
Current Context
Системы сохранения мира, игрока и их версионирования пока не оформлены. Эта задача создает основу для enemy bitmask, инвентаря и прогрессии.
Source Of Truth
docs/tasks/items/TASK-0001.mddocs/tasks/items/TASK-0002.md- последующая реализация persistence layer
Read First
docs/tasks/items/TASK-0001.mddocs/tasks/items/TASK-0002.mdAssets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.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
- Зафиксировать schema и ownership для мира и персонажа.
- Описать момент чтения и записи для host/server.
- Подготовить точку интеграции для 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-задачи ниже должны ссылаться на эту схему как на базовую.