-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
От Cawfee
1. Введение.
Всем читающим этот пост известна игра Grand Theft Auto. GTA San Andreas появилась в 2004 году. GTA Criminal Russia появилась пару лет спустя. Все мы играли сначала в одиночную игру, где кто-то проходил миссии, кто-то смеха ради убивал других людей. Временами проявлялся интерес поработать водителем скорой медицинской помощи, сотрудником правоохранительных органов, пожарным или обычным таксистом.
Вскоре вышел мультиплеер к данной игре. И именно тогда игра стала мультиплеерной (многопользовательской). Ровным счетом также мы заходили в игру, правда теперь через мультиплеер, и играли уже с другими людьми. А много ли кто из Вас задумывался насчет того, как устроена сама игра? Как происходит взаимодействие между игроками (почему мы видим перемещения и прочие действия других игроков)?
Взаимодействие игрока с сервером - основная составляющая любой многопользовательской игры. И суть этого самого взаимодействия во всех мультиплеерных играх одинакова. Также сегодня мы немного затронем всем известные термины, о значении которых навряд ли кто-либо задумывался, например, что такое пинг и лаги?
2. Пакеты данных.
Представьте себе хороший денек, в который у Вас предостаточно времени, чтобы поиграть в Grand Theft Auto по сети. Вы открываете мультиплеер. Выбираете интересующий Вас сервер. Игра уже начинает запускаться... Появляются логотипы... Загрузочный экран. И тут, когда появляется непосредственно строка с подключением к серверу, клиент отправляет первый пакет на сервер.
Вероятно всего, для многих из Вас пакет - новое слово. Важно понять его смысл, поскольку обращаться к нему мы будем довольно-таки часто. Пакет (пакет данных) - блок данных, содержащий в себе ряд запросов, которые следует применить к серверу или клиенту. С помощью пакетов и происходит взаимодействие игрока с сервера. Так, игрок посылает пакеты о том, что подключился к серверу, изменил свое местоположение (координаты, угол поворота головы), что отправил какое-либо сообщение в чат или вызвал какую-либо команду. Все эти действия и являются рядом запросов, которые и формируют пакет данных и, в данном случае, передают их на сервер. Затем сервер обрабатывает эти самые пакеты, "распаковывая" поочередно каждый запрос. Например, игрок изменяет свое местоположение. Клиент формирует пакет, указывая, кто изменил, с какой позиции на какую, и еще некоторые данные. Далее этот пакет уходит по соответствующим каналам на сервер. Сервер, в свою очередь, распаковывает пакеты. Обработав всю информацию из пакетов, он формирует новый пакет, который уже рассылает всем другим игрокам. Так, они тоже получают информацию о том, что кто-то изменил свое местоположение.
3. Параметр пинг.
Несомненно, время отправки этих пакетов - миллисекунды. Причем стоит понимать, что другие игроки получают обновленную информацию только после того, как клиент, который как-то "обновился", отправит пакет на сервер, сервер его обработает, создаст новый, и отправит уже новый пакет другим пользователям. Интервал времени между изменением состояния игрока и получением этого изменения другими пользователями называется пингом. Многие о нем слышали, многие в окне TAB наблюдали за своим пингом и при большом пинге замечали "подтормаживания". Теперь Вы понимаете, почему высокий пинг есть плохо? Ведь пинг - это лишь интервал времени. И чем больше интервал времени, тем реже Вы получаете какую-либо информацию о других игроках. Соответственно, и тем реже другие игроки получают информацию о Вас.
Рассмотрим анимированное изображение. Здесь мы видим, что пакет данных от клиента до сервера доходит за 10 миллисекунд. За такой же промежуток времени пакет данных доходит от сервера до клиента. Сумма этих интервалов времени и есть пинг. В данной ситуации он составляет 20 миллисекунд.
Иногда пинг бывает слишком высоким. Грубо говоря, который выглядит уже не как отрезок с началом и концом, а лучом - начало есть, а вот конца нет. Сейчас я рассматриваю ситуацию, когда по какой-либо причине связь между клиентом и сервером потеряна. Пакеты, не дошедшие до сервера (клиента), окажутся потерянными. А значит та информация, что должна была придти, не придет.
4. Параметр лаг.
Условия лагов - та самая ситуация, в которой пинг слишком велик. А значит время между отправкой и получения пакетов слишком большое. В таких условиях информация об изменениях "в игроке" обновляется у других не так часто, как должна. Так, если время между отправкой и получением пакетов составляет 5 секунд, то игрок, на стороне которого возникают проблемы, у других может появляться в разных концах комнаты, а отправленные им сообщения будут доходить не сразу (по мере отправки), а лишь каждые пять секунд (примерно). Так, мы будем наблюдать лишь конечное положение игрока, без промежуточных, то есть не увидим цепочку перемещений.
5. Причины лагов и высокого пинга.
(упрощенная схема маршрутизации. Несомненно, на практике она явно длиннее)
Маршрутизация. Пакет данных преодолевает большое расстояние, пока доходит до точки назначения — сервера (или клиента). Ведь провода интернета идут не напрямую к вашему компьютеру, а через множество промежуточных пунктов, которые расположены не только в вашем городе. И чем больше таких промежуточных пунктов и чем больше расстояние между клиентом и сервером, тем больше пинг. А значит и сильнее лаги. Потеря пакетов. К сожалению, нередкие ситуации, когда пакеты данных теряются. Это может быть связано с проблемами локальной сети, проблемами в сетевом интерфейсе или драйверами, проблемами в сетевом порте или кабеле и, наконец, перегрузкой сети, линий электропередач (ЛЭП), проблемы с прошивкой роутера или низкая пропускная способность канала.
В случае, если все проблемы в прошивке роутера, пробуйте ее обновлять. Пробуйте "стучать" своему интернет-провайдеру, чтобы специалисты разрешили ваши проблемы по данному вопросу (хотя никто не мешает отказаться от своего интернет-провайдера и перейти к другому). Либо же ждите, пока произойдет разгрузка сети (если, конечно, в ней источник проблем).
6. Лимит времени ответа.
Во всех многопользовательских online-игр есть некий лимит времени ответа. По большому счету это время, за которое должен поступить какой-нибудь пакет от клиента. Если же в течение этого времени не было получено ни одного пакета, теряется соединение между сервером и игроком. И тут, в случае с Grand Theft Auto, игрок видит строку в чате: «Подключение к серверу невозможно. Переподключение…».
Отдельные предложения и изображения были позаимствованы с различных интернет-ресурсов.
-
От 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Эта тема создана автоматически для возможности комментирования статьи GetVehiclePoolSize Автор статьи: GLADE
Статья опубликована: 17.05.2020 01:34
Просмотреть полную запись
-
-
-
От 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Эта тема создана автоматически для возможности комментирования статьи GetPlayerPoolSize Автор статьи: GLADE
Статья опубликована: 17.05.2020 01:32
Просмотреть полную запись
-