Существует несколько вариантов, которые можно использовать для достижения этой цели.
Децентрализованная
Вы можете рассылать запрос от вашего приложение, которое запрашивает все хосты в сети, доступны ли они в данный момент для игры (например, отправка запроса на 255.255.255.255
заставит ваш маршрутизатор повторно передать дейтаграммы, отправленные вами на каждый хост в локальной сети).
Это гарантирует, что только хосты, у которых запущена игра и которые готовы к игре, ответят на этот запрос.
В настоящее время в локальной сети активно используются несколько широковещательных протоколов. Одним из них является SSDP (простой протокол обнаружения служб), который используется с протоколом UPnP для обнаружения служб. . Однако, безусловно, есть более подходящие протоколы, используемые для широковещательной/многоадресной передачи для многопользовательских игр.
Централизованный
Одним из самых распространенных способов обнаружения игроков в многопользовательской игре остается наличие центрального сервера, на котором находятся как запрашивающие (люди, которые ищут игру), так и хостеры ( люди, которые проводят игру) подключены.
Недостаток этого метода состоит в том, что он имеет единую точку отказа, которой является сервер, но имеет преимущество, в отличие от децентрализованного решения, в том, что он подходит как для локальной сети, так и для Интернета (или любого протокола на основе IP).
Если бы мне пришлось разрабатывать многопользовательскую игру, я бы начал копать в отношении функции обнаружения хоста, которую вы должны реализовать.
person
Halim Qarroum
schedule
01.05.2013