--- id: TASK-0017 title: Добавить reconnect/resume после дисконнекта с сохранением позиции summary: Реализовать BackLog-задачу на восстановление игрока после дисконнекта с возвратом в мир и сохранением позиции, состояния и привязки к сессии. priority: Medium area: networking owner: unassigned created: 2026-03-30 updated: 2026-03-30 execution_time: 1d depends_on: - TASK-0002 - TASK-0004 - TASK-0013 canonical_docs: - docs/tasks/Index.md related_files: - Assets/Scenes/SampleScene.unity --- # TASK-0017 - Добавить reconnect/resume после дисконнекта с сохранением позиции ## Status Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там. Допустимые значения статуса: - `BackLog` - `ToDo` - `InProgress` - `Review` - `Done` ## Why Reconnect/resume нужен для более устойчивого кооператива, но не блокирует первый MVP. Поэтому задача вынесена в `BackLog`. ## Expected Outcome Игрок после дисконнекта может вернуться в ту же сессию и получить корректное восстановление позиции и session-relevant state без дублирования персонажа. ## Current Context Сначала должны появиться рабочие flow подключения, выбор мира и базовые сохранения игрока/мира. ## Source Of Truth - `docs/tasks/items/TASK-0002.md` - `docs/tasks/items/TASK-0004.md` - `docs/tasks/items/TASK-0013.md` ## Read First - `docs/tasks/items/TASK-0002.md` - `docs/tasks/items/TASK-0004.md` - `docs/tasks/items/TASK-0013.md` ## Scope In - reconnect flow после временного разрыва связи - сохранение и восстановление позиции персонажа - предотвращение duplicate player session - базовые timeout/resume rules ## Scope Out - полнофункциональный drop-in/drop-out service layer - миграция сессии между серверами ## Constraints - восстановление не должно ломать server authority - session resume должен уважать разделение player/world saves ## If You Find Drift - если базовый join flow не готов, задача остается в `BackLog` и не тянет за собой преждевременные костыли ## Suggested Approach 1. Определить session resume token или эквивалентный идентификатор возврата. 2. Описать правила сохранения позиции и временного session state. 3. Реализовать безопасный reconnect без дублей персонажа. ## Acceptance Criteria - игрок может переподключиться после дисконнекта и продолжить с близкой сохраненной позиции - в мире не остается дублированных экземпляров персонажа - reconnect flow не ломает существующий lobby/world selection pipeline ## Verification - ручной сценарий: подключиться, сместиться, разорвать связь, переподключиться, проверить resume ## Risks / Open Questions - нужно определить, хранится ли позиция resume в player save, world session state или в отдельном session cache ## Human Decisions Needed - none currently ## Decision Log - `2026-03-30` - задача добавлена в `BackLog` по явному запросу пользователя. ## Handoff Notes Не поднимать приоритет до готовности базового сетевого flow и persistence layer.