---
id: TASK-0002
title: Реализовать сетевой bootstrap, лобби и выбор мира
summary: Поднять базовую сетевую инфраструктуру FishNet для хоста и клиента, лобби, выбора мира и подготовки игрока к входу в сессию.
priority: Highest
area: networking
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/Scenes/VoxelWorldTestScene.unity
---

# TASK-0002 - Реализовать сетевой bootstrap, лобби и выбор мира

## Status

Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.

Допустимые значения статуса:

- `BackLog`
- `ToDo`
- `InProgress`
- `Review`
- `Done`

## Why

Без минимального сетевого bootstrap нельзя проверить ни совместную генерацию мира, ни синхронизацию персонажей, ни join flow из меню.

## Expected Outcome

Игрок может запустить host/server, подключиться клиентом в лобби, выбрать мир и перейти в игровую сессию через FishNet по фиксированному сценарию подключения.

## Current Context

В проекте уже есть каноническая voxel-сцена и runtime worldgen, но сетевой bootstrap и lobby flow еще не оформлены.

## Source Of Truth

- `docs/tasks/Index.md`
- решения из `TASK-0001`
- реальный runtime-код FishNet после внедрения

## Read First

- `docs/tasks/items/TASK-0001.md`
- `Assets/Features/VoxelWorld/Scenes/VoxelWorldTestScene.unity`

## Scope In

- интеграция базового startup flow FishNet
- host/client connect flow
- переход через лобби к выбору мира
- серверное создание player session после выбора мира

## Scope Out

- reconnect/resume после дисконнекта
- матчмейкинг, dedicated fleet и внешний backend

## Constraints

- сервер должен быть источником истины для подключения к миру
- flow должен быть совместим с моделью Terraria-style: любой персонаж может зайти в любой мир

## If You Find Drift

- если текущая voxel-сцена мешает lobby/world selection flow, зафиксируйте это и вынесите сценовую декомпозицию в подзадачи реализации

## Suggested Approach

1. Внедрить FishNet и описать базовый boot pipeline.
2. Сделать простое лобби с переходом к выбору мира.
3. Добавить создание сетевой player session и вход в выбранную world session.

## Acceptance Criteria

- host может поднять сессию и принять клиента
- клиент может выбрать мир и корректно появиться в нем
- сетевой flow не привязывает персонажа к одному сохранению мира

## Verification

- ручная проверка host/client connect flow
- проверка, что выбранный мир доступен в runtime join pipeline

## Risks / Open Questions

- потребуется раннее решение, использовать ли single-scene или multi-scene world session flow

## Human Decisions Needed

- none currently

## Decision Log

- `2026-03-30` - лобби и выбор мира зафиксированы как часть сетевого bootstrap, а не отдельный поздний UI task.

## Handoff Notes

Дальнейшие UI-задачи должны использовать этот network flow как канонический сценарий подключения.
