Разработка мультиплеерной игры для Unity ч4.

Привет всем, я не планировал 4 части, но как говорится, на деда мороза надейся, а сам не плошай.

Ситуация такая, в Unity есть сервис Unity Networking. Сервис отличный, позволяет вам сделать многопользовательскую игру буквально мышкой. Так же есть Asset который позволяет вам делать комнаты, и запускать многопользовательскую игру из этих комнат.

Но есть один недостаток. Один из компьютеров в сети является сервером, а остальные через Unity Networking к нему подключаются, для динамичных игр это не подходит, а так же для игр с какой-то развитой логикой.

Нужен отдельный сервер который реализует игру и к которому подключаются игроки.

Представляю вам отличнейший Asset: Master Server Framework даже дам на него ссылку, чтобы не путаться.

Что это такое. Это инструмент для создания бизнес логики многопользовательской игры. Лобби, запуск игр, контроль.

Состоит из трех частей, Master Server, Spawn Server и Game Server. Игрок запускает у себя на компьютере игровой клиент, он подключается к Master Server, который позволяет игроку создать комнату или выбрать ранее созданную другим игроком. Игровая комната это Game Server. Spawner сервер создает копии Game Server когда игрок создает комнату, и удаляет, когда все игроки покинули комнату.

Ниже иллюстрация с сайта разработчика.

Картинка с сайта разработчика ассета

Значит итак у вас есть игра, которую вы сделали исходя из моих предыдущих статей. Все что вам нужно, скачать это ассет, и например вам подходит кейс - онлайн шутер в комнатах по 4 человека.

Берем из папки RoomsDemo сцены и разбираемся как они все работают. Надеюсь это вы сами посмотрите. Сейчас я скажу как добавить быстро в эту демку вашу сцену созданную с помощью предыдущих статей.

Видим одна сцена уже добавлена Demo-GameRoom, добавляем нашу сцену multiplayer1

Запускаем и видим что она появилась в лобби.

Она несомненно запустится, но будет работать неправильно. Нужно еще скопировать в нашу сцену объект Msf

У меня все заработало в Windows на локальной машине. Все заработало на моем виртуальном сервере Linux CentOS7, пришлось прописать IP адреса.

На этом я заканчиваю повествование о создании многопользовательской игры. Я на это потратил несколько дней жизни. У вас же есть возможность не тратить :)

Честно говоря я бы потратил меньше, если бы в комьюнити Unity было меньше Youtube уроков, и больше статей с иллюстрациями, и общим смыслом что делать, в каком направлении развиваться. Сам себя бы я читал с удовольствием.

Если вы прочитали до этого места - вы монстр! Я отдаю себе отчет что я веду этот блог больше для себя, но мне приятно что кому-то я помог.

Одна из моих дальнейших идей - это создание простых Dedicated серверов с веб интерфейсом, чтобы простой программист на юнити мог не заморачиваясь залить свой Unity проект на сервер, не разбираясь в тонкостях Linux, и прочих сетевых и админских историй.