--- id: TASK-0001 title: Зафиксировать MVP-архитектуру диаблоида на FishNet summary: Описать каноническую архитектуру MVP, включая разделение player/world, authority, сетевые границы, детерминизм и связи между подсистемами. priority: Highest area: architecture owner: unassigned created: 2026-03-30 updated: 2026-03-30 execution_time: 1d depends_on: [] canonical_docs: - docs/tasks/Index.md - docs/tasks/_template.md related_files: - Assets/Scripts/WorldGen/InfiniteWorldGenerator.cs - Assets/Scripts/WorldGen/WorldAutotileProfile.cs - Assets/Scripts/Player/SimplePlayerInputMover.cs --- # TASK-0001 - Зафиксировать MVP-архитектуру диаблоида на FishNet ## Status Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там. Допустимые значения статуса: - `BackLog` - `ToDo` - `InProgress` - `Review` - `Done` ## Why Без общей архитектуры легко получить несовместимые решения между генерацией мира, сетевым кодом, сохранениями, персонажами, инвентарем и AI. Эта задача должна зафиксировать правила MVP до начала активной реализации. ## Expected Outcome Появляется документ или набор canonical notes, где определены: модель мира и игрока, границы ответственности сервера и клиента, правила детерминизма по seed, формат идентификаторов чанков и сущностей, а также зависимости между будущими системами. ## Current Context В проекте уже есть рабочий слой генерации мира в `Assets/Scripts/WorldGen/*`, но нет зафиксированной архитектуры под сетевую игру, классы персонажей, боевую систему и сохранения. ## Source Of Truth - `docs/tasks/Index.md` - код в `Assets/Scripts/WorldGen/*` - явные решения человека по MVP после создания этой задачи ## Read First - `docs/tasks/Index.md` - `Assets/Scripts/WorldGen/InfiniteWorldGenerator.cs` - `Assets/Scripts/WorldGen/WorldAutotileProfile.cs` - `Assets/Scripts/Player/SimplePlayerInputMover.cs` ## Scope In - зафиксировать high-level архитектуру MVP - описать authority model для FishNet - определить канонические идентификаторы игрока, мира, чанка, врага и предмета - определить границы между runtime world data, player save data и session state ## Scope Out - полноценная реализация подсистем - контентная балансировка ## Constraints - сохраняйте существующий worldgen как стартовую точку, если человек явно не меняет направление - предпочитайте минимальную архитектуру, достаточную для MVP - все последующие задачи должны опираться на решения из этой задачи ## If You Find Drift - если текущий код worldgen конфликтует с новой сетевой моделью, фиксируйте конфликт отдельно - не ломайте существующий editor tooling без отдельного решения ## Suggested Approach 1. Описать целевой gameplay loop MVP и обязательные подсистемы. 2. Зафиксировать границы server authority, client prediction и persistence. 3. Связать решения с конкретными task-файлами и артефактами кода. ## Acceptance Criteria - есть каноническое описание архитектуры MVP с понятными границами подсистем - определено, где живут данные мира, игрока, сессии и чанка - определено, какие части обязаны быть детерминированными по seed ## Verification - вычитка документа на непротиворечивость с `Index.md` - проверка, что все downstream task-файлы опираются на решения из этой задачи ## Risks / Open Questions - без раннего решения по authority возможно придется переписывать боевую систему и AI ## Human Decisions Needed - none currently ## Decision Log - `2026-03-30` - архитектурную задачу вынесли в отдельный highest-priority task перед реализацией сетевых и боевых систем. ## Handoff Notes После фиксации архитектуры обновить `canonical_docs` в downstream task-файлах, если появится новый канонический документ.