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

В предыдущей части мы рассмотрели как сделать Network Lobby где люди находят друг друга )) Это не про Дом-2 :) Но иногда недостаточно сделать peer to peer соединение. Нужно чтобы игра была на сервере.

Делаем собственный dedicated сервер на windows

Если мы сделали все как нам рассказала прекрасная Penny de Byl (Она не комсомолка, просто профессор, но тоже прекрасная женщина, мать семерых детей, прорекламирую ее сайт, с прекрасным надо сказать дизайном holistic3d.com

О чем это я, то у нас есть скрипт LobbyMainMenu и там где-то вверху добавляем

using UnityEngine.Rendering;

В OnEnable() делаем проверку, которая запускает сервер.

if (IsHeadless()) {
  print("headless mode detected");
  OnClickDedicated();//Не стал переименовывать, итак понятно
}
//сама функция проверки
bool IsHeadless()
    {
        return SystemInfo.graphicsDeviceType == GraphicsDeviceType.Null;
    }

Запускаем сервер таким образом. Смотрим лог, если что-то пошло не так. Мануал на сайте юнити про запуск с параметрами

game_client.exe -batchmode -nographics -logFile c:\temp\unity.log

После этого берем game_client.exe еще пару раз запускаем уже без параметров, и убеждаемся что у нас люди ищут друг друга, и главное находят (блин одинокие сердца гыг).

Итак мы почти подошли к тому чтобы запустить нашу игру на реальном удаленном сервере.

Dedicated server на Linux

Нам нужен для этого сам сервер, у меня это виртуалка на CentOS7 купленная по стоимости семечек, шучу, за 250 рублей в месяц. (SimpleCloud)

И тада!!! сам билд для линукс. И тут нас ждет разочарование. Ибо нельзя взять и выбрать Target Platform: Linux, если вы работаете в Windows.

Тут у нас два пути.

  1. Установить Линукс и собрать билд на платформе Линукс.
  2. Собрать билд в Unity Developer Cloud (это мой путь, но вам нужна будет платная версия Unity)

Собрал я в итоге билд, и залил zip на сервер. Да прежде чем собрать билд для удаленного сервера, узнаем его IP адрес, и пропишем его в нашем билде где-то в недрах LobbyManager "123.123.123.123";

Запускаем на сервере

./game.x86_64 -batchmode -nographics -logFile /home/user/game/unity.log

И смотрим ошибки в реальном времени tail -f /home/user/game/unity.log

Теперь запускаем нашу игру на клиентах сразу несколько, и жмакаем в Lobby экране на Join (не лишним будет убедиться что IP адрес указан сервера, а не 127.0.0.1)

Если все хорошо - то статья написана не зря. Если нет - смотрим что написано в /home/user/game/unity.log и чиним побырому.

Всем удачи, держитесь там, наше дело правое!

P.S. Кому-то ведь еще понадобится Match Maker - я сейчас занимаюсь тем, чтобы понять, как это сделать. Обязательно вам напишу. Ciao!
Я пользовался информацией с сайта и сайта :)