--- 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 как канонический сценарий подключения.