Главная » Статьи » Конфиги и настройки клиента |
Автор: Landdropper Как вы знаете, после летнего обновления сетевой код DoD:S был изменен. Появилось несколько новых переменных и несколько старых убрано. Об их значении и пойдет речь. Клиент-сервер - сетевой код игры созданый на основе обмена пакетами между сервером и клиентом. В этих пакетах информация о текущем состоянии игрового мира (расположении объектов и т.д.) cl_updaterate - число пакетов которые клиент получает от сервера каждую секунду.
cl_updaterate 20 означает, что клиент будет получать от сервера пакеты 20 раз в секунду, разница между пакетами - 50 мс. Чтобы предотвратить лагание от возможной потери пакета, интерполяция должна происходить в промежуток времени равный 2*50=100 мс. Чтобы обеспечить такую интерполяцию, необходимо задать параметр cl_interp 0.1. Множитель два означает, что мы хотим интерполировать две области между тремя пакетами пришедшими от сервера: "._._.". Если мы хотим итерполировать только одну область "._.", мы должны изменить соответствующий параметр. Этим параметром является переменная cl_interp_ratio. Она может принимать значения 2, 1, 0. Как не сложно догадаться, если эта переменная равна нулю, то интерполяция на клиенте будет отсутствовать. В общем случае формула для промежутка такова: lerp = cl_interp, но не может быть меньше cl_interp_ratio/cl_updaterate. Итак, тут мы приходим к самому определению: lerp - промежуток времени в котором пакеты полученные клиентом будут интерполироваться. По сути, значение lerp определяет пропорцию между пакетами, пришедшими от сервера, и пакетами, сгенерированными на клиенте. Чем меньше значение lerp, тем меньше пакетов будет "придумано" на клиентской стороне, тем точнее то, что вы видите, будет соответствовать тому, что происходит на сервере. Чем больше значение lerp, тем большую долю в вашей картинке будет играть интерполяция. После теории перейдем к практике. С самого начала кажется, что в идеале lerp должен быть равен 0, ведь при таком значении lerp нет интерполяции и клиент видит то же, что видит сервер. Вы НЕ можете себе позволить lerp = 0 по двум причинам. 1) Ваш интернет канал оставляет желать лучшего. 2) Настройки серверов непозволяют клиентской части выставлять необходимые значения некоторых переменных. Если вторая причина вопрос времени, то вот с первой причиной совладать способов не очень много. 1) Напишите в консоли cl_updaterate и запомните значение этой переменной Например: Вывод: Добивайтесь минимального значения lerp, оставляя его белым на каждом сервере, на котором играете. Это позволит вам снизить к минимуму все проблемы, связанные с вашим соединением с интернетом. На последок замечу, что существует миф, будто бы lerp должен быть равен пингу. Пинг - время за которое пакет доходит от сервера к клиенту и он не имеет никакого отношения к интерполяции. Бесполезно пытаться найти связи в этих двух понятиях. При любом пинге сохраняйте lerp минимальным и белым. Чтобы не париться с математикой, можно забиндить клавиши так:
| ||
Просмотров: 1886 | Рейтинг: 5.0/2 |
Всего комментариев: 0 | |
Конфиги и настройки клиента [7] |
Прочие статьи [3] |
X-Files [0] |
Aptimist | 4 | - | 2 | Online-Wars |
Voult | 5 | - | 4 | Aptimist |
Aptimist | 0 | - | 7 | rediska |
Aptimist | 7 | - | 6 | Only Wars |
ApTimisT | 15 | - | 4 | RanGerS |
ApTimisT | 3 | - | 7 | GO! |
RGZone | 4 | - | 3 | @pTimisT |
Aptimist | 9 | - | 1 | UNION |