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