Могу ли я использовать HLAPI сети Unity без оплаты услуг Unity Multiplayer?

Я увидел Unity страницу многопользовательской службы, и я полностью смущен:

Могу ли я использовать Unity high-level network API (NetworkManager/NetworkManagerHUD) в опубликованной игре, не заплатив за Unity Matchmaker и серверы ретрансляции ( что бы это ни было)?

У меня есть собственная облачная виртуальная машина, на которой я хочу запустить выделенный сервер. Мой проект - это небольшая игра, в которую я бы играл с друзьями (ничего коммерческого или крупномасштабного). Я хочу запустить опубликованную копию этой игры в режиме выделенного сервера на моей виртуальной машине и заставить моих друзей запускать опубликованную клиентскую копию и подключиться к серверу через NetworkManager.

Могу ли я сделать это бесплатно? Я не возражаю, если мои друзья должны вручную ввести IP-адрес и порт сервера в своей копии игры, используя NetworkManagerHUD. Будут ли они считать "CCU" (лимит 20 для Unity Personal)? Будет ли это использовать пропускную способность Unity Matchmaker ($ 0,49/ГБ, даже не доступную для Unity Personal)?

Любые разъяснения будут оценены!:)

Ответ 1

Вы можете использовать Unity HLAPI без оплаты. Просто не используйте API соответствия Unity, тогда вам не нужно ничего оплачивать.

Вы можете заставить другого игрока напрямую подключиться к другому игроку, который находится не в той же локальной сети, но вам нужно выполнить переадресацию портов на каждом компьютере. Игроки могут выполнять переадресацию портов через настройки своего маршрутизатора, но вы не хотите, чтобы ваш проигрыватель прошел через это. Вы можете выполнять переадресацию портов с С# script, но это сложно, если вы ничего не знаете о сети. Существует много библиотек С#, которые могут сделать это, чтобы вы снова изобрели колесо.

После того, как вы выполните операцию перенаправления портов, вы можете затем использовать стандартный Unity standard API для прямого подключения к другому игроку в другой сети.

Если вы хотите сделать это дальше, вы можете иметь script, который отправляет IP-адрес и номер порта игроков на ваш сервер, чтобы игроки могли автоматически подключаться друг к другу без необходимости вручную вводить IP-адрес Адрес и номер порта каждого компьютера.

ИЗМЕНИТЬ:

API-интерфейс создания соответствия Unity= все классы внутри UnityEngine.Networking.Match, такие как NetworkMatch

Стандарт API Unity= NetworkServer и NetworkClient

Вы не должны использовать NetworkManager, потому что большая часть его функции зависит от соответствия Unity, создающего API.

Чтобы создать сетевую игру, свободную от 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 Server, запустив это приложение на своем сервере. Прямо сейчас, они хотят, чтобы вы заплатили за использование некоторых своих сетевых кодов, но настоящие кодеры не должны этого делать.