Пинг — больная тема всех любителей онлайн-игр. И реальность такова, что понизить его своими силами в играх, получится не у всех и даже не у каждого второго. Как один из бесплатных и доступных способов, попытаться снять нагрузку со своего оборудования и переложить ее на оборудование провайдера, тем самым убрав задержки при склеивании фрагментированных пакетов. Возможно это и понизит пинг, но узнать можно только экспериментальным путем.
Как это сделать? Читаем ниже.
Как понизить пинг в играх, только настройками в ОС
Природа появления его бывает трех видов:1) Локальная проблема у пользователя
Сюда входят:
- неправильное конфигурирование операционной системы в сетевой части
- вирусы
- кривые параметры в игре или программе
- проблема с конфигурированием или производительностью "железа" (3G-модема, сетевой платы, роутера и прочее).
Грубо говоря сюда входит маршрутизатор, который стоит в подъезде, линии тянущиеся от него или каналы связи до самого провайдера и коммутаторы\маршрутизаторы и прочие железки, пропускающие весь трафик абонентов на вышестоящих провайдеров.
3) Проблемы с транспортом, с вышестоящим провайдером и конечным сервером.
Если со вторым и третьим пунктом чаще всего бороться можно только одним способом. Сменой поставщика услуг. То вот в первом варианте можно попытаться сделать все зависящее от нас, чтобы пакеты бежали как можно быстрее и на полных парусах до сервера, не испытывая ненужных задержек.
Доводилось вам слышать такие слова, как UDP и TCP? И вероятно знаете, что это вышестоящие протоколы расположенного над IP?
В интернете очень много статей, как понизить пинг средствами ОС. И подавляющее большинство из них описывает настройки в реестре и предлагает добавить TcpAckFrequency или TCPNoDelay или еще какие-то параметры. Т.е. описываются параметры TCP (которые в играх практически не используются и на ping ни как не влияют), а по факту нужны настройки для UDP-протокола. Эта путаница, мягкого с теплым и не понимание, приводит к тому, что у читателей появляется разочарование после применения данных советов. В играх ничего не меняется по сетевой задержке.
Для наглядности привожу перечень наиболее популярных игр, с запросом про пинг и мы посмотрим какой протокол они используют у себя:
Игра | Протокол |
Counter-Strike: Global Offsence (CS: GO) | udp |
Counter-Strike 1.6 | udp |
World Of Tanks (WoT) | udp\tcp |
Warface | udp\tcp |
Dota 2 | udp |
Grand Theft Auto (GTA) | udp\tcp |
Counter-Strike Source v34 | udp |
World of Warcraft (WoW) | udp\tcp |
Как видно из примера, все популярные игры завязаны на один протокол. И это не просто совпадение. (Присутствие TCP, во все не говорит о том, что для игровых ситуаций он используется. Чаще всего TCP задействуют только для обновлений, лаунчеров и передачи информации с гарантированной доставкой.)
Разработчики намеренно используют User Datagram Protocol для многопользовательских игр, так как он позволяет наиболее точно и максимально быстро передавать данные о нажатии клавиш, положений персонажа в игровом мире и передаче прочих данных, требующих самого актуального состояния.
К слову, этот протокол не идеален. Если потеряется пакет и он не будет продублирован, то в игре это будет лаг. У него имеется множество минусов на первый взгляд, но это только на первый. Разработчики знают его сильные стороны и именно его выбирают в сетевой части для многопользовательских игр.
На него можно хоть как то повлиять либо в самой игре, либо настройкой MTU в ОС. В играх обычно используются консольные команды типа rate\cl_cmdrate\cl_updaterate или еще какие-то аналоги.
Теперь самый важный момент в статье!! Вам нужно подобрать правильный параметр IP MTU и держать его в уме, при изменении сетевых значений в игре. Подбирается он так:
Пуск - выполнить - cmd
ping yandex.ru -f -l 1500
уменьшайте значение до тех пор, пока пакет пройдет не фрагментированным. И пингуйте сервер, на котором собираетесь играть.
Как только определили максимальный размер пересылаемых данных, прописываем или добавляем в реестре
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\код_адаптера
параметр MTU (reg_dword) равный нашему значению и +28. Т.е. если значение было 1422, то прописать нужно 1450.
Почему +28? Это из-за разных протоколов, ping использует ICMP, а мы настраиваем IP.
И после того, как вы подобрали нужный размер MTU, внесли данные в реестр, перезагрузили компьютер. Только тогда можно приступать к настройке сетевой части в самой игре, чтобы понизить ping.
Фрагментирование может влиять на пинг в игре
Почему важно избавиться от фрагментации на уровне ОС? Имеет она свои минусы и очень существенные:
- Сервер должен получить все фрагменты, чтобы собрать пакет целиком. Если хоть один будет утерян, считайте что вы получите лаг в игре.
- Фрагментация приводит к нагрузке на процессоры транзитных маршрутизаторов и конечного сервера. Если несколько сотен пользователей, на осаде замка например, будут так нагружать сервер, лаги почувствуют все из-за нагрузки на сам сервер.
- Увеличивается требование к памяти маршрутизаторов, так как он должен хранить все фрагменты, пока пакет не будет дальше собран и отправлен. Если с этим проблемы у него, это увеличивает пинг или появляются лаги
- Часто фрагментирование выполняют медленные процессоры, отсюда появляется задержка
- Есть еще минусы, которые так же могут добавлять ping в игре
И в заключении, что нужно прописывать и для какой игры и другие способы как повлиять на сетевую задержку, будет рассмотрено в следующих статьях. (третья и четвертая части)
Надеюсь чуть-чуть внес ясности в тему, как понизить пинг своими силами и вы узнали, что повлиять на UDP-пакеты настраивая только параметры TCP - нельзя. Но можно настроить сетевую карту особым образом, чтобы еще понизить пинг и отгрызть драгоценные миллисекунды! Эта интересная тема будет раскрыта в следующей статье (вторая часть).
- Информация о материале
- Опубликовано: 31.08.2016 г.