- PVSM.RU - https://www.pvsm.ru -

Разработчики теперь могут использовать сетевой API Valve для своих игр в Steam

Последние несколько лет Valve работали над улучшением качества мультиплеера в Dota 2 и CS:GO при помощи ретрансляции трафика и его переноса на свою сетевую магистраль. Это позволяет защищать игры от DoS-атак, понижает пинг и повышает качество соединения. В SDK Steamworks версии 1.44 Valve выкатили новый API [1], предоставляющее доступ к этой службе всем партнёрам Steam.

Разработчики теперь могут использовать сетевой API Valve для своих игр в Steam - 1

Valve опубликовали специальный пост [2]. API включает в себя:

  • Доступ к сети Valve, что позволяет защитить игроков от атак, предоставляет надёжное стопроцентное прохождение NAT и улучшенное соединение.
  • Инструменты для мгновенной оценки пинга между двумя произвольными узлами без отправки пакетов.
  • Высококачественное соединение по надёжному UDP-протоколу со сквозным шифрованием.

Доступ к сети Valve

У Valve имеются узлы ретрансляции, развёрнутые в 30 сетевых точках подключения по всему миру с пропускной способности несколько терабит. Можно выделить, как минимум, несколько преимуществ сети.

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

Во-вторых, клиенты смогут выбирать маршрут, как можно скорее переводящий их с общедоступного интернет-соединения на выделенные. На своей сетевой магистрали Valve гарантирует оптимальную маршрутизацию, так как они сотрудничают с более чем 2500 интернет-провайдерами. Кроме того, чувствительный к задержкам игровой трафик имеет приоритет над загрузками контента по HTTP. Это возможно, поскольку доля игрового трафика в используемой пропускной способности относительно невелика. На сетевой магистрали внезапный всплеск трафика, не относящегося к играм, не повлияет на качество игры.

Вишенкой на торте является уменьшение пинга! Протокол Valve даёт клиенту возможность выбрать маршрут, по которому будут рутиться запросы. Клиент учитывает каждую точку подключения ретрансляции, определяет сквозную задержку на маршруте и затем выбирает маршрут с наименьшей задержкой.

Если разрешить клиентам выбирать маршрут, их соединение будет лучше дефолтного на удивление часто. Проанализировав 16 млн. подключений уникальных клиентских IP-адресов к выделенным серверам в центрах обработки данных Valve, они получили следующие результаты:

  • Время пинга уменьшилось у 43% игроков.
  • У 25% игроков время пинга уменьшилось на 10 и более мс.
  • У 10% игроков время пинга уменьшилось на 40 и более мс.

Объём улучшений по регионам различается.

Разработчики теперь могут использовать сетевой API Valve для своих игр в Steam - 2

Инструменты оценки пинга

Функции интерфейса ISteamNetworkingUtils [3] включают инструменты для оценки пинга, основанные на сети ретрансляции. Измеряя время пинга до разных узлов ретрансляции, мы генерируем координаты, описывающие расположение хоста в интернете. С помощью двух таких наборов координат Valve может весьма точно оценить время пинга между двумя произвольными узлами без отправки пакетов. Эта функция чрезвычайно полезна при подборе игр и выборе узла одноранговой сети.

Сквозной протокол с открытым исходным кодом

SteamNetworkingSockets не только предоставляет доступ к функциям на основе сети ретрансляции Valve и к сетевой магистрали для партнёров Steam, но и является универсальной транспортной библиотекой для игр, предлагая следующие возможности:

  • Фрагментация, сборка и ретрансляция. В своём коде вы отправляете и получаете сообщения, которые могут быть меньше или больше сетевых пакетов. Для повышения эффективности протокол объединяет несколько небольших сообщений в один пакет, разбивает большие сообщения на несколько пакетов, собирает их на принимающей стороне и повторно передаёт сегменты надёжных сообщений, утерянных из-за потери пакетов.
  • Шифрование и аутентификация. Безопасность — это не второстепенная задача для современной сетевой игры: уязвимость может испортить впечатление от игры. Надлежащее шифрование — действительно сложная задача. Valve руководствовались современными стандартами для надёжных трансляций и применили их к ненадёжным сообщениям, используемым играми. Встроенное шифрование по умолчанию защищает данные от перехвата. Защита от атак с перехватом требует, чтобы доступ к сертификату или общему секрету выдавал доверенный сторонний участник. Steam является таковым для своих игр: чтобы злоумышленник мог перехватывать или видоизменять пакеты, он должен находиться внутри игрового процесса, где его обнаружит система VAC.
  • Базовые функции этого API также доступны в версии с открытым исходным кодом [4]. Valve хочет, чтобы разработчики в полной мере пользовались преимуществами API [5], и это было бы невозможно без уверенности в том, что доступ к исходному коду бесплатен.

Это ещё не всё

Это первое из серии обновлений, направленных на улучшение работы игр по сети для партнёров Steam. Пока что Valve только улучшили работу одноранговых сетей, но помимо этого они планируют дать партнёрам доступ к наработкам, использующимся для их выделенных серверов.

Автор: Suvitruf

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/gamedev/311644

Ссылки в тексте:

[1] Valve выкатили новый API: https://partner.steamgames.com/doc/api/ISteamNetworkingSockets

[2] специальный пост: https://steamcommunity.com/groups/steamworks#announcements/detail/1791775741704351698

[3] ISteamNetworkingUtils: https://partner.steamgames.com/doc/api/ISteamNetworkingUtils

[4] версии с открытым исходным кодом: https://github.com/ValveSoftware/GameNetworkingSockets

[5] API: https://suvitruf.ru/2019/03/14/4372/steam_devs_can_now_use_the_networking_apis_created_for_csgo_and_dota_2/

[6] Источник: https://habr.com/ru/post/443782/?utm_campaign=443782