Приветствую Вас Гость | RSS
Главная | Избавляемся от лагов в Source (HL2DM) - AllLife Forum | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: d3mtR 
AllLife Forum » Half-Life » Half Life » Half-Life 2: Deathmatch & Half-Life Deathmatch: Source » Избавляемся от лагов в Source (HL2DM) (просвещайтесь ;))
Избавляемся от лагов в Source (HL2DM)
Реклама
hate-n-furyДата: Суббота, 28.02.2009, 11:38 | Сообщение # 1
Великий Технарь
Группа: Поцоны

Страна:
Откуда: Первомайск
Сообщений: 2

4
Статус: Вне зоны обнаружения
Прежде всего...
prof
чтобы вы заранее не обольщались, скажу, что в первую очередь для игры в HL2DM вам понадобится интернет BroadBand, выделенка или на крайний случай DSL со скоростью на выход 128 килобит в секунду и на вход 512 и нормальной маршрутизацией (некоторые провайдеры дают услугу fastpatch для ее улучшения) и хорошим модемом. Для CSS и некоторых других игр требуется больше (с учетом того, что тикрейт на подавляющем большинстве HL2-серверов 66). Dial-up, спутниковый и беспроводной интернет (в том числе бывают проблемы, если к нормальному интернету комп подключен через Wi-Fi локальную сеть) вряд ли дадут шанс поиграть в 3D-action вообще. Скорость интернета определяется тарифом на провайдере, если интернет не сильно тормозит, разумеется. Примерную реальную скорость можете проверить здесь.
Если у вас к одному модему через локальную сеть подключены другие компы, лучше во время игры их выключить или отключить от локалки - они будут создавать помехи, особенно если ваши соседи/родственники на них увлекаются вебсерфингом: во время игры вы буквально на своей заднице прочувствуете каждый сайт, не говоря уже об он-лайн видео и закачках fear На своем компьютере отключите все программы, которые так или иначе используют интернет, оставив только Ventrilo/Teamspeak, если требуется, и Steam. Некоторые Firewall'ы и пиринговые программы типа DC++ тоже следует отключить. Ативирус поставьте на обновление раз в неделю, чтобы не начал вдруг качать во время игры.

Настраиваем Steam
В Steam есть маленькая, но важная настройка, которая оптимизирует его для вашего интернета. Если установлена неправильно, будет повышаться Choke, который рассмотрим далее. Выставьте скорость вашего интернета и место, где вы находитесь. Пример на скринах:


Эти настройки из-за кривости Стима часто сбиваются, так что проверяйте перед игрой.

Что есть что
Клиент - с чего мы играем: игра и компьютер
Сервер - куда мы с другими людьми подключаемся с клиента
Внутренний IP (айпи) - адрес компьютера или сервера в локальной сети. Очень часто имеет вид 192.168.XXX.XXX
Внешний IP - адрес компьютера или сервера в глобальной сети Интернет. Имеет вид XXX.XXX.XXX.XXX
Порт - "розетка" на сервере. Например, когда на одной ЭВМ находятся несколько игровых серверов, а адрес он имеет один, для подключения к определенной игре к IP после двоеточия добавляем специальное число.
Bandwidth - с английского: пропускная способность интернета, канал.
Ping, latency - задержка, сколько требуется времени сигналу (пакету), чтобы пролететь между сервером и клентом. Зависит от расстояния по маршруту, количества и загруженности серверов на маршруте, от принципа их связи (именно поэтому спутник для игры в шутеры не подходит - сигнал проходит огромные расстояния с помехами). Измеряется в миллисекундах. Играть в большинство шутеров можно с пингом ниже 70, выше - появляется ощутимая задержка, которая мешает точно воспринимать ситуацию, за 100 - уже серьезная помеха нормальной игре. Если у вас скорость интернета 1 мегабит на вход и 512 килобит на выход и не сильно падает, то при правильных настройках в игре пинг в процессе игры минимизирован (в идеале в процессе игры он близок к тому, который видите без подключения к серверу) и уже не станет меньше при установке более быстрого тарифа на том же провайдере.
Lag - опоздание. Неправильные настройки в игре, паршивый провайдер, высокий или нестабильный пинг вместе и по отдельности приводят к нестыковкам и "пробкам" в потоке пакетов между серваком и клиентом, из-за чего играть становится очень неудобно, например подергивает из стороны в сторону, особенно во время прыжков, обьекты и игроки дергаются. Если причиной лагов не есть проблема с пингом, то обычно это Choke и Loss.
Choke (чоук)- захлёб, помехи. Когда сервер не может просчитывть все пакеты с клиента на такой их частоте, или их порядок и плавность потока нарушаются из-за проблем на линии. Примерно то же, что и зажеванная магнитная лента. Приемлемо играть с чоуком 0-5.
(Packet)loss - потеря пакетов. Редкая, но очень серьезная проблема, при которой пакеты недоходят до сервера. Они либо теряются на линии - проблема соединения, либо вызваны глюками на сервере или клиенте (смена карты или перезапуск сервака иногда помогают). Если есть потеря, то начинают происходить чудеса наподобие внезапной вашей смерти: кто-то вас убил, но до клиента в нужное время недошел пакет с информацией, как именно, а инфа уже через мгновение проявляется на фрагмониторе.
Tickrate (Тикрейт) - частота, на которой сервер настроен отображать игру. На примере часов: старые механические перерасчитывают время 1 раз в секунду - тикрейт 1. На практике используют тики 33 (довольно мало), 66, 100 (на 100 в HL2DM чаще всего возникают глюки, например лифты в игре ранят пассажиров без причины). Чем выше, тем мощнее требуется канал и железо на сервере, чтобы без тормозов и падения тикрейта выдерживать игроков. На серверах с Mani Plugin можно написать в консоль mani_tickrate и узнать тикрейт.
FPS, framerate (фреймрейт)- частота кадров. На клиенте: как часто обновляется картинка игры в пределах и за пределами частоты монитора и как точно игра реагирует на ваше управление, на входящие пакеты с сервера и как часто может посылать пакеты сама. Сильно зависит от железа на компьютере, особенно от процессора, видеокарты и настроек качества в ее драйвере, от настроек графики в игре. На сервере зависит от процессора и памяти: как часто сервер проверяет наличие входящих пакетов и как часто способен посылать пакеты, насколько вообще плавно работает.
ConVar (Console Variable) - переменные, которые вводятся в консоль игры или сервера, чтобы заставить что-либо сделать или изменить какую-то настройку.
Hitbox - невидимая физическая модель любого обьекта в игре (она намного проще визуальной. У всех моделей игроков одинакова!). По ней попадают пули.
Интерполяция - как клиент сглаживает отрывистые (т.к. обьекты в сетевой не двигаются, а телепортируются из дной точки в другую по мере потока пакетов) движения обьектов в игре.

Мониторинг
Чтобы видеть, как себя чувствуют сервер и игра, включите специальную табличку, введя в консоль net_graph 3. Она будет отображаться во время игры внизу справа по стандарту. Переменная net_graphpos указывает позицию таблички: 3 - слева, 2 - по центру, 1 - справа. По высоте задается net_graphheight, но уже более точно.
Выглядит так:

Выдается статистика за последнюю секунду:
In - принятые с сервера пакеты, Out - отправленные на сервер.
1 - средний размер пакета в байтах,
2 - общий обьем данных в килобайтах,
3 - количество пакетов.
Остальное обьясняется в словаре выше.

Рейты
Это то, что и называется настройками сети в игре. Без них даже современный броадбэнд на 100 мегабит для игры - пустая трата денег. Конвары, которые определяют частоты и лимиты потока пакетов между сервером и игрой. Они делятся на клиентские (обычно начинаются на cl_) и серверные, которые ставят рамки для клиентских (sv_). Чтобы проверить, какие настройки на данном сервере, подключитесь к нему, и введите их в консоль без значений. Клиентские проверяются так же, но в любой момент.
При расчетах учитывайте, что каждый игрок на сервере увеличивает вес каждого пакета с сервера на несколько десятков байт.

Список клиентских настроек:
rate - исключительно клиентская настройка. Она ограничивает скорость соединения между сервером и клиентом, задается в байтах. Ставьте ее немного ниже минимальной реальной скорости закачки на вашей линии, чотбы стабилизировать уровень лагов и игрового пинга. Она часто по непонятным причинам сбивается до стандартных 3500, что очень мало, вызывает чоук и лаги - проверяйте.
Частоты обмена. При высоких значениях на плохих сервере и соединении повышается вероятность чоука, но низкие частоты увеличивают интервал между пакетами, вызывают лаги и немного повышают пинг, что вам не на руку. При любых настройках сервера и клиента частота пакетов не может быть выше тикрейта сервера +1.
cl_updaterate - частота пакетов с сервера на клиент. Чем она выше, тем плавнее двигаются в игре обьекты, тем легче попадать по врагам, но тем больше потребуется мощность сервера и скорость линии. Если частота входящих пакетов часто падает при нагруженном сервере, снижайте апдейт, чтобы стабилизировать поток
cl_cmdrate - частота пакетов с клиента на сервер. Если поток исходящих пакетов у вас выше FPS, то либо повышайте FPS до более приличных значений, либо снижайте cmd, иначе будете ронять свои выстрелы.
cl_lagcompensation 1/0 - определяет, будет ли расчитываться часть событий на клиенте. если поставить 0 ("нет"), то вам придется предугадывать все события на N миллисекунд вперед, например стрелять туда, куда идет жертва, а не где она есть. Всегда должно быть 1.
cl_predict 1/0 - (предположение) если 1, то на клиенте с учетом пинга прямолинейные движения обьектов будут показаны как есть, а не с опозданием. Это обычно делает использование фишки cl_lagcompensation 1 более честной по отношению к другим игрокам. И удобнее в случае, если враг выходит из-за угла.
cl_interp_ratio 1~2 - очередная загадочная команда, связанная c компенсацией лагов. Эта указывает на то, насколько будут сильно сглажены движения обьектов. Советую использовать 1 (часто сбивается до 2-х).
cl_interpolate 1/0 - интерполяция и моделей, и хитбоксов. Отключить IMHO можно только из любопытства - это очень неудобно и вылядит неприятно, особенно при невысоких частотах.

Список серверных настроек (если помните - ставят ограничения для клиентских настроек, но только пока клиент на данном сервере):
sv_maxrate - расчитывается делением канала сервера на максимальное количество игроков
sv_minrate - этот конвар большого значения не имеет. можно поствить на 25000 для игроков с медленным интернетом.

sv_maxcmdrate
sv_maxupdaterate - ставить эти две выше текрейта+1 смысла не имеет, меньше ставить только если сервер слабый и у клиентов постоянно падает частота.

sv_minupdaterate
sv_mincmdrate - эти две для равносилия игроков и избежания лагов сильно занижать не следует. Можно поставить на размер тикрейта, но только если сервер не тормозит и среди завсгдатаев нет игроков с медленным инетом.

sv_client_min_interp_ratio - лучше 1
sv_client_max_interp_ratio - лучше 2

sv_maxunlag .5

sv_unlag
sv_client_interpolate
sv_client_predict - для блага самих клиентов - все по 1

fps_max - на сервере это ограничение фреймрейта. Стандарт 300, но для очень мощных можно поставить 600. Если ваш сервак все же не идеально держит update при высоком rate, максимальных cmd/update, можете снижать fps_max ближе к реальному фпс (но советую ставить число, кратное тикрейту). Чем дальше серверный FPS от его fps_max, тем дальше реальный updaterate от клиентского при больших нагрузках событиями.

Пример моих настроек
У меня скорости ADSL 1 мегабит и 512 килобит на вход и выход. Для лучших серверов использую бинд со штатными настройками:
bind "BACKSPACE" "cl_updaterate 67; cl_cmdrate 67; rate 64000; cl_interp_ratio 1"
для такой линии ставить rate выше 64000 (расчитан на 512 кб/с) не будет ошибкой, но в этом просто нет надобности, да и не каждый сервак позволит.

Кажется, ничего важного здесь не упустил. Вам остается только практиковаться и делать расчеты. Про серверные настройки подробнее можете узнать тут (с неточностями, потому опирайтесь на ЭТУ статью). gunsmilie


 
Реклама
dr_GДата: Вторник, 14.04.2009, 23:04 | Сообщение # 2
Soldier Of Fortune
Группа: Администраторы

Страна:
Откуда: eorðe
Сообщений: 2768

Статус: Вне зоны обнаружения
Респект cool








 
Реклама
sgt_FatДата: Вторник, 14.04.2009, 23:06 | Сообщение # 3
fallen away
Группа: Администраторы

Страна:
Сообщений: 767

23
Статус: Вне зоны обнаружения
klasss!






 
Реклама
GriffinДата: Воскресенье, 19.04.2009, 22:09 | Сообщение # 4
Сударь
Группа: Mega Halfers

Страна:
Откуда: C AX.yETb Street
Сообщений: 56

0
Статус: Вне зоны обнаружения
Подробно и полезно



 
Реклама
FocusДата: Пятница, 24.04.2009, 09:40 | Сообщение # 5
Сударь
Группа: Mega Halfers

Откуда: Из чёрного ящика
Сообщений: 78

2
Статус: Вне зоны обнаружения
http://hl.clan.su/forum/4-101-1
 
AllLife Forum » Half-Life » Half Life » Half-Life 2: Deathmatch & Half-Life Deathmatch: Source » Избавляемся от лагов в Source (HL2DM) (просвещайтесь ;))
Страница 1 из 11
Поиск:

http://www.hl.clan.su © 2007-2017