Добрый день, вы зашли как гость.
Новые сообщения | Поиск
  • Страница 1 из 1
  • 1
Избавиться от лагов: настройка КЛИЕНТА
Пятница, 04.12.2015, 20:15
Пост 1
hate-n-fury

Удаленные
с
Старая статья про сетевой код написана мной в неадеквате и для сравнительно опытных игроков и админов, поэтому некоторыми трудно переваривалась и фтопку ее. Вот вам моя новая инструкция с форума hl2dm.ru, облегченная, актуальная (и, надеюсь, более понятная crazy ).

Сначала найдите неисправность.

Конфиг

В папке "...\Half-Life 2 Deathmatch\hl2mp\cfg" (аналогично для других игр на Source) откройте или создайте файл "autoexec.cfg", который считывается автоматически при каждом запуске игры. В нем "Блокнотом" или любым другим текстовым редактором будете добавлять или менять все нужные вам консольные параметры и их значения через пробел в кавычках, каждый с новой строки. Значения из одного слова или числа можно оставлять без кавычек. Первую строчку оставьте для комментария или пустой. Комментарии должны начинаться с // или #.

Общие настройки

На Vista и более новых системах Windows в движке Source встречается странный глюк, который можно упустить из виду: если в игре есть ограничение фреймрейта, то есть консольный параметр fps_max не равен 0, сетевая игра работает значительно хуже. В таких случаях его нужно ставить на 0 в своих конфигах! Лучше поставить лимит в настройках драйвера видеокарты, если это возможно.

Мощность компьютера и настройки графики и звука должны обеспечивать не меньше 80 кадров в секунду для комфортной игры на уровне, в идеале не меньше 128, чтобы задержки были минимальны. В любом случае фреймрейт должен быть выше ваших параметров cl_cmdrate и cl_updaterate, которые описаны ниже.

По возможности используйте родное разрешение и максимальную частоту развертки экрана, отдельно для игры их можно задать в параметрах запуска. Чтобы не слепнуть в темных или ярких участках карт, гамму в игре поставить максимально ярко, выключить HDR и bloom. Вертикальную синхронизацию/VSync выключить обязательно, чтобы не было лишней задержки управления. Если есть запас мощности видеокарты и вам так будет удобнее, можете повысить настройки теней до средних (в играх до CS:GO) и включить небольшое сглаживание MSAA. Остальные параметры картинки мало влияют на комфортность изображения, только на фреймрейт и время загрузки.

С многоядерным процессором попробуйте включить в игре многопоточную обработку/multicore rendering для повышения фреймрейта. При нем параметром запуска -threads N позволяете игре использовать N потоков процессора, в случае зависаний или вылетов игры выключите опцию.

Скорость обновления мыши/refresh rate/polling rate должна быть настолько высокой, насколько позволяет установить ее драйвер. Акселерацию нужно выключить везде (в Windows - снять флажок "повышенная точность указателя" в настройках мыши в панели управления/параметрах системы). Добавьте параметры запуска -noforcemaccel -noforcemparms. Raw input/грубый ввод - включить. Подробнее про устранение акселерации и задержек мыши можете нагуглить самостоятельно.

Настройки соединения с сервером, они же "рейты"

rate - задается в бАЙтах в секунду, ограничивает максимальные скорость передачи данных от сервера к вам и скорость загрузки файлов с сервера. При cl_updaterate 66 для игры без лагов HL2DM требует до 96000 бАЙт (чуть меньше 1 мегабИта) в секунду. Можно поставить rate даже быстрее, но никак не быстрее, чем позволяет качать ваше интернет-соединение. Скорость линии можете измерить на speedtest.net или другим способом.

cl_updaterate - определяет, как много обновлений в секунду вы хотите получать с сервера. Чем больше пакетов, тем больше нужно скорости соединения для стабильной работы, см. параметр rate.

cl_cmdrate - определяет, сколько раз в секунду вы будете отправлять на сервер ваши действия в игре и время, когда они были совершены, чтобы сервер мог учесть задержки и скомпенсировать их. Физически не может быть выше вашего фреймрейта в данный момент. Большая частота требует больше скорости линии на выход, но эти требования небольшие и можно их не учитывать.

Обе частоты - и cmd, и update - физически ограничиваются тикрейтом сервера (это частота перерасчета процесса игры), а в HL2DM все серверы работают на частоте 66, так что в этой игре ставить апдейт и цмд выше 66 не имеет смысла. Если же поставить их выше тика, немного затруднится движение в игре, а вы не получите никакой выгоды, кроме эффекта плацебо.

Как работает интерполяция
Ситуация игре может меняться не очень плавно даже при 66 обновлениях в секунду: примерно то же, что и играть при 66 FPS. Поэтому игра отображает ее с небольшой задержкой, чтобы успеть получить от сервера хотя бы 2 целых пакета и математически дорисовать между ними недостающие кадры. Значение lerp в таблице net_graph отображает текущую задержку для интерполяции в миллисекундах.

cl_interp_ratio - множитель, который на всякий случай задает минимально допустимую задержку (lerp) в шагах (интервалах) между обновлениями: 1 шаг = время на 2 пакета, 2 шага = 3 пакета и т. д. Обратите внимание: длину интервала игра рассчитывает не из реальной частоты обновлений и не из тикрейта сервера, а из cl_updaterate у вас в конфиге. Это позволяет при завышенном cl_updaterate ставить задержку меньше, чем нужно (недоработка игры). cl_interp_ratio желательно ставить 2.

cl_interp - задает желаемую задержку в секундах. Стандартное значение в 0.1 по-моему не оправдано и создает очевидную задержку в 100 мс в добавок к пингу и времени монитора. Оптимальное значение для хорошего соединения = 2 / cl_updaterate + 0.001~0.005 (чтобы покрыть колебания).

cl_predict - определяет, будет ли клиент предусматривать результаты некоторых событий (ваши движения и состояние оружия, например) и показывать их сразу, чтобы не пришлось мучительно терпеть задержку обновлений от сервера. Стандартное значение = 1 - включено.

Когда предсказанная игровая ситуация на клиенте отличается от реальной, клиент "исправляется", но делает это не мгновенно, а со специальным сглаживанием на подобие интерполяции. Это важно, чтобы вашего персонажа при поправке меньше кидало и дергало.

cl_smooth - вкл/выкл сглаживание поправок. По стандарту включено.

cl_smoothtime - время в секундах на поправку: чем меньше, тем резче. Стандартное значение = 0.1.

cl_pred_optimize - оптимизирует предсказание на клиенте. Стандартное значение = 2, при нем не будет делаться перерасчет, если не было ошибок. При значении 1 данные не будут копироваться без обновления от сервера (?).

Что еще важно знать про рейты

Тикрейт сервера физически ограничивает возможную частоту обновлений.

Для компенсации задержек сервер помнит последнюю секунду и отматывает ее назад, потому игроки с большими ping и lerp могут убивать вас там, где вас давно нет, например за углом.

Конфиг сервера временно ограничивает ваши рейты, пока вы к нему подключены. Эти ограничения могут быть неадекватными, и тогда вам придется рассчитывать и менять рейты во время игры, чтобы играть без проблем. Например, в HL2DM можно попасть на сервер, который жестко задает rate не выше 30000, что при cl_updaterate 66 вызовет заметные лаги и промахи (если включить таблицу net_graph 3, будет отображаться залипание/choke), так что придется этот параметр снижать или просто валить с этого лагодрома. Вот список возможных серверных ограничений:
sv_minrate
sv_maxrate
sv_minupdaterate
sv_mincmdrate
sv_maxupdaterate
sv_maxcmdrate
sv_client_min_interp_ratio (стандарт 1)
sv_client_max_interp_ratio
Их можно проверить, подключившись к серверу и введя параметр в консоль без значения.
В лиге hl2dm.net максимальные рейты и быстрый канал ставятся принудительно, чтобы не было спекуляций, а игроки с другими рейтами выкидываются с серверов автоматически.

Ставить lerp меньше, чем нужно на 2 обновления + небольшой запас на задержку пакета, не желательно, потому что интерполяция может давать сбои с неочевидными последствиями. Большинство серверов не позволят поставить cl_interp_ratio меньше, чем 1.

Расчет попаданий очень мало (если вообще) зависит от рейтов, иначе это плацебо. Он сильно зависит от работы сервера и стабильности пинга. Из-за несовершенства движка даже в идеальных условиях ваши 100%-е попадания будут засчитываться не всегда. Заранее смиритесь с этим и не убивайте нервы себе и другим игрокам.


Отредактировано hate-n-fury - Понедельник, 14.12.2015, 17:20
Профиль
Пятница, 04.12.2015, 21:37
Пост 2
FENIX

Удаленные
с
Спасибо за актив galstuk
у меня всегда стояли не особо адекватные настройки lean (судя по оранжевому цвету), но я заметил когда-то давно, что чем меньше interp, тем легче попасть в какую-либо цель (например, в летящую бочку или кружок на био при распрыге) и поставил все interp на 0, но это мой субъективный взгляд... скорее всего я ошибаюсь. сколько не возился с рейтами (а возился и читал я про них очень мало), так и не выявил сильной разницы для себя, ведь на всех серверах стоят свои ограничения. Сегодня повозился чуть-чуть с конфигом и подправил несколько вещей, играть стало плавнее, а с хитами непонятно... буду тестить.

старый cfg:
Код
net_graphpos "2"
rate "110000"
cl_updaterate "100"
cl_cmdrate "100"
cl_interp_ratio "0"
cl_interp "0"
cl_interp_all "0"
cl_allowupload "0"
cl_forcepreload "1"
cl_lagcompensation "1"
fps_max "300"
cl_pred_optimize  "2"
cl_smooth "0"


новый cfg:
Код
net_graphpos "2"
rate "66000"
cl_updaterate "66"
cl_cmdrate "66"
cl_interp_ratio "1"
cl_interp "0.01"
cl_allowupload "0"
cl_forcepreload "1"
cl_lagcompensation "1"
fps_max "0"
cl_pred_optimize  "2"
cl_smooth "1"
Профиль
Пятница, 04.12.2015, 22:39
Пост 3
hate-n-fury

Удаленные
с
Цитата FENIX ()
interp на 0

По стандарту сервер насильно ставит интерполяцию в минимум 1 шаг, поэтому отключить везде не получится. Не проверял, как сейчас настроены в этом плане Public Match серверы.

Цитата FENIX ()
rate "66000"

Если я ничего не путаю, после пересадки на Orange Box при 64000 на мясе из 6-8 человек появлялся чоук на респауне и не только, пришлось поднять. Проверь, не появляется ли у тебя, и не стесняйся ставить огромный запас - современный интернет позволяет.

Цитата FENIX ()
с хитами непонятно


По документации клиент отправляет свое точное время серверу, так что теоретически лерп не должен влиять, но нет способа объективно проверить. Сейчас у меня не лагающий провайдер, монитор на 144 Гц и мышка с хорошим сенсором вместо топорной Bloody: с хитрегой ясно на сей день только то, что она сильно ухудшается при скачках пинга и "шатаниях" сервера (var), но при любых условиях и настройках очень грустная dash2 Разработчики говорят то же самое о CSGO: проблема в железе. В этом году еще и сделали для отгораживания от читеров перерасчет разброса пуль на сервере (*рукалицо*). ИМХО эти гандоны за столько лет могли запросто написать полностью новый сетевой код без дыр для читеров, но с хорошей обратной связью, чтобы попадания считало всегда справедливо.


Отредактировано hate-n-fury - Суббота, 05.12.2015, 01:24
Профиль
Суббота, 05.12.2015, 13:17
Пост 4
Fkk

Удаленные
с
Отличная работа. Постну свои настроички за компанию, что ли. Вдруг, кому-то не пох*й :>

Код

cl_interp_ratio  "2"
cl_interp        "0.033380"
cl_interp_all    "0"
cl_updaterate    "66"
cl_cmdrate       "66"
rate             "128000"
cl_smooth        "1"
cl_smoothtime    "0.05"
Профиль
Суббота, 15.04.2023, 18:34
Пост 5
baraPypeverry

Удаленные
с
Ver Mais

Real Racing 3 ELECTRONIC ARTS 4.3 10M+Chaturbate on 16/2/23 trixie_taylor 01:20:22Lost Password?
Ver Online

CapГ­tulo 2472: CapГ­tulo 2472Roodharig 28,175 VideosKim Yong-jin
Download Ant-Man and the Wasp: Quantumania (2023) Hindi-English HDTC 480p [4000MB] || 720p [1GB] || 1080p [2.1GB]

Buy a domainSkip to contentDX OhBlocker
Hot Dog – Attacco a Berlino [HD] (2018) 3.3K Volte HD Guarda ora

Dating Relationships

Добавлено (06.05.2023, 23:06)
---------------------------------------------
La lettre perdue

Dragon Ball
Kagney Linn Karter et Nicole Moore se dГ©vorent entre elles

0 CommentsKaamelott – Premier volet 2021 • Aventure, Comédie, Historique
dadcrush 20 02 16 jillian janson sensitive stepdaughter nookie

Chapter 30CГЎi Chбєїt Trong ДђГЎm Tang
Timeless

let us c chm 5th edition

Профиль
  • Страница 1 из 1
  • 1
Поиск: