Один из основных способов решения проблем с вашей стороны заключается в том, чтобы сбросить/установить более старую версию драйвера сетевой карты( в моем случае это realtek gaming gbe family controller). По какой-то неведомой причине более новые драйвера(22-23 год) отказываются нормально работать и именно из-за них (в моем случае) возникали пакет лоссы во всех играх и на ресурсах.
Для того, чтобы найти свою сетевую карту необходимо зайти в диспетчер устройств, далее тыкнуть сетевые адаптеры и выбрать свою сетевую карту.
После, необходимо тыкнуть по сетевой карте пкм – свойства – драйвер. Нужно посмотреть дату выпуска драйвера и если там 22 год, то с наибольшей вероятностью именно в нем заключается проблема. Ищем в гугле драйвера 19-20 года на вашу карту и устанавливаем их.
Если вы не хотите долго искать и скачивать с сомнительных ресурсов, то я залил на гугл диск[drive.google.com] файл, который вам необходимо кинуть с заменой по пути C:WindowsSystem32drivers.
UPD: После пару дней тестов оказалось, что установка драйвера путем замены файла слетает, если у вас возобновятся потери пакетов, то вот тут[driver.ru] можно скачать установщик, так же переходим в диспетчер устр-в и выбираем “обновить драйвер”, после чего из архива распаковываем три фала из пути win10/64 и выбираем их, должно помочь.
Тестим в игре, если пакет лоссы продолжаются тут могут быть пару вариантов(если конечно вы до этого проверили провод, роутер):
1. Ваш провайдер ахуел и плохо настроил вам маршруты до серверов, фиксится обращением в поддержку. Т.к изначально вас кинет на обычного саппорта, который ничем вам не поможет, а только задаст миллиард шаблонных вопросов пишем “Добрый день, наблюдается потеря пакетов в играх, переведите пожалуйста на технического специалиста для решения проблемы”. Далее вам стоит просто следовать указаниям саппорта и выполнить трассеровку. Так же, вы можете облегчить жизнь всем и перед обращением сделать трассеровку до сервака апекса. Как узнать IP сервера и что там вообще для этого нужно можно глянуть тут – https://youtu.be/wdTTsgDQSDY Советую пользоваться прогой WInMTR для трассеровки, как ею пользоваться тоже можете найти в гугле. После чего результат кинуть файлом саппорту.(если все очень непонятно с трассеровкой и висит пожизненный бан в гугле – могу дополнить руководство)
2. Несмотря на то, что вы установили более стабильные драйвера это вам может не помочь. Тут необходимо методом тыка смотреть и тестить.
1)Пытаемся сбросить драйвера до заводских, кнопка находится в том же разделе, где драйвера и смотрятся.
2) Удаляем сетевую карту из диспетчера устройств и перезагружаем комп. Это должно произвести полную перенастройку сетевой карты и возможно решит вашу проблему.
3) В настройках сетевой карты отключаем все функции связанные с энергосбережением (“позволять windows отключать это устройство для энергосбережения..”)
3. Не смотря на проверку банальных вещей по типу провода и роутера, ошибка где-то на вашей стороне. Понять это можно, если при трассеровке у вас в первом же айпи(данные, которые идут от вас до роутера/щитка) идут потери пактов. Тут необходимо так же методом тыка смотреть и тестить. Попробуйте заменить кабель от роутера к компу, поменять сетевую карту или же роутер. Ошибка может быть где угодно, на крайний, можно сбросить абсолютно все, винду и настройки роутера. Если же и это вам не помогло, то я хз, что может.
Лаги, джиттер и потеря пакетов: откуда берутся проблемы с неткодом и как их решать
Время на прочтение
11 мин
Количество просмотров 44K
Если вы когда-либо играли в онлайн-игры, то наверняка знаете о лагах не понаслышке. Пропущенный выстрел, который должен был попасть в цель; мяч, резко меняющий направление прямо в воздухе; вы вдруг снова оказываетесь на несколько шагов назад в том месте, где находились секундой ранее. В этом нет ничего сверхъестественного: это обычные артефакты систем, обеспечивающих совместную игру с людьми из других стран почти так же эффективно, как и с соседом по комнате. По крайней мере, большую часть времени.
В этой статье речь пойдет о самых базовых вещах, почему вообще возникает сетевая задержка, с какими еще проблемами неткода можно столкнуться, а также с тем, что можно сделать со своей стороны, чтобы улучшить ситуацию. Также разберем остальную часть конвейера между ПК и игровым сервером, который может повлиять на получение лучшего игрового опыта без задержек и прочих неприятностей.
Итак, почему вообще возникают лаги? Почему в 2021 году это все еще является проблемой — с мощностью современных компьютеров, повсеместным использованием широкополосного Интернета и спустя десятилетия попыток разработчиков решить эту проблему?
С точки зрения разработчиков, реализация даже базового мультиплеерного режима — задача непростая. Необходимо получать данные от множества игроков одновременно, неоднократно — тысячи раз в секунду — передавать эту информацию на некий центральный сервер, а затем возвращать обработанный результат на ПК каждого игрока.
Состояние игры должно быть идеально синхронизировано с минимальной задержкой независимо от того, имеете ли вы дело с игроками в одной локальной сети или с разных континентов. Поэтому вам придется придумать способ компенсации задержки игроков. При этом лучше избегать необходимости ожидания игроками, пока сервер сообщит им результаты их же собственных действий, ведь динамике это на пользу не пойдет. Для этого вам, вероятно, потребуется показать эффекты ввода каждого игрока сразу же, а затем уже сглаживать любые различия между ПК игрока и сервером таким образом, чтобы это было внешне неочевидно.
Мы не можем знать, что делают другие игроки, пока сервер не сообщит нам об этом. Поэтому мы вынуждены отображать действия других игроков в матче такими, какими они были в прошлом. Также достаточно большую проблему может составить читерство, поэтому необходимо убедиться, что игроки имеют ограниченный доступ к данным с сервера, не позволяющий компьютеру игрока принимать решения о том, что на самом деле произошло в игре — например, насколько успешен был выстрел или какое количество здоровья осталось у игрока.
С двумя-то игроками это реализовать достаточно сложно, а теперь представьте, каково организовать подобное для игры с 10, 20 или даже сотнями игроков на одном сервере. При разработке игры жанра battle royale со всеми ее особенностями реализация хорошего мультиплеера является одной из самых сложных частей разработки даже для опытной команды, поэтому неудивительно, что временами в игре могут возникать сетевые проблемы. Конечно, это не делает такие сбои менее раздражающими, и чем быстрее скорость и выше конкуренция в игре, тем больше такой опыт может помешать вам получить от нее удовольствие.
Помимо лагов и сбоев, могут возникнуть и другие проблемы с сетью: rubber banding, когда игровой мир возвращает вас туда, где вы были несколько секунд назад; получение урона сразу после того, как вы оказались за укрытием; промахи ваших собственных выстрелов, а то и вовсе потеря связи с игрой.
Так что же вызывает все эти проблемы?
Обычно в играх можно столкнуться с тремя сетевыми явлениями, каждое из которых по-разному влияет на пакеты данных с вашими вводами и игровые состояния, которые передаются между вашим компьютером и сервером.
Первое из них — задержка. Она возникает тогда, когда пакеты с данными слишком долго передаются серверу и затем возвращаются к игроку. Проще говоря, задержка — это скорость реакции вашего интернет-соединения, то есть время, необходимое для передачи данных с вашего устройства на сервер. Важно отметить, что задержка зависит от качества вашего интернет-соединения, а не от скорости.
Часто задержку путают с лагами, и хотя они не означают одно и то же, но имеют причинно-следственную связь. Лаг — это задержка прибытия пакета от источника к месту назначения или, с точки зрения геймплея, задержка между нажатием кнопки и ответом игры, выведенным на экран. То есть, по сути совокупность вообще всех явлений, которые происходят между этими двумя событиями.
Джиттер — это колебания задержки, означающие, что пакеты отправляются и принимаются с разной скоростью. Это похоже на плохой frame pacing: то ваш пинг меняется с 20 миллисекунд до секунды, то с секунды до 90 миллисекунд, а затем возвращается к 30 миллисекундам, которые были когда-то уже давно.
Потеря пакетов — это когда пакеты вообще не достигают места назначения. Она вызывает необходимость повторной отправки одних и тех же данных и и потенциально — странное поведение игры.
Конечно, наличие даже одной из этих проблем может довольно сильно раздражать. С точки зрения игрока, если вы не чувствуете, что контролируете игру, если ваша производительность страдает от проблем с сетью, велика вероятность, что вы просто закроете игру и больше в нее не зайдете. Для разработчиков и издателей это будет означать, что аудитория станет меньше, а если у вас free-to-play тайтл, это поставит под угрозу само его существование. Особенно важно это для соревновательных игр, поскольку любые повторяющиеся проблемы могут заставить игроков и организаторов турниров отказаться от их проведения до тех пор, пока проблемы не разрешатся.
Так почему же возникают подобные сбои?
Существуют три основных типа проблем с соединением:
-
проблемы «первой мили», вызванные домашней сетью вашего ПК и подключением к Интернету;
-
проблемы «средней мили», обусловленные перемещением данных по маршруту между вашим интернет-провайдером и игровым сервером;
-
проблемы «последней мили», связанные непосредственно с игровым сервером.
Обычно первая и последняя миля вызывают наименьшую задержку — в нашем примере это около одной миллисекунды. Средняя же миля имеет наибольшую задержку, ведь именно на ней пакеты преодолевают все географическое расстояние между вашим компьютером и сервером.
Начнем с того, что может улучшить со своей стороны сам игрок, — с проблем, связанных с ПК и домашней сетью.
Точно так же, как производительность игры ограничивается компонентами ПК, такими как центральный процессор или видеокарта, сетевое соединение тоже зависит от многих элементов. На то, как будут отправляться и приниматься пакеты данных, могут влиять настройки игры, сетевое оборудование вашего ПК и его драйверы, ваша операционная система и ее настройки. Но есть и физические аспекты — например, то, как ваш компьютер подключен к роутеру, какой у вас роутер и как он настроен — и, конечно же, подключение к Интернету, предоставляемое провайдером.
Пожалуй, наиболее важным для игр является переключение с беспроводного на проводной Интернет, что может значительно снизить задержки, джиттер и потерю пакетов. Помимо этого, возможно, стоит изучить роутеры с более гибко настраиваемой прошивкой — например, отдать предпочтение роутерам OpenWRT или pfSense — или просто повысить скорость вашего интернет-соединения — особенно в домашних условиях, где оно используется несколькими людьми, которые могут смотреть потоковые видео, загружать файлы из Интернета и выполнять другие задачи с высокой пропускной способностью одновременно. В идеале роутер должен иметь возможность отдавать приоритет критическим с точки зрения задачам, таким как онлайн-игры и видеоконференции, по сравнению с такими вещами, как воспроизведение видео с YouTube.
Наконец, полезно будет убедиться, что драйвера обновлены, вы отключили все приложения, которые используют значительный объем ЦП или пропускной способности сети в фоновом режиме, а также что сетевые настройки игры установлены правильно.
Теперь поговорим о средней миле, где у вас нет особого контроля над тем, что происходит, ведь пакет данных, отправляемый вашим компьютером, выходит в более широкий Интернет.
В первую очередь ваш пакет должен обработать местный интернет-провайдер. Но совсем скоро он перейдет к оптоволоконным магистралям, которые соединяют города и страны друг с другом. Здесь маршрут, по которому идет пакет, не обязательно окажется самым быстрым, и нет никакой гарантии, что пакет вообще доберется до конечного пункта назначения. Помните, что предшественник Интернета был разработан министерством обороны США для работы в условиях ядерной войны. Таким образом, доставляемость для него важнее скорости.
Сами маршруты со временем могут перенасыщаться и повреждаться, а потому изменяться. Так, вы можете обнаружить, что ваше соединение с определенным сервером может оказаться быстрым и надежным в один день, но на следующий уже совсем никуда не годится.
Так что же могут сделать разработчики игр для оптимизации на этом участке? Географическое расстояние критически влияет на пинг, поэтому можно открывать новые игровые серверы, которые находились бы в недостаточно обслуживаемых регионах базы игроков. Это уменьшит задержку для этих игроков и вероятность того, что какое-то соединение между игроком и сервером замедлится или полностью выйдет из строя. Но, конечно, запускать серверы повсеместно может оказаться непросто, особенно для небольшой компании с ограниченными ресурсами — да и это не решит всех проблем.
Другая идея состоит в том, чтобы вообще не полагаться на общедоступный Интернет для передачи пакетов от игрока к серверу — вместо этого пакеты могут передаваться через частные оптоволоконные маршруты, которые арендуют разработчики или их партнеры. Это дорого, но при использовании таких выделенных полос вы будете меньше зависеть от периодов занятости в вечернее время, когда возможны более высокие пинги и, как следствие, снижение надежности сетевого соединения.
Такой контроль над маршрутизацией также открывает некоторые интересные возможности для киберспорта, где отборочные и другие важные матчи проводятся онлайн. Можно настроить маршрутизацию и выбрать расположение сервера так, чтобы у обеих команд был одинаковый пинг, даже если одна из них находится географически ближе к серверу, и тем самым обеспечить участникам более справедливую игру.
Наконец, перейдем к последней миле в цепочке — игровым серверам.
До сих пор мы предполагали, что имеем дело с игроками, подключенными к одному выделенному серверу для проведения матча, поскольку часто это обеспечивает наилучший опыт. Так разработчики игр или их партнеры могут гарантировать, что на каждом сервере достаточно оборудования и обеспечивается самое быстрое подключение к Интернету, но есть и другие варианты.
Client hosting — это когда ПК одного из игроков сам по себе выступает в качестве сервера. Это хороший способ для разработчиков игр минимизировать затраты, но опыт каждого участника матча будет зависеть от качества соединения игрока-хоста. Таким образом, если такие игроки подключаются к сети через Wi-Fi или вовсе испытывают проблемы с подключением, другие игроки тоже столкнутся с лагами, джиттером и потерей пакетов.
Назначенный хост также имеет нулевую задержку для сервера, что дает ему огромное конкурентное преимущество перед остальными и, конечно, не является идеалом для соревновательных игр. При этом, если он покидает игру, необходимо найти другого хоста, что прерывает игру для всех участников на несколько секунд, пока не поизойдет так называемая миграция хоста.
Другой вариант — одноранговая (peer-to-peer) сеть, где игроки напрямую подключается друг к другу. Как правило, в таком случае тоже существует некий хост, который номинально отвечает за обработку новых соединений, поэтому проблема с миграцией хоста в данном случае сохраняется.
При таком способе подключения два игрока в одном регионе быстро увидят действия своих оппонентов, в то время как те, кто находятся далеко друг от друга, столкнутся со значительными задержками между действиями и выводом их результатов на экран — или, возможно, будут лучше стрелять, если это вы играете с высоким пингом. В любом случае, вам придется подстраиваться под каждого оппонента индивидуально, что может быть довольно сложно. Поэтому не так уж часто можно увидеть подобную серверную архитектуру вне файтингов «один на один» — хотя исключения, подобные Brawlhalla, конечно, существуют.
Помимо различных архитектур серверов, разработчикам игр необходимо оптимизировать пакеты, которые отправляются каждому игроку и обратно, и выбирать, как часто будет обновляться игровой мир. Чем чаще это происходит, чем выше частота тиков, тем быстрее должна выполняться обработка состояния игры на ПК игрока и на сервере, но в целом игра при этом становится более отзывчивой.
Некоторые игры работают с переменным весом тиков — например, королевские битвы, в которых скорость тиков повышается по мере выбывания игроков, или Counter-Strike, где сторонние и киберспортивные матчи проводятся со скоростью 128 тиков в секунду по сравнению со встроенным в игру матчмейкингом, работающим на 64 тиках.
Матчмейкинг — наиболее важная часть мультиплеера. Чтобы свести игроков в одном матче, вам, как разработчику игры, понадобится учитывать такие факторы, как пинг, уровень навыков, количество игроков в группе и выбранные каждым игроком карты и режимы. Каждый новый фактор существенно уменьшает размер пула для подбора игроков — что, в свою очередь, увеличивает время ожидания игры в среднем.
Даже небольшие инженерные улучшения или улучшенная маршрутизация в состоянии помочь с матчмейкингом, если это увеличит пул игроков — и, следовательно, позволит улучшить игровой опыт, не увеличивая время ожидания.
Наконец, последнее — методы борьбы с лагами, которые разработчики могут реализовать со своей стороны в коде.
Так называемое предсказание на стороне клиента часто используют в шутерах от первого лица. Его можно разделить на предсказание ввода и расчет траектории (dead reckoning): первое будет скрывать задержку действий самого игрока, в то время как второй — других игроков.
Предсказание ввода подчиняется следующей последовательности: клиент генерирует команду игрока, которая передается на сервер, где происходит вычисление следующего состояния игры, после чего оно отправляется обратно всем клиентам, и каждый из них отображает сцену на своем устройстве. Но все это время игроку тоже нужно что-то показывать, поэтому суть метода состоит в выполнении перемещения клиента локально, просто предполагая, что сервер примет команду. Недостатком его является то, что, если ответ сервера не будет соответствовать прогнозу клиента, возникнет резкое заметное изменение положения аватара игрока на экране.
Dead reckoning — это, по сути, алгоритм оценки положения объекта в виртуальном мире на основе его предыдущего положения, направления движения, скорости, ускорения и других параметров. Получив первый блок данных протокола состояния (protocol data unit, PDU) для объекта (например, персонажа другого игрока), каждый клиент начинает перемещение этого объекта, применяя согласованный алгоритм dead reckoning. Его движение обновляется при получении последующих PDU. Если для пакетов, несущих PDU, возникнет увеличенная задержка или вовсе их потеря, каждая копия виртуального мира продолжит показывать движение объектов в соответствии с алгоритмом до тех пор, пока не получит следующее обновление. Кроме того, при несоответствиях между статусом сервера и предсказанным клиентом некоторые игры могут сделать переход к новому статусу менее резким, используя алгоритмы сглаживания.
В дополнение к предсказанию клиента сервер может прибегать к методу компенсации сетевой задержки, чтобы правильно объединить виртуальные реальности, которые из-за проблем с неткодом испытывают рассинхронизацию. В таком случае сервер хранит историю последних позиций игроков (так, серверы, на которых работает движок Valve Source, сохраняют позиции игроков в течение 1 секунды), и когда ему нужно вычислить новое состояние, он сначала оценивает момент, когда действие было выполнено в клиентской версии состояния игрового мира. Другими словами, сервер «перематывает время» в соответствии с задержкой конкретного клиента, вычисляя выполнение введенной им команды (например, удалось ли выстрелу игрока поразить цель). Для этого используется следующая формула:
Время выполнения команды = Текущее время сервера — Задержка пакета — Интерполяция представления клиента
Иллюстрация выше представляет собой пример скриншота, сделанного на сервере сразу после того, как он подтвердил обращение. Красный хитбокс показывает позицию цели на клиенте, как это было некоторое время назад. Пока команда игрока (то есть, выстрел по цели) добиралась до сервера, цель продолжала двигаться влево. После того, как команда прибыла на сервер, для расчета факта попадания сервер восстанавливает позицию цели (синий хитбокс) на основе предполагаемого времени выполнения команды. Так сервер отслеживает траекторию выстрела и подтверждает или не подтверждает попадание.
Впрочем, иногда такой алгоритм приводит к ошибкам попадания, когда цель уже скрылась за укрытием. Эту проблему можно было бы решить, если бы клиент мог послать сообщение «попадание» вместо сообщения «выстрел». Однако серверы не могут разрешить клиентам сообщать о попаданиях по соображениям безопасности: некоторые клиенты могут этим воспользоваться в собственных целях и прибегнуть к читерству.
Мы рассмотрели основные причины различных задержек и других нежелательных аспектов производительности сети. Как у игрока, у вас есть немало опций, которые могут значительно улучшить качество вашего игрового опыта. Надежное сетевое соединение может сделать игру намного стабильнее и интереснее. Также мы рассмотрели варианты, что со своей стороны могут сделать разработчики и как они могут повлиять на игровой процесс.
Для получения дополнительной информации о лагах и о том, что вы можете с ними сделать, можно ознакомиться с каналом Battle(non)sense: там разбираются тесты сетевых проблем в разных играх и то, как разные технологии на них влияют. Прилагаем также и другие ссылки на видео и статьи о сетевом коде ниже:
-
Explaining how fighting games use delay-based and rollback netcode
-
Netcode 101 — What You Need To Know
-
Netcode for Game Developers
Потеря пакета происходит, когда ваше сетевое соединение теряет информацию во время передачи. Это может заставить ваше сетевое соединение казаться медленнее, чем должно быть, и снижает надежность сетевого взаимодействия как с локальными, так и с удаленными устройствами. Остановка потери пакетов должна быть на вершине списка для всех, кто хочет улучшить проблемную сеть.
Что такое потеря пакетов?
Хотя проточная вода часто используется в качестве аналогии для сетевого трафика, информация не передается по сети в виде непрерывного потока. Скорее, он отправляется в виде серии отдельных блоков, называемых пакетами . Эти блоки похожи на отдельные страницы в книге. Вместе они имеют некоторый смысл, но только когда они связаны с другими страницами в правильном порядке, они создают единое целое. Когда ваше сетевое соединение теряет пакеты, полная книга не может быть построена. Пакеты также могут доставляться неполными, поврежденными или иными дефектами, что делает их бесполезными. Решением этой проблемы обычно является повторная отправка потерянного пакета.
В большинстве сетей время от времени наблюдается очень низкий уровень потери пакетов. Превращения сетевых соединений таковы, что время от времени пакет отбрасывается, что неизбежно. Тем не менее, в правильно функционирующей сети потеря пакетов происходит достаточно редко, что не влияет на эффективность сетевого подключения.
Если вы видите более высокие уровни потери пакетов в вашей сети, вам нужно предпринять шаги, чтобы это исправить. Возвращаясь к нашей аналогии с водой, значительная потеря пакетов напоминает плохо протекающую трубу. Это должно быть исправлено, прежде чем любые другие улучшения могут быть сделаны.
Что вызывает потерю пакетов в вашей сети
Потеря пакета происходит не только по одной причине. Диагностика причины потери пакетов в вашей сети покажет вам, что вам нужно исправить.
- Пропускная способность сети и перегрузка . Основной причиной потери пакетов является недостаточная пропускная способность сети для требуемого соединения. Это происходит, когда слишком много устройств пытаются установить связь в одной сети.
- Недостаточно мощное оборудование. Любое оборудование в сети, которое маршрутизирует пакеты, может привести к потере пакетов. Маршрутизаторы, коммутаторы, брандмауэры и другие аппаратные устройства являются наиболее уязвимыми. Если они не могут «идти в ногу» с трафиком, который вы передаете через них, они будут отбрасывать пакеты. Думайте об этом как официанте с полными руками: если вы попросите их взять другую тарелку, они, вероятно, уронят одну или несколько других тарелок.
- Поврежденные кабели. Потеря пакетов может произойти на уровне 1, физическом сетевом уровне. Если ваши кабели Ethernet повреждены, неправильно подключены или слишком медленны для обработки сетевого трафика, они будут «пропускать» пакеты.
- Программные ошибки: ни одно программное обеспечение не является безупречным. Микропрограмма вашего сетевого оборудования или программного обеспечения вашего компьютера может содержать ошибки, которые могут привести к потере пакетов. В этом случае потребитель мало что может сделать. Вы можете попытаться решить проблему самостоятельно, но часто единственным способом решения проблемы является исправление микропрограммы от поставщика, поставляющего оборудование. Обязательно сообщайте о предполагаемых ошибках, чтобы найти поставщиков, которые помогут решить проблему.
Обнаружение потери пакета
Существует ряд программных приложений, которые могут обнаружить потерю пакетов в сети. Они каким-то образом «вынюхивают» пакеты, анализируя время их поездки или просматривая пакеты. Самый простой способ выяснить, существует ли потеря пакетов, — это пропинговать устройства в вашей сети.
- В Windows откройте окно командной строки и используйте команду ping для настройки вашего маршрутизатора. Например, если локальный IP-адрес вашего маршрутизатора 127.0.0.1, следующая команда будет проверять связь с маршрутизатором:
ping 127.0.0.1 -t
В macOS или Linux откройте окно терминала и используйте следующую команду:
ping 127.0.0.1
Единственное отличие — это отсутствие -t в конце команды.
- После того, как команда ping обработает достаточное количество пакетов (не менее 10), нажмите Ctrl + C, чтобы остановить команду.
- Посмотрите, была ли потеря пакетов. Если это конкретное соединение между устройством проверки связи и целью работает правильно, вы должны увидеть 0% потери пакетов.
--- 127.0.0.1 ping statistics --- 27 packets transmitted, 27 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 1.820/8.351/72.343/14.186 ms
- Вот и все.
Есть также более продвинутые инструменты, доступные для обнаружения потери пакетов. - Команда tcpdump в macOS и Linux значительно более мощная, чем ping. Немного трудновато привыкнуть, но следующая команда перехватит пакеты, а затем подсчитает количество потерянных пакетов:
tcpdump -i any
- Это запустит tcpdump через любое сетевое соединение. Он также может быть запущен с -i eth0 для захвата только основного сетевого интерфейса или с -c 10 для захвата только десяти пакетов.
- После выполнения команды посмотрите на нижнюю строку, чтобы увидеть, были ли потеряны какие-либо пакеты.
17 packets captured 85 packets received by filter 0 packets dropped by kernel
- В идеале вы должны увидеть, что 0 пакетов были потеряны.
В Windows вы можете использовать tcpdump через оболочку Bash в Windows 10 или запустить Wireshark.
Процесс обнаружения пакетов довольно низок. После того, как вы установили способ проверки связи по сети, вам необходимо следовать практике изоляции и устранения, чтобы определить источник и причину потери пакета. Для этого в большинстве случаев потребуется пинговать большинство устройств в сети или запускать сценарии, которые выполняют то же самое. Знание топологии сети будет очень полезно здесь.
Определение причины потери пакета
Чтобы определить основную причину потери пакетов, вы должны начать с самой простой проблемы, чтобы обнаружить и вернуться обратно.
Сначала проверьте соединение Ethernet между устройствами. Проверьте наличие явных признаков физического повреждения и неправильного подключения. Эти кабели работают правильно? Решает ли переключение кабелей проблему? Проверьте маршрутизаторы и коммутаторы аналогичным образом.
Во-вторых, определите, достаточно ли пропускной способности для обработки необходимых устройств в вашей сети. Является ли какой-либо один аппаратный элемент обработкой значительно большего количества соединений, чем следует? Это часто процесс поиска и замены, пока проблема не решится. Вы также можете использовать «заведомо исправный» коммутатор и маршрутизатор, поменяв его местами с потенциально проблемными устройствами в сети, чтобы увидеть, исчезает ли потеря пакетов при удалении определенного устройства.
Как исправить потерю пакетов в вашей сети
Как только вы определили причину потери пакета, есть два исправления, которые могут быть применены.
Первый включает в себя замену проблемного оборудования. Если ваше расследование привело к неправильной работе устройства, замените его.
Если потеря пакета вызвана программными ошибками, вам нужно попытаться исправить ошибку самостоятельно, попытаться обойти ее или сообщить об ошибке поставщику и надеяться, что он исправит ее. Для внутреннего программного обеспечения может быть легче найти исправление. Для стороннего программного обеспечения это зависит. Если вы являетесь крупным клиентом, вы можете найти выход из положения. Если нет, возможно, вы застряли в ожидании, пока пытаетесь использовать обходной путь.
Потеря пакетов часто представляет собой медленную работу в сети. Конечно, что-то столь расплывчатое может быть вызвано множеством коренных причин. Если вы диагностируете неэффективную сеть, потеря пакетов должна быть в верхней части вашего списка. После того как потеря пакетов исключена, вы можете перейти к более сложным проблемам.
Как исправить потерю пакетов
Потеря пакета происходит, когда ваше сетевое соединение теряет информацию во время передачи. Это может заставить ваше сетевое соединение казаться медленнее, чем должно быть, и снижает надежность сетевого взаимодействия как с локальными, так и с удаленными устройствами. Остановка потери пакетов должна быть на вершине списка для всех, кто хочет улучшить проблемную сеть.
Что такое потеря пакетов?
Хотя проточная вода часто используется в качестве аналогии для сетевого трафика, информация не передается по сети в виде непрерывного потока. Скорее, он отправляется в виде серии отдельных блоков, называемых пакетами . Эти блоки похожи на отдельные страницы в книге. Вместе они имеют некоторый смысл, но только когда они связаны с другими страницами в правильном порядке, они создают единое целое. Когда ваше сетевое соединение теряет пакеты, полная книга не может быть построена. Пакеты также могут доставляться неполными, поврежденными или иными дефектами, что делает их бесполезными. Решением этой проблемы обычно является повторная отправка потерянного пакета.
В большинстве сетей время от времени наблюдается очень низкий уровень потери пакетов. Превращения сетевых соединений таковы, что время от времени пакет отбрасывается, что неизбежно. Тем не менее, в правильно функционирующей сети потеря пакетов происходит достаточно редко, что не влияет на эффективность сетевого подключения.
Если вы видите более высокие уровни потери пакетов в вашей сети, вам нужно предпринять шаги, чтобы это исправить. Возвращаясь к нашей аналогии с водой, значительная потеря пакетов напоминает плохо протекающую трубу. Это должно быть исправлено, прежде чем любые другие улучшения могут быть сделаны.
Что вызывает потерю пакетов в вашей сети
Потеря пакета происходит не только по одной причине. Диагностика причины потери пакетов в вашей сети покажет вам, что вам нужно исправить.
- Пропускная способность сети и перегрузка . Основной причиной потери пакетов является недостаточная пропускная способность сети для требуемого соединения. Это происходит, когда слишком много устройств пытаются установить связь в одной сети.
- Недостаточно мощное оборудование. Любое оборудование в сети, которое маршрутизирует пакеты, может привести к потере пакетов. Маршрутизаторы, коммутаторы, брандмауэры и другие аппаратные устройства являются наиболее уязвимыми. Если они не могут «идти в ногу» с трафиком, который вы передаете через них, они будут отбрасывать пакеты. Думайте об этом как официанте с полными руками: если вы попросите их взять другую тарелку, они, вероятно, уронят одну или несколько других тарелок.
- Поврежденные кабели. Потеря пакетов может произойти на уровне 1, физическом сетевом уровне. Если ваши кабели Ethernet повреждены, неправильно подключены или слишком медленны для обработки сетевого трафика, они будут «пропускать» пакеты.
- Программные ошибки: ни одно программное обеспечение не является безупречным. Микропрограмма вашего сетевого оборудования или программного обеспечения вашего компьютера может содержать ошибки, которые могут привести к потере пакетов. В этом случае потребитель мало что может сделать. Вы можете попытаться решить проблему самостоятельно, но часто единственным способом решения проблемы является исправление микропрограммы от поставщика, поставляющего оборудование. Обязательно сообщайте о предполагаемых ошибках, чтобы найти поставщиков, которые помогут решить проблему.
Обнаружение потери пакета
Существует ряд программных приложений, которые могут обнаружить потерю пакетов в сети. Они каким-то образом «вынюхивают» пакеты, анализируя время их поездки или просматривая пакеты. Самый простой способ выяснить, существует ли потеря пакетов, — это пропинговать устройства в вашей сети.
- В Windows откройте окно командной строки и используйте команду ping для настройки вашего маршрутизатора. Например, если локальный IP-адрес вашего маршрутизатора 127.0.0.1, следующая команда будет проверять связь с маршрутизатором:
В macOS или Linux откройте окно терминала и используйте следующую команду:
В Windows вы можете использовать tcpdump через оболочку Bash в Windows 10 или запустить Wireshark.
Процесс обнаружения пакетов довольно низок. После того, как вы установили способ проверки связи по сети, вам необходимо следовать практике изоляции и устранения, чтобы определить источник и причину потери пакета. Для этого в большинстве случаев потребуется пинговать большинство устройств в сети или запускать сценарии, которые выполняют то же самое. Знание топологии сети будет очень полезно здесь.
Определение причины потери пакета
Чтобы определить основную причину потери пакетов, вы должны начать с самой простой проблемы, чтобы обнаружить и вернуться обратно.
Сначала проверьте соединение Ethernet между устройствами. Проверьте наличие явных признаков физического повреждения и неправильного подключения. Эти кабели работают правильно? Решает ли переключение кабелей проблему? Проверьте маршрутизаторы и коммутаторы аналогичным образом.
Во-вторых, определите, достаточно ли пропускной способности для обработки необходимых устройств в вашей сети. Является ли какой-либо один аппаратный элемент обработкой значительно большего количества соединений, чем следует? Это часто процесс поиска и замены, пока проблема не решится. Вы также можете использовать «заведомо исправный» коммутатор и маршрутизатор, поменяв его местами с потенциально проблемными устройствами в сети, чтобы увидеть, исчезает ли потеря пакетов при удалении определенного устройства.
Как исправить потерю пакетов в вашей сети
Как только вы определили причину потери пакета, есть два исправления, которые могут быть применены.
Первый включает в себя замену проблемного оборудования. Если ваше расследование привело к неправильной работе устройства, замените его.
Если потеря пакета вызвана программными ошибками, вам нужно попытаться исправить ошибку самостоятельно, попытаться обойти ее или сообщить об ошибке поставщику и надеяться, что он исправит ее. Для внутреннего программного обеспечения может быть легче найти исправление. Для стороннего программного обеспечения это зависит. Если вы являетесь крупным клиентом, вы можете найти выход из положения. Если нет, возможно, вы застряли в ожидании, пока пытаетесь использовать обходной путь.
Потеря пакетов часто представляет собой медленную работу в сети. Конечно, что-то столь расплывчатое может быть вызвано множеством коренных причин. Если вы диагностируете неэффективную сеть, потеря пакетов должна быть в верхней части вашего списка. После того как потеря пакетов исключена, вы можете перейти к более сложным проблемам.
Как снизить пинг в онлайновых играх — гайд
Для онлайн-игр жизненно необходимы два параметра, без которых о комфортном геймплее можно забыть раз и навсегда. Речь идет об FPS и пинге. Число кадров в секунду зависит от аппаратного обеспечения, обновленного софта и стабильного клиента самой игры. Пинг же — это время, за которое компьютер отправляет запрос на сервер и получает от него ответ. То есть его, в отличие от FPS, нельзя увеличить за счёт мощного ПК.
Пинг обычно измеряют в миллисекундах (мс). Чем ниже пинг, тем комфортнее игровой процесс: как только он начинает расти, то в игре появляются лаги, зависания, вылеты и другие неприятности. Пингу плевать на ваш скилл и профессионализм, поэтому даже самый слабый игрок с легкостью победит более опытного, если у последнего высокая задержка. Причины у этой самой задержки могут быть самыми разными, как и способы борьбы с ними. В этой статье мы разберём, что влияет на скорость обмена информацией и есть ли реальные способы снизить пинг в игре.
Узнайте ваш пинг вне игры
Стоит сразу отметить, что стабильного пинга, который всегда будет одинаковым при любом раскладе, не существует. Скорость обмена пакетами данных между серверами разная и зависит от расположения самого сервера, пропускной способности канала и других факторов.
Чтобы побороться за снижение пинга, нужно для начала узнать, какова средняя скорость соединения у вашего интернет-провайдера и на какой пинг вы в принципе можете рассчитывать. Для этого перейдите на сайт Speedtest. Если скорость интернет-соединения меньше 50 Mbps, а играть в онлайн-шутеры хочется с комфортом, то придётся менять тариф. Оптимальный вариант — от 100 Mbps и выше. Но даже с самым дорогим интернет-тарифом не стоит надеяться, что проблема высокого пинга исчезнет раз и навсегда. Стабильное соединение лишь снижает вероятность потери пакетов данных при обмене между клиентом (то есть вами) и сервером. Чем больше пакетов теряется, тем выше вероятность, что ваши выстрелы по противнику не будут засчитываться на сервере.
Counter-Strike: Global Offensive Counter-Strike: Global Offensive
Выбирайте сервер с умом
На стабильную скорость соединения в основном влияет выбор сервера. Добросовестные разработчики онлайн-игр, которые заботятся о своих пользователях, устанавливают несколько серверов по всему миру. Чем ближе сервер к вашей локации, тем ниже будет пинг. То есть если вы живёте в России, то и выбирать следует российский сервер. Хотя, конечно, нужно учитывать размеры нашей страны. Допустим, жителям Дальнего Востока рекомендуется играть на азиатских серверах: расстояние до них существенно меньше, чем до московских. Игрокам из западных регионов лучше остановить выбор на российских и европейских серверах. А вот, к примеру, на американских у вас всегда будет высокий пинг, и с этим ничего нельзя поделать.
League of Legends League of Legends
Стоит отметить, что комфортный пинг для шутера от первого лица составляет до 50 мс. Для игр, где реакция не стоит на первом месте, хватает и 80-100 мс. Но в любой онлайн-игре пинг выше 150 мс всегда означает большие проблемы.
Немаловажный фактор быстродействия сервера — тикрейт, единица измерения отправки и получения данных с сервера в секунду. Высокий показатель тикрейта считается признаком хорошего сервера и отличного сетевого кода. Как правило, когда вы играете в онлайн-игру через местного провайдера, сигнал покидает ваш дом, проходит несколько точек доступа и затем доходит до игрового сервера. Поэтому, например, чтобы сократить время соединения между сервером и клиентом, разработчики из Riot создали собственного провайдера, цель которого — существенно сократить время разрыва и повысить скорость получения данных сервером. К сожалению, не многие игровые компании идут на такой шаг. В большинстве случаев все пользуются стандартной практикой: мы поставили сервер, а дальше вы сами разбирайтесь.
Valorant Valorant
Тикрейт особенно важен в шутерах от первого лица, где реакция и скорость решают исход битвы. Например, если вы с противником одновременно начнёте стрелять, то победит тот, у кого ниже пинг. То есть скорость соединения не позволяет вовремя передать пакет данных, и на вашем экране противник только выходит из-за укрытия, когда на самом деле он уже выпустил в вас всю обойму.
Hunt: Showdown Hunt: Showdown
Многие современные шутеры работают с тикрейтом 64. Качество соединения на таких серверах очень нестабильно: скажем, противники могут телепортироваться с места на место или просто появляться из ниоткуда, чтобы выстрелить вам в голову. Всё это происходит из-за того, что задержка между обновлениями данных может составлять больше 15 миллисекунд — а для снайпера это критично. С тикрейтом в 128 играть в шутеры куда комфортнее, но игр с такими серверами на данный момент мало. Из известных это Valorant и некоторые сервера CS: GO.
Как вид подключения влияет на пинг
Основное правило любого киберспортсмена: не играть в онлайн-игры по Wi-Fi. Забудьте о беспроводном соединении, ибо не создан ещё такой роутер, который сможет полностью заменить первоклассное оптоволокно. Если уж вы настроены на победу в мультиплеерной игре, то советуем перейти на провода.
Fortnite Fortnite
Важную роль играет и модель роутера. С каждым годом более современные устройства обеспечивают всё более стабильное соединение провайдера с клиентом. Они существенно снижают нагрузку на сеть и предоставляют стабильную скорость на пределе заложенной в тарифном плане. Устаревшие маршрутизаторы снижают скорость соединения, теряют пакеты данных, а вы можете об этом даже не подозревать и винить сервер или вездесущих читеров. При этом многие игроки даже не задумываются, что стандартные роутеры, которые предлагают провайдеры, чаще всего очень низкого качества.
Не забывайте иногда перезагружать маршрутизатор. Перезапуск очищает DNS-кэш, который удаляет устаревшую информацию. Таким образом вы устраните ошибочные процессы и ускорите интернет-соединение.
Периодически проверяйте наличие новых драйверов сетевой карты. Обновлённое программное обеспечение устраняет проблемы с соединением и ускоряет передачу данных с вашего клиента на сервер игры. Устаревшие сетевые платы могут существенно снижать скорость интернета. Со временем любое устройство изнашивается, а технический прогресс не стоит на месте. Хорошие сетевые карты стоят недешево, но старайтесь не экономить на такой важной периферии, если планируете погружаться с головой в онлайн-баталии.
Программные способы понижения пинга
Для начала, вы должны запомнить одну важную деталь: не используйте сторонние программы и другой софт, который якобы оптимизирует соединение. В большинстве случаев они только снижают скорость и портят сетевой реестр операционной системы.
Overwatch Overwatch
В сети можно найти немало программ, которые увеличивают скорость обработки данных самим компьютером, например Leatrix Latency Fix. Но как бы авторы этой программы не убеждали игроков в её пользе для онлайн-игр, на самом деле она даёт разве что эффект плацебо. Проблема в том, что современные онлайн-игры всё чаще уходят от TCP-пакетов к UDP. Leatrix Latency Fix работает именно с TCP, то есть сокращает время ответа компьютера на запрос сервера. UDP-пакету не требуется ответ о получении данных, а следовательно, и программа будет бесполезной.
Существенно снизить скорость обмена данными между клиентом и сервером могут сторонние программы и загруженность интернет-канала. Поэтому перед началом игрового сеанса выключите все сторонние приложения, которые используют интернет: торренты, VPN, автономные обновления программ, Skype и другую шелуху, что в фоновом режиме отъедает знатный кусок общего канала.
Частая причина падения скорости — обновление антивируса. На большинстве домашних ПК до сих пор стоят антивирусы, пользы от которых примерно столько же, сколько и вреда. Они часто замедляют общую работоспособность ПК, постоянно обновляются, забирая всю скорость соединения, и чаще всего не помогают в отлове действительно опасных майнеров. Отключайте их во время игры.
Quake Champions Quake Champions
Последний способ реально увеличить скорость соединения с сервером — утилиты переадресации портов. Дело в том, что маршрутизаторы не созданы для разрешения входящих сетевых запросов, и в некоторых играх можно сделать коннект более стабильным и быстрым, если входящее соединение перенаправляется в игру именно через маршрутизатор. Хотя, прежде чем углубиться в такой процесс, нужно понять, что это тоже не панацея.
Для начала нужно узнать: IP-адрес вашего роутера, IP-адрес вашего ПК, порты TCP и UDP, которые необходимо перенаправить. Сделать это можно при помощи этой утилиты.
TCP и UDP для определенной игры всегда разные, поэтому их придётся поискать в интернете.
Процесс переадресации при помощи указанной программы обычно идёт по одному сценарию:
- Откройте браузер и перейдите к IP-адресу вашего роутера;
- Найдите раздел переадресации портов вашего роутера;
- Введите IP-адрес вашего ПК в соответствующее поле роутера;
- Поместите порты TCP и UDP для вашей игры в соответствующие поля вашего роутера;
- Перезапустите роутер, чтобы изменения вступили в силу.
Dota 2 Dota 2
Главная проблема высокого пинга в онлайн-играх — место вашего физического нахождения. Так уж вышло, что сетевую инфраструктуру на территории нашей необъятной Родины развивают весьма неохотно, из-за чего в популярные игры нам приходится играть на зарубежных серверах. Снизить пинг аппаратно или программно в таком случае не выйдет. Поэтому если ничего не помогает, лучше найти игру с грамотно расположенными серверами и получать от геймплея удовольствие.
Лаги, джиттер и потеря пакетов: откуда берутся проблемы с неткодом и как их решать
Если вы когда-либо играли в онлайн-игры, то наверняка знаете о лагах не понаслышке. Пропущенный выстрел, который должен был попасть в цель; мяч, резко меняющий направление прямо в воздухе; вы вдруг снова оказываетесь на несколько шагов назад в том месте, где находились секундой ранее. В этом нет ничего сверхъестественного: это обычные артефакты систем, обеспечивающих совместную игру с людьми из других стран почти так же эффективно, как и с соседом по комнате. По крайней мере, большую часть времени.
В этой статье речь пойдет о самых базовых вещах, почему вообще возникает сетевая задержка, с какими еще проблемами неткода можно столкнуться, а также с тем, что можно сделать со своей стороны, чтобы улучшить ситуацию. Также разберем остальную часть конвейера между ПК и игровым сервером, который может повлиять на получение лучшего игрового опыта без задержек и прочих неприятностей.
Итак, почему вообще возникают лаги? Почему в 2021 году это все еще является проблемой — с мощностью современных компьютеров, повсеместным использованием широкополосного Интернета и спустя десятилетия попыток разработчиков решить эту проблему?
С точки зрения разработчиков, реализация даже базового мультиплеерного режима — задача непростая. Необходимо получать данные от множества игроков одновременно, неоднократно — тысячи раз в секунду — передавать эту информацию на некий центральный сервер, а затем возвращать обработанный результат на ПК каждого игрока.
Состояние игры должно быть идеально синхронизировано с минимальной задержкой независимо от того, имеете ли вы дело с игроками в одной локальной сети или с разных континентов. Поэтому вам придется придумать способ компенсации задержки игроков. При этом лучше избегать необходимости ожидания игроками, пока сервер сообщит им результаты их же собственных действий, ведь динамике это на пользу не пойдет. Для этого вам, вероятно, потребуется показать эффекты ввода каждого игрока сразу же, а затем уже сглаживать любые различия между ПК игрока и сервером таким образом, чтобы это было внешне неочевидно.
Мы не можем знать, что делают другие игроки, пока сервер не сообщит нам об этом. Поэтому мы вынуждены отображать действия других игроков в матче такими, какими они были в прошлом. Также достаточно большую проблему может составить читерство, поэтому необходимо убедиться, что игроки имеют ограниченный доступ к данным с сервера, не позволяющий компьютеру игрока принимать решения о том, что на самом деле произошло в игре — например, насколько успешен был выстрел или какое количество здоровья осталось у игрока.
С двумя-то игроками это реализовать достаточно сложно, а теперь представьте, каково организовать подобное для игры с 10, 20 или даже сотнями игроков на одном сервере. При разработке игры жанра battle royale со всеми ее особенностями реализация хорошего мультиплеера является одной из самых сложных частей разработки даже для опытной команды, поэтому неудивительно, что временами в игре могут возникать сетевые проблемы. Конечно, это не делает такие сбои менее раздражающими, и чем быстрее скорость и выше конкуренция в игре, тем больше такой опыт может помешать вам получить от нее удовольствие.
Помимо лагов и сбоев, могут возникнуть и другие проблемы с сетью: rubber banding, когда игровой мир возвращает вас туда, где вы были несколько секунд назад; получение урона сразу после того, как вы оказались за укрытием; промахи ваших собственных выстрелов, а то и вовсе потеря связи с игрой.
Так что же вызывает все эти проблемы?
Обычно в играх можно столкнуться с тремя сетевыми явлениями, каждое из которых по-разному влияет на пакеты данных с вашими вводами и игровые состояния, которые передаются между вашим компьютером и сервером.
Первое из них — задержка. Она возникает тогда, когда пакеты с данными слишком долго передаются серверу и затем возвращаются к игроку. Проще говоря, задержка — это скорость реакции вашего интернет-соединения, то есть время, необходимое для передачи данных с вашего устройства на сервер. Важно отметить, что задержка зависит от качества вашего интернет-соединения, а не от скорости.
Часто задержку путают с лагами, и хотя они не означают одно и то же, но имеют причинно-следственную связь. Лаг — это задержка прибытия пакета от источника к месту назначения или, с точки зрения геймплея, задержка между нажатием кнопки и ответом игры, выведенным на экран. То есть, по сути совокупность вообще всех явлений, которые происходят между этими двумя событиями.
Джиттер — это колебания задержки, означающие, что пакеты отправляются и принимаются с разной скоростью. Это похоже на плохой frame pacing: то ваш пинг меняется с 20 миллисекунд до секунды, то с секунды до 90 миллисекунд, а затем возвращается к 30 миллисекундам, которые были когда-то уже давно.
Потеря пакетов — это когда пакеты вообще не достигают места назначения. Она вызывает необходимость повторной отправки одних и тех же данных и и потенциально — странное поведение игры.
Конечно, наличие даже одной из этих проблем может довольно сильно раздражать. С точки зрения игрока, если вы не чувствуете, что контролируете игру, если ваша производительность страдает от проблем с сетью, велика вероятность, что вы просто закроете игру и больше в нее не зайдете. Для разработчиков и издателей это будет означать, что аудитория станет меньше, а если у вас free-to-play тайтл, это поставит под угрозу само его существование. Особенно важно это для соревновательных игр, поскольку любые повторяющиеся проблемы могут заставить игроков и организаторов турниров отказаться от их проведения до тех пор, пока проблемы не разрешатся.
Так почему же возникают подобные сбои?
Существуют три основных типа проблем с соединением:
проблемы «первой мили», вызванные домашней сетью вашего ПК и подключением к Интернету;
проблемы «средней мили», обусловленные перемещением данных по маршруту между вашим интернет-провайдером и игровым сервером;
проблемы «последней мили», связанные непосредственно с игровым сервером.
Обычно первая и последняя миля вызывают наименьшую задержку — в нашем примере это около одной миллисекунды. Средняя же миля имеет наибольшую задержку, ведь именно на ней пакеты преодолевают все географическое расстояние между вашим компьютером и сервером.
Начнем с того, что может улучшить со своей стороны сам игрок, — с проблем, связанных с ПК и домашней сетью.
Точно так же, как производительность игры ограничивается компонентами ПК, такими как центральный процессор или видеокарта, сетевое соединение тоже зависит от многих элементов. На то, как будут отправляться и приниматься пакеты данных, могут влиять настройки игры, сетевое оборудование вашего ПК и его драйверы, ваша операционная система и ее настройки. Но есть и физические аспекты — например, то, как ваш компьютер подключен к роутеру, какой у вас роутер и как он настроен — и, конечно же, подключение к Интернету, предоставляемое провайдером.
Пожалуй, наиболее важным для игр является переключение с беспроводного на проводной Интернет, что может значительно снизить задержки, джиттер и потерю пакетов. Помимо этого, возможно, стоит изучить роутеры с более гибко настраиваемой прошивкой — например, отдать предпочтение роутерам OpenWRT или pfSense — или просто повысить скорость вашего интернет-соединения — особенно в домашних условиях, где оно используется несколькими людьми, которые могут смотреть потоковые видео, загружать файлы из Интернета и выполнять другие задачи с высокой пропускной способностью одновременно. В идеале роутер должен иметь возможность отдавать приоритет критическим с точки зрения задачам, таким как онлайн-игры и видеоконференции, по сравнению с такими вещами, как воспроизведение видео с YouTube.
Наконец, полезно будет убедиться, что драйвера обновлены, вы отключили все приложения, которые используют значительный объем ЦП или пропускной способности сети в фоновом режиме, а также что сетевые настройки игры установлены правильно.
Теперь поговорим о средней миле, где у вас нет особого контроля над тем, что происходит, ведь пакет данных, отправляемый вашим компьютером, выходит в более широкий Интернет.
В первую очередь ваш пакет должен обработать местный интернет-провайдер. Но совсем скоро он перейдет к оптоволоконным магистралям, которые соединяют города и страны друг с другом. Здесь маршрут, по которому идет пакет, не обязательно окажется самым быстрым, и нет никакой гарантии, что пакет вообще доберется до конечного пункта назначения. Помните, что предшественник Интернета был разработан министерством обороны США для работы в условиях ядерной войны. Таким образом, доставляемость для него важнее скорости.
Сами маршруты со временем могут перенасыщаться и повреждаться, а потому изменяться. Так, вы можете обнаружить, что ваше соединение с определенным сервером может оказаться быстрым и надежным в один день, но на следующий уже совсем никуда не годится.
Так что же могут сделать разработчики игр для оптимизации на этом участке? Географическое расстояние критически влияет на пинг, поэтому можно открывать новые игровые серверы, которые находились бы в недостаточно обслуживаемых регионах базы игроков. Это уменьшит задержку для этих игроков и вероятность того, что какое-то соединение между игроком и сервером замедлится или полностью выйдет из строя. Но, конечно, запускать серверы повсеместно может оказаться непросто, особенно для небольшой компании с ограниченными ресурсами — да и это не решит всех проблем.
Другая идея состоит в том, чтобы вообще не полагаться на общедоступный Интернет для передачи пакетов от игрока к серверу — вместо этого пакеты могут передаваться через частные оптоволоконные маршруты, которые арендуют разработчики или их партнеры. Это дорого, но при использовании таких выделенных полос вы будете меньше зависеть от периодов занятости в вечернее время, когда возможны более высокие пинги и, как следствие, снижение надежности сетевого соединения.
Такой контроль над маршрутизацией также открывает некоторые интересные возможности для киберспорта, где отборочные и другие важные матчи проводятся онлайн. Можно настроить маршрутизацию и выбрать расположение сервера так, чтобы у обеих команд был одинаковый пинг, даже если одна из них находится географически ближе к серверу, и тем самым обеспечить участникам более справедливую игру.
Наконец, перейдем к последней миле в цепочке — игровым серверам.
До сих пор мы предполагали, что имеем дело с игроками, подключенными к одному выделенному серверу для проведения матча, поскольку часто это обеспечивает наилучший опыт. Так разработчики игр или их партнеры могут гарантировать, что на каждом сервере достаточно оборудования и обеспечивается самое быстрое подключение к Интернету, но есть и другие варианты.
Client hosting — это когда ПК одного из игроков сам по себе выступает в качестве сервера. Это хороший способ для разработчиков игр минимизировать затраты, но опыт каждого участника матча будет зависеть от качества соединения игрока-хоста. Таким образом, если такие игроки подключаются к сети через Wi-Fi или вовсе испытывают проблемы с подключением, другие игроки тоже столкнутся с лагами, джиттером и потерей пакетов.
Назначенный хост также имеет нулевую задержку для сервера, что дает ему огромное конкурентное преимущество перед остальными и, конечно, не является идеалом для соревновательных игр. При этом, если он покидает игру, необходимо найти другого хоста, что прерывает игру для всех участников на несколько секунд, пока не поизойдет так называемая миграция хоста.
Другой вариант — одноранговая (peer-to-peer) сеть, где игроки напрямую подключается друг к другу. Как правило, в таком случае тоже существует некий хост, который номинально отвечает за обработку новых соединений, поэтому проблема с миграцией хоста в данном случае сохраняется.
При таком способе подключения два игрока в одном регионе быстро увидят действия своих оппонентов, в то время как те, кто находятся далеко друг от друга, столкнутся со значительными задержками между действиями и выводом их результатов на экран — или, возможно, будут лучше стрелять, если это вы играете с высоким пингом. В любом случае, вам придется подстраиваться под каждого оппонента индивидуально, что может быть довольно сложно. Поэтому не так уж часто можно увидеть подобную серверную архитектуру вне файтингов «один на один» — хотя исключения, подобные Brawlhalla, конечно, существуют.
Помимо различных архитектур серверов, разработчикам игр необходимо оптимизировать пакеты, которые отправляются каждому игроку и обратно, и выбирать, как часто будет обновляться игровой мир. Чем чаще это происходит, чем выше частота тиков, тем быстрее должна выполняться обработка состояния игры на ПК игрока и на сервере, но в целом игра при этом становится более отзывчивой.
Некоторые игры работают с переменным весом тиков — например, королевские битвы, в которых скорость тиков повышается по мере выбывания игроков, или Counter-Strike, где сторонние и киберспортивные матчи проводятся со скоростью 128 тиков в секунду по сравнению со встроенным в игру матчмейкингом, работающим на 64 тиках.
Матчмейкинг — наиболее важная часть мультиплеера. Чтобы свести игроков в одном матче, вам, как разработчику игры, понадобится учитывать такие факторы, как пинг, уровень навыков, количество игроков в группе и выбранные каждым игроком карты и режимы. Каждый новый фактор существенно уменьшает размер пула для подбора игроков — что, в свою очередь, увеличивает время ожидания игры в среднем.
Даже небольшие инженерные улучшения или улучшенная маршрутизация в состоянии помочь с матчмейкингом, если это увеличит пул игроков — и, следовательно, позволит улучшить игровой опыт, не увеличивая время ожидания.
Наконец, последнее — методы борьбы с лагами, которые разработчики могут реализовать со своей стороны в коде.
Так называемое предсказание на стороне клиента часто используют в шутерах от первого лица. Его можно разделить на предсказание ввода и расчет траектории (dead reckoning): первое будет скрывать задержку действий самого игрока, в то время как второй — других игроков.
Предсказание ввода подчиняется следующей последовательности: клиент генерирует команду игрока, которая передается на сервер, где происходит вычисление следующего состояния игры, после чего оно отправляется обратно всем клиентам, и каждый из них отображает сцену на своем устройстве. Но все это время игроку тоже нужно что-то показывать, поэтому суть метода состоит в выполнении перемещения клиента локально, просто предполагая, что сервер примет команду. Недостатком его является то, что, если ответ сервера не будет соответствовать прогнозу клиента, возникнет резкое заметное изменение положения аватара игрока на экране.
Dead reckoning — это, по сути, алгоритм оценки положения объекта в виртуальном мире на основе его предыдущего положения, направления движения, скорости, ускорения и других параметров. Получив первый блок данных протокола состояния (protocol data unit, PDU) для объекта (например, персонажа другого игрока), каждый клиент начинает перемещение этого объекта, применяя согласованный алгоритм dead reckoning. Его движение обновляется при получении последующих PDU. Если для пакетов, несущих PDU, возникнет увеличенная задержка или вовсе их потеря, каждая копия виртуального мира продолжит показывать движение объектов в соответствии с алгоритмом до тех пор, пока не получит следующее обновление. Кроме того, при несоответствиях между статусом сервера и предсказанным клиентом некоторые игры могут сделать переход к новому статусу менее резким, используя алгоритмы сглаживания.
В дополнение к предсказанию клиента сервер может прибегать к методу компенсации сетевой задержки, чтобы правильно объединить виртуальные реальности, которые из-за проблем с неткодом испытывают рассинхронизацию. В таком случае сервер хранит историю последних позиций игроков (так, серверы, на которых работает движок Valve Source, сохраняют позиции игроков в течение 1 секунды), и когда ему нужно вычислить новое состояние, он сначала оценивает момент, когда действие было выполнено в клиентской версии состояния игрового мира. Другими словами, сервер «перематывает время» в соответствии с задержкой конкретного клиента, вычисляя выполнение введенной им команды (например, удалось ли выстрелу игрока поразить цель). Для этого используется следующая формула:
Время выполнения команды = Текущее время сервера — Задержка пакета — Интерполяция представления клиента
Иллюстрация выше представляет собой пример скриншота, сделанного на сервере сразу после того, как он подтвердил обращение. Красный хитбокс показывает позицию цели на клиенте, как это было некоторое время назад. Пока команда игрока (то есть, выстрел по цели) добиралась до сервера, цель продолжала двигаться влево. После того, как команда прибыла на сервер, для расчета факта попадания сервер восстанавливает позицию цели (синий хитбокс) на основе предполагаемого времени выполнения команды. Так сервер отслеживает траекторию выстрела и подтверждает или не подтверждает попадание.
Впрочем, иногда такой алгоритм приводит к ошибкам попадания, когда цель уже скрылась за укрытием. Эту проблему можно было бы решить, если бы клиент мог послать сообщение «попадание» вместо сообщения «выстрел». Однако серверы не могут разрешить клиентам сообщать о попаданиях по соображениям безопасности: некоторые клиенты могут этим воспользоваться в собственных целях и прибегнуть к читерству.
Мы рассмотрели основные причины различных задержек и других нежелательных аспектов производительности сети. Как у игрока, у вас есть немало опций, которые могут значительно улучшить качество вашего игрового опыта. Надежное сетевое соединение может сделать игру намного стабильнее и интереснее. Также мы рассмотрели варианты, что со своей стороны могут сделать разработчики и как они могут повлиять на игровой процесс.
Для получения дополнительной информации о лагах и о том, что вы можете с ними сделать, можно ознакомиться с каналом Battle(non)sense: там разбираются тесты сетевых проблем в разных играх и то, как разные технологии на них влияют. Прилагаем также и другие ссылки на видео и статьи о сетевом коде ниже:
Using a leading VPN helps you reduce in-game packet loss for Valorant gameplay
by Vlad Constantinescu
Vlad might have a degree in Animal Husbandry and Livestock Management, but he’s currently rocking anything software related, ranging from testing programs to writing in-depth reviews about them…. read more
Updated on February 27, 2023
Fact checked by
Edgar Nicov
Since the dial-up Internet era, Edgar was interested in online resources. From forums to e-commerce websites, he started digging into how those resources could generate revenue. Today he… read more
- Valorant is Riot Games’ multiplayer tactical shooter that lets you choose your favorite character and compete in a 5v5 match with and against other players like you.
- Like any other online game, Valorant can face a bunch of connectivity issues. One of the most frequent (and annoying) ones is packet loss.
- A great method to fix the connection problems in this game is to use reliable VPN software on your PC.
- At the same time, you can update your network driver in case you running old versions that might affect Valorant gameplay.
Valorant is Riot Games’ multiplayer tactical shooter that lets you choose your favorite character and compete in a 5v5 match with and against other players like you.
Some players compare it to Overwatch, while others compare Valorant to CS:GO. However, in reality, Valorant is in a league of its own. There are definitely some similarities between the titles, but each game offers a different experience.
Yes, both Valorant and Overwatch are hero shooters, but that’s about it. Yes, you can defuse bombs (sort of) in Valorant, as Counter-Strike lets you do. But the games are very different when it comes to mechanics.
Long story short, Valorant is an awesome game and made thousands of players (yours truly included) watch endless Twitch streams in an attempt to grab one of those closed beta keys.
However, things are not all rosy. Since it’s an online-exclusive game, Valorant can sometimes face a bunch of connectivity difficulties. For instance, packet loss.
We tested the game using the following VPNs
What is packet loss in Valorant?
Generally speaking, packet loss tends to behave the same, regardless of the environment you notice it in, whether it’s in a VoIP, streaming multimedia content in your browser, or playing an online game such as Valorant.
As its name boldly suggests, packet loss means that one or more data packets have trouble reaching their destination. As a result, data doesn’t reach you or the remote server at all, which makes the connection lag.
When a device expects incoming data that never comes, it artificially delays the delivery, to give packets another chance to arrive. More often than not, the device makes another request and the data ultimately gets delivered.
However, there are some cases where the packet loss percentage is so severe, that the connection chooses to shut down instead of waiting for incoming packets indefinitely.
Both cases can be equally frustrating when you play online games such as Valorant. Leaking packets means high latency, unresponsive menus and buttons, rubberbanding, and even sudden crashes.
What causes packet loss in Valorant?
The reasons behind packet loss are various, and we don’t say that lightly. Even using WiFi instead of wired connections or having subpar Ethernet cables can trigger this issue.
However, there’s one cause that seems to weigh a bit heavier in the occurrence pattern of packet loss: network congestion.
Network congestion is exactly what you think it is. When the network becomes unable to accommodate users or requests, it starts failing at balancing resources.
Stable networks that are properly routed have it easier since they can balance resource usage in a more fair, logical way, by equally distributing it among all its users.
However, when the network is not properly configured, it may start to allocate more resources to some users, and next to none to others. Guess who will encounter packet loss then?
Long story short, there are a lot of potential reasons behind packet loss, but the most frequent one is network congestion.
How to perform a packet loss test in Valorant?
1. Use the game’s built-in option
- Launch the Valorant client.
- Log into your Riot account.
- Update the game to its latest version.
- Click the gear-shaped button.
- Access the Video section of the configuration screen.
- Go to the Stats category.
- For the Packet Loss option choose between text, graph, or both.
That’s it, your packet loss will be displayed for you while you’re in the game. It’s not too complicated and displays only the packet loss percentage between you and the Valorant server.
2. Use Windows’ pathping tool
- Launch Valorant.
- Connect to a server in your region.
- Use third-party apps like Wireshark to trace the IP of the server.
- Launch an instance of CMD prompt.
- Type pathping x.x.x.x (replace x.x.x.x with server IP).
- Wait for the pathping test to finish.
- Check the hops for any traces of packet loss.
The second way of detecting packet loss in Valorant may take a while, so we don’t recommend it, especially considering that you’ll likely ruin other players’ experience.
More so, Riot Games servers might be difficult or downright impossible to trace. Using tracers yielded a request timeout in our case, which made us believe they’re not exactly out there for you to see.
How to fix packet loss in Valorant?
A little bit of maintenance on your local network can go a long way, and can even help reduce packet loss, if not eliminate it altogether. Perform some manual troubleshooting:
➡️ Restart your PC, router, and/or modem
Some PC issues are hard to tackle, especially when it comes to missing or corrupted system files and repositories of your Windows.
Be sure to use a dedicated tool, such as Fortect, which will scan and replace your broken files with their fresh versions from its repository.
➡️ Check if there’s anything suspicious with any part of your home connection (cables, router)
➡️ Replace/repair troublesome components on your local connection (cables, adapters, drivers)
➡️Try to avoid peak hours if your network has a history of congestion (or use a VPN)
➡️ Always try to use wireless instead of WiFi (WiFi packet loss occurs more frequently)
➡️ Make sure your router runs on the latest version of its firmware
➡️ Contact Riot Games and inform them if there’s something wrong on their side
➡️ Call your ISP if you suspect there’s something wrong with your connection
1. Restart the game client
Although it may sound stupid at first, trust us, restarting the game did wonders for packet loss reduction. We even tried it during such an episode and it worked without a flaw.
Granted you’re not in a Competitive match, just give the game the old ragequit Alt+F4 and launch it once more.
Sure, you’ll probably ruin the game for your teammates, but staying online and perpetually losing packets can be even worse, don’t you think?
Either way, you’ll end up annoying a bunch of players, but in one scenario you’ll get rid of packet loss.
2. Use a trustworthy VPN service
- Get an ExpressVPN subscription plan.
- Install ExpressVPN on your computer and launch it.
- Log into your ExpressVPN account.
- Choose a server that’s closer to your physical location (closer = faster).
- Launch Valorant once more.
- Check if you still experience packet loss.
You can safely use ExpressVPN to reduce packet loss in Valorant, but this VPN has even more perks under the hood. For instance, it can help you improve in-game ping, circumvent geo-blocking, and stop ISP throttling in a jiffy.
When you use ExpressVPN with Valorant, your ping may drop significantly with minimal packet loss.
We believe this demonstrates a problem with the ISP and Valorant servers, as moving the server to another country near your location increases access to the servers significantly.
So, if you’re trying to figure out why your ping is so much higher than usual and you suffer packet loss, we recommend giving ExpressVPN a try.
ExpressVPN
If your ping is higher most of the time and you suffer packet loss give it a try with a reliable VPN service.
However, keep in mind that this packet loss VPN fix will only work if your ISP causes it by limiting your connection. A good VPN such as ExpressVPN can circumvent bandwidth throttling and improper traffic routing.
3. Update network drivers to their latest version
- In the Start Menu type Device Manager.
- Identify Network Adapters and click it to expand.
- Right-click on the Network adapter and choose Update Driver.
- Select the Search automatically for drivers option.
- Wait for the process to find the best available drivers.
- Restart your PC after the process is complete.
If you require another method to update your drivers safely and faster, we suggest that you utilize a driver updater like DriverFix.
You can therefore scan your PC for any outdated drivers or missing ones that may cause functional issues on your Valorant gameplay.
Hence, you’ll be able to update the Network driver within a few clicks or select them all at once.
4. Flush your DNS
- Type Command Prompt with Run as Administrator option.
- In the Command main window, type in the following command and press Enter.
ipconfig/flushdns
ipconfig/registerdns
ipconfig/release
ipconfig/renew
netsh winsock reset
- Here are the first 4 PC games going from Xbox to Boosteroid
- You might get 5 GB of free data from Edge’s built-in VPN
5. Close any bandwidth-heavy apps
- Press Ctrl+ Alt+ Delete keystrokes on your keyboard.
- Choose Task Manager.
- Filter the results in the list by clicking the arrow on Network.
- Right-click on the draining apps and select End Task.
Valorant packet loss is easy to fix
All things considered, if you’re experiencing packet loss in Valorant and are ready to call it quits, listen up. We know how annoying packet loss can get, but fortunately, it can be easily fixed if you’re patient enough.
One of the most common fixes we’ve discovered is simply restarting the game. We have no idea why it works, but it does, so we’re going to advocate for it.
You can also start using a VPN, but this fix only works with network congestion, or if your ISP throttles your bandwidth. Thus, you’ll need to make sure that you got the cause right before purchasing a subscription.
You can as well check out our best VPNs for Valorant that can reduce lag and improve gameplay.
Also, visit the Gaming Hub to discover more awesome guides about gaming with a VPN.
Last, but not least, when’s the last time you’ve performed maintenance on your network? Never? Well, it’s never too late to do it, especially knowing that it can help improve packet loss, and in some cases even eliminate it.
Loading…
Your connection is not secure – websites you visit can find out your details:
- Your IP Address:
loading
Companies can sell this information, alongside your location and internet provider name, and profit from it by serving targeted ads or monitoring your data usage.
We recommend Private Internet Access, a VPN with a no-log policy, open source code, ad blocking and much more; now 79% off.