@Antikiller94

Какую технологию использует Steam для создания игроками серверов?

Например, у игрока нет статического IP, да и вообще выходит он в Интернет через роутер, порты у него в роутере не проброшены. Каким образом Steam позволяет ему в игре создать сервер так, чтобы он был виден другим пользователям Steam в Интернете? Ощущение, что Steam использует что-то наподобие ячеистого VPN.
  • Вопрос задан
  • 532 просмотра
Пригласить эксперта
Ответы на вопрос 3
dollar
@dollar
Делай добро и бросай его в воду.
Каждая игра в праве выбирать какие-то отдельные возможности Steam для создания серверов, либо обходиться без них.

Таким образом, это не одна технология, а комплекс технологий (либо одна сложная, как вам нравится).
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Разработка игр
software engineer
Стим может просто пробрасывать игроков на ваш коннект.

Вы подключаетесь к Стим с серого адреса. Используется NAT - то есть на роутере, у которого есть белый IP, открывается наружу порт, через который пакеты транслируются на вашу машину.
Этот адрес/порт известен Стиму, он перекидывает игроков на него.

Конкретная реализация зависит от конкретной игры.
Ответ написан
Комментировать
@MarkusD
все время мелю чепуху :)
Steamworks API предлагает специальный слой абстракции сети - Steam Networking.
В рамках этого слоя соединение устанавливается между конкретными пользователями по их Steam идентификаторам. Тип соединения между пользователями зависит от конкретных настроек сети. При соединении в открытой сети или в присутствии несимметричного NAT соединение между хостами пользователей будет установлено напрямую. В случае присутствия симметричного NAT соединение будет установлено через специальный Relay-сервер. Steam берет на себя всю рутину с определением типа сети, выбором типа соединения и с его поддержкой во время сеанса игры.

Сама техника определения соединения и установки подключения является широко известной и общепринятой. Это - NAT Punchtrough. Описывать технологию в ответе бессмысленно, т.к. в сети по этому названию есть очень много документов [1][2][3][4].
Для определения типа сети у Steam есть набор региональных STUN-серверов, а так же набор Relay-серверов, выступающих посредниками при соединении в присутствии симметричного NAT.

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

Войдите, чтобы написать ответ

Похожие вопросы