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

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/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs
  • Assets/Features/VoxelWorld/Scenes/VoxelWorldTestScene.unity

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/Features/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

  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-задачи ниже должны ссылаться на эту схему как на базовую.