Могу ли я использовать HLAPI для сетей Unity без оплаты услуги Unity Multiplayer?
Я увидел сервисную страницу Unity Multiplayer и совершенно запутался:
Могу ли я использовать высокоуровневый сетевой API-интерфейс Unity (NetworkManager / NetworkManagerHUD) в опубликованной игре, не платя за Unity Matchmaker и серверы ретрансляции (какими бы они ни были)?
У меня есть собственная облачная виртуальная машина, на которой я хочу запустить выделенный сервер. Мой проект - просто маленькая игра, в которую я бы играл со своими друзьями (ничего коммерческого или масштабного). Я хочу запустить опубликованную копию этой игры в режиме выделенного сервера на моей виртуальной машине, и пусть мои друзья запустят свою опубликованную копию клиента и подключатся к серверу через NetworkManager.
Могу ли я сделать это бесплатно? Я не против того, чтобы мои друзья вручную вводили IP-адрес и порт сервера в своей копии игры, используя NetworkManagerHUD. Будут ли они считаться "CCU" (предел 20 для Unity Personal)? Будет ли это использовать пропускную способность Unity Matchmaker ($0,49 / ГБ, даже недоступно для Unity Personal)?
Любое разъяснение будет оценено!:)
1 ответ
Вы можете использовать Unity HLAPI
без оплаты. Только не используйте API создания матчей Unity, тогда вам не нужно будет ничего платить.
Вы можете заставить другого игрока напрямую подключаться к другому игроку, который не находится в той же локальной сети, но вам необходимо выполнить переадресацию портов на каждом компьютере. Игроки могут выполнять переадресацию портов через свои настройки маршрутизатора, но вы не хотите, чтобы ваш игрок проходил через это. Вы можете сделать переадресацию портов из сценария C#, но это сложно, если вы ничего не знаете о работе в сети. Есть много библиотек C#, которые могут сделать это так, что вам придется заново изобретать колесо.
Как только вы настроите переадресацию портов, вы сможете использовать стандартный API-интерфейс Unity для прямого подключения к другому проигрывателю в другой сети.
Если вы хотите пойти дальше, у вас может быть скрипт, который отправляет IP-адрес и номер порта проигрывателей на ваш сервер, чтобы игроки могли автоматически подключаться друг к другу без необходимости вручную вводить IP-адрес и номер порта. каждого компьютера.
РЕДАКТИРОВАТЬ:
API создания совпадений Unity = Все классы внутри UnityEngine.Networking.Match
, такие как NetworkMatch
API стандарта Unity = NetworkServer
а также NetworkClient
Вы не должны использовать NetworkManager
потому что большая часть его функции зависит от API создания соответствия Unity.
Чтобы создать сетевую игру без API-интерфейса для создания матчей Unity, вам просто нужно NetworkServer
и NetworkClient
учебный класс.
Чтобы создать сервер:
NetworkServer.Listen
Он перегружен такими методами, как
public static bool Listen(string ipAddress, int serverPort);
public static bool Listen(int serverPort);
Чтобы создать клиент (подключиться к серверу):
NetworkClient.Connect
public void Connect(string serverIp, int serverPort);
Вы потеряете такие функции, как создание и присоединение к играм, если вы не хотите использовать API для создания матчей в Unity. Вы можете использовать NetworkServer
и NetworkClient
Я упомянул выше, чтобы создать полную сетевую игру. Просто создайте сервер, подключитесь к нему и начните отправлять и получать информацию. Это того стоит, потому что когда сервер Unity выходит из строя или начинает работать медленно, ваша игра все равно будет работать в отличие от других.
ПРИМЕЧАНИЕ: Unity работает над приложением, которое позволяет вам размещать собственную игру. Этого еще нет, но когда они выпустят его, вы сможете разместить свою собственную игру без сервера Unity, запустив это приложение на своем сервере. Прямо сейчас они хотят, чтобы вы заплатили за использование некоторых из их кодов сети, но настоящие кодеры не должны будут этого делать.