Показать сообщение отдельно
(#68 (permalink))
Старый
Аватар для Vanguarde

Vanguarde вне форума
AV
Очки: 16,486, Уровень: 31
Очки: 16,486, Уровень: 31 Очки: 16,486, Уровень: 31 Очки: 16,486, Уровень: 31
Активность: 0%
Активность: 0% Активность: 0% Активность: 0%
 

Сообщения: 2,205
Благодарил(а): 578
Поблагодарили 379 раз в 161 постах
Регистрация: 22.11.2004
Адрес: www.norma4.ks.ua
Возраст: 38
Отправить сообщение для  Vanguarde с помощью ICQ
По умолчанию 09.06.2005, 10:09

Цитата:
Сообщение от Фраюшка
насчет cl_lw - это запрещено и счиатеться такими же *неверными* (а то и читерскими) настройками как и ex_interp , хотя впринципе меняется только прицел, а физика стрельбы - нет.
дабы разъяснить и помочь развитию

"Удушье"

Эффект "удушья" (лаг со стороны клиента) возникает в случае, если пропускная способность соединения не справляется с объемом поступающего трафика. Сейчас мы попробуем разобраться почему это происходит.

Время посылки слудеющего пакеты вычисляется так:



Текущее время + 1/cl_updaterate



Текущее время + (Количество посланных байтов/значение rate)



Соответственно, если у вас выставленно высокое значение cl_updaterate, а пропускная способность соединения недостаточна вы начнете испытывать лаг. Также, большое количество игроков означает увеличение потока данных, а значит увеличение задержек из-за низкой пропускной способности. Тот же эффект наблюдается при низком значении rate. При возникновении эффекта "удушья" сервер пытается справиться с ним посылая пакеты подряд, не дожидаясь следующего времени посылки, установленного в 1/cl_updaterate, пока лаг не будет устранен.



Интерполяция

Движок Half-Life использует интерполяцию для хранения истории игровых позиций и времени, когда игрок точно находился в этих позициях. После этого используется ex_correct для поиска в истории двух лучших позиций (заметьте, абсолютно не обязательно двух последних). Соответственно игрок всегда двигается с постоянной скоростью (реальная скорость передвижения игрока между позициями на сервере) меж этих двух позиций, не знависимо от значения ex_interp (до тех пор пока ex_interp выставлен равным 1/cl_updaterate или выше).


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



cl_updaterate/cl_cmdrate:



Причина относительно низких значений по умолчанию состоит в том, что игра разработана для поддержки игроков с любыми типами соединений и обеспечения им нормальной игры через интернет. Еще одна причина - HLDS должен работать практически на любом компьютере и не создавать сильной нагрузки на процессор.



Команды cl_updaterate и cl_cmdrate контролируют трафик сервер-клиент и клиент-сервер. Чем выше значения, тем чаще посылаются пакеты, а значит, тем больше трафик. Однако, выставление низких значений не приведет к искажению реальной картины (это происходит только при большой потере пакетов), так как движку Half-Life не требуется полное соответствие работы клиента и сервера.



А вот выставление слишком высоких значений cl_updaterate и cl_cmdrates ведет к ряду неприятных последствий:



Как сказано выше, если соединение не успевает обработать весь трафик, возникает лаг. Сервер испытывает значительно большую нагрузку, т.к. происходит более частая посылка значительно меньших изменений, подсчет которых вызывает сильную нагрузку на процессор и приводит к лагу со стороны сервера.



Выбор значений индивидуален для каждого и должен основываться на типе и качестве соединения. Высокие значения годятся только для локальных сетей, но не для Интернета

ex_interp



Команда, вокруг которой всегда ходит множество слухов, опасений и мифов. В Half-Life 1.5 лучшим значением ex_interp является установленное по умолчанию - 0.1. Дело в том, что существует небольшой баг (и на сервере и на клиенте), влияющий на то, как interp раскладывается на клиенте и пересылается на сервер (и, соответственно, как он потом включается в лагокомпенсацию на сервере). В результате различных жутких мифов многие думают что 0.1 - единственное допустимое значение, что сослужило хорошую службу в минимизации эффекта бага. ex_interp равное 0.1 - не закон, просто с ним все работает нормально . Не меняйте без особых на то причин, в противном случае можете возникнуть резкое снижение точности стрельбы примерно на половину хитбокса или более.

Как многие из вас вероятно уже знают, сетевой код Half-Life притерпит ряд изменений в версии 1.6. Алгоритм вычисления лагокомпенсации для клиента и сервера будет модифицировн.В частности ex_interp можно (и нужно) будет выставлять в 1/cl_updaterate (0.01 при cl_updaterate равном 100). Новая формула равно 1/cl_updaterate потому, что при условии отсутствия эффекта "удушья" и потери пакетов игроки и объекты будут двигаться непрерывно и получать следующее обновление от сервера сразу по завершении интерполяции. Заметим, что для получения полного эффекта от ex_interp равного 0.01 сервер должен быть способен посылать 100 пакетов в секунду каждому клиенту, а подавляющее большинство серверов этого просто не могут.


sv_maxupdaterate

Ограничивает частоту обновлений сервера. Чем выше значение, тем больше пакетов будет послано клиентам (если скорость посылки позволяет).



Вместо послесловия

Как сказано ранее, наиболее важными факторами для выбора значений являются личные предпочтения и какую нагрузку могут выдержать ваше соединение и компьютер. Движок Half-Life дает возможность нормально взаимодействовать даже при низких значениях. В хорошем окружении и клиент и сервер могут выдержать даже большие значения игра будет еще более комфортной.

http://nashalife.ru/subjects-print29.html


если 13 минут греть котлеты с макаронами то они превращаются в пельмени
Ответить с цитированием