Реализация лобби в Unity
Введение
В этой статье разберём, как сделать лобби в Unity на трёх популярных сетевых фреймворках: Photon PUN 2, Mirror и Unity Netcode for GameObjects (Netcode for GO)
Из чего состоит лобби
Чтобы сделать лобби, понадобятся:
Подключение к серверу
Список доступных комнат (если фреймворк поддерживает)
Возможность создания и входа в комнату
Отображение подключённых игроков
Кнопку запуска игры
Важно: все изменения должны быть моментально синхронизированы между клиентами.
Наиболее популярные фреймворки
1. Photon PUN 2
Плюсы:
- Простота интеграции
- Встроенная поддержка лобби
- Облачные серверы
Минусы:
- Ограничения бесплатной версии
- Зависимость от облака
2. Mirror
Плюсы:
- Открытый исходный код
- Поддержка собственных серверов
- Гибкость
Минусы:
- Отсутствие встроенного списка комнат
- Необходима собственная реализация лобби
3. Unity Netcode (GO)
Плюсы:
- Нативная интеграция с Unity
- Поддержка ECS и Unity Relay
Минусы:
- Высокий порог входа
- Объём шаблонного кода
- Скудная документация
Photon PUN 2 — Простое подключение через облако
Подключение и создание комнаты
Отображение списка комнат
Вход в комнату и запуск сцены
Mirror — Контроль и гибкость
Создание хоста и клиента
Отображение списка игроков
Запуск игры хостом
Unity Netcode for GO — Инструмент от Unity
Запуск хоста или клиента
Передача данных игроков
Запуск сцены с сервера
Реализация
Создайте сцену "LobbyScene" с интерфейсом: кнопка создания комнаты, список игроков, кнопка запуска
Передавайте имя игрока через CustomProperties (Photon), SyncVar (Mirror) или NetworkVariable (Netcode)
Реализуйте доступ к кнопке запуска только для хоста
Сохраняйте данные о подключённых игроках в отдельном компоненте Player или PlayerData
Рекомендации
Photon: оптимален для новичков и мобильных проектов
Mirror: подойдёт для проектов с собственным сервером и требованиями к расширяемости
Netcode: для тех, кто работает в экосистеме Unity и использует Relay или Multiplay
"Лучше всем вместе, чем вдвоём. Поэтому я и создала свой квест"