---
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/Features/VoxelWorld/Scenes/VoxelWorldTestScene.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.
