Files
TheDeclineOfWarriors/docs/tasks/items/TASK-0002.md
T

109 lines
4.1 KiB
Markdown

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