🔥 Мультиплеер!
Не стал долго тянуть с этой темой и решил сразу внедрить его в новую часть (ранее планировал добавлять позже, уже после релиза).
👍 Решил делать всё сразу, так как архитектура игры поменялась на систему вселенных, из-за чего приходится переписывать большую часть кода. Поэтому проще на этом этапе внедрить работу с сетью, чем переписывать код ещё раз в будущем.
Сетевые решения
Для мультиплеера выбрал PurrNet — у него есть всё, что мне нужно. Среди других решений (FishNet, Mirror, Netcode) у него лучшая производительность.
Из минусов — пока очень мало документации, но спасает то, что я уже работал с FishNet и база у меня есть, так что разобраться несложно.
Также интегрировал VContainer в PurrNet, чтобы при создании сетевых объектов в них автоматически внедрялись зависимости.
Режимы работы
Планирую сделать 3 режима:
✔️ Локальный (по сути режим хоста с local transport) — для одиночной игры
✔️ Онлайн с хостом — вытекает из локального режима. Игрок может выступать сервером и дать возможность друзьям подключаться к нему, чтобы вместе бегать по своему миру
✔️ Онлайн с выделенным сервером — игрок подключается к заранее созданному серверу разработчика и может играть с любыми другими игроками
Архитектура
Так как есть 3 режима работы, из них вытекают 2 версии приложения:
✔️ Клиент + сервер — для запуска хост- и клиентского режимов
✔️ Сервер — для режима выделенного сервера
Для этого я сделал 2 входные сцены: Client Bootstrap и Server Bootstrap, а также кастомный инструмент сборки.
В первом варианте собирается билд клиента (WebGL, Android и т.д.) со стартовой сценой Client Bootstrap,
во втором — билд для Dedicated Linux Server со стартовой сценой Server Bootstrap.
⚡️ Это даёт полный контроль над флоу: что нужно загружать, а что нет. Например, на выделенном сервере не нужны клиентские зависимости (меню, аналитика, SDK площадок и т.д.).
При старте выделенного сервера сразу создаётся нужная вселенная, после чего запускается сцена с ней — и далее клиенты могут к ней подключаться.
P.S.
💭 Пишите в комментариях, интересна ли вам тема мультиплеера и стоит ли подробнее рассказывать про архитектуру и подходы, которые я использую при разработке
Post #839
1.38K

- 🔥 37
- ❤ 4
- 🥰 2
- 👍 1