January 6, 2022

О коннекте в гонках

30
avatar
newbie
1 0

Игровой сервер NFS Underground - это программа обеспечивающая только взаимодействие игроков при входе на сервер. 


Там обрабатываются разные события: создание аккаунта, создание username (ник), выбор и вход в комнаты, сообщения в игровом чате, создание и рассылка другим игрокам созданных заездов и много другого. Такие события формирует сама игра (speed.exe), когда ты жмешь тот или иной пункт в меню игры.


Когда происходит старт заезда, посылается особый пакет данных всем участникам заезда. 


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


Основная часть закончена.


Если интересно, можешь почитать дальше. Постараюсь объяснить что происходит на самом деле с коннектом. Будет много слов, так что если это напряжно, можешь пропустить, но комментарии приветствуются.


Игра вышла в 2003 году.  И в  2004 - 2006 был ее расцвет. В игровую комнату поначалу невозможно было войти. В серверных комнатах было ограничение 50 персон. В кастомных комнатах 25.


А какой был интернет в то время? А был dial-up. А на западе у богатых был ADSL. 


В то время разработчики игры (EA Black Box) не могли предвидеть какое развитие получат интернет технологии. И для связи игроков в ЗАЕЗДЕ был использован механизм peer-to-peer. Это, к примеру, потом и сейчас используется в торрентах. 


Что же происходит при старте заезда? Как я понимаю, что запрограммировали разработчики, происходит так. Создатель заезда становится хостом гонки. Далее связь происходит ЧЕРЕЗ ЕГО КОМПЬЮТЕР. Хост должен установить соединение peer-to-peer с каждым участником заезда (т.е. определить его IP в сети). Если с кем-то не получилось, тот выбывает. Далее во время заезда, с частотой несколько раз в секунду, каждый участник заезда (вернее сказать speed.exe) посылает коротенький пакет данных о положении своей машины на трассе хосту, а хост передает остальным. Так получается видимость реального заезда, и все счастливы.


Тут надо отметить такой вопрос как лаги. Как я говорил ранее, основное средство связи было dial-up. Это в идеале 56 Кбит/с. В принципе для игры это может быть нормально. Но если участники заезда находятся на разных континентах,  то пакеты проходят через множество маршрутизаторов сети интернет, скорость обмена сильно замедляется, и возникают лаги. 


Как разработчики решили эту проблему? Да собственно никак! Зная о таком недостатке, они сделали на официальном сервере сразу несколько комнат, охватывающих все регионы мира. По названиям комнат игрок должен был, по идее, выбрать ту, что ближе к его региону. Щас я уже не помню названий всех комнат. Их можно найти в одном видео MASTERRX7. В общем суть должна быть понятна. Там были все континенты. И если игрок участвовал в заезде, где все были из одного региона, то заезд проходил гладко, без особых лагов.


Теперь возвратимся к современности. Я попробую объяснить как работают  некоторые ушлые провайдеры интернет сейчас.


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


В моем подъезде 20 квартир. В каждой свой роутер. Гипотетически, я могу обойти все квартиры, и спросить, сколько стоит интернет. Скажут, к примеру, где-то 15-20$ в месяц. У меня жирный канал, к примеру 100/50 Mb/c. Я предложу, давайте по 10$ и отказывайтесь от провайдера. Далее, я покупаю недорогой маршрутизатор на 24 порта, провожу UTP в каждую квартиру, и раздаю свой канал на всех. Некоторые попросят wifi. Без проблем, я вам продам еще wifi роутер за 20$.Там еще и 4 порта для UTP. Сможете и стационарные компьютеры подключить, а wifi для ноутбуков и смартфонов будет. В моем доме шесть подъездов. Тоже по  20 квартир. Еще немного оборудования и.... ну вы поняли. Это я к тому, что был один роутер с прямым выходом в интернет, а стало как минимум три. А при игре в NFS Underground каждый такой узел - место потенциальной (и даже вероятной) потери связи именно в заезде. Ну не использует (а скорее всего просто не умеет) NFS  Underground те протоколы, которые позволили бы передавать оригинальный IP адрес компьютера с игрой.


Возвращаясь к связи с интернетом в нулевых. Так вот dial-up и ADSL, как правило, имели в то время прямой доступ в интернет. Без всякой излишней маршрутизации. Поэтому связь была хоть и медленная, но стабильная. 


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

10800 tcp/udp

10900 tcp

10901 tcp

10980 tcp

3658, 3659 udp


Если нет ни того ни другого, то видимо заезд в NFS Underground не получится.


Очень хороший вариант - эту купить статический IP. У нас в Беларуси это стоит недорого, где-то разово 7$, потом 1,5$ в месяц.


Есть еще и мобильный интернет. Но про него я не могу сказать ничего определенного. У каждого оператора свои параметры выхода в интернет. Методом проб и ошибок нужно определять подходит он или нет.


Кто осилил, спасибо за внимание. Cтавьте лайки или дизлайки и оставляйте комментарии.


2 comments
Log in to discuss this news
avatar

Snake 2 weeks ago

есть еще провайдеры без NAT, но их все меньше

0 0
avatar

newbie 2 weeks ago

Конечно есть. Вопрос, я полагаю, в цене. Хотя если разница небольшая, то я бы выбрал подороже, но понадежнее. Cтатический IP - отличный вариант. Его ведь можно не только для гонок использовать.

0 0