Xds Optimizer, Оптимизация соединений Client<=>HLDS - Моды - .::Создание и настройка серверов::. - Форум - game.pro Lutsk Arena - Луцький форум. Чатовка, друзі, спілкування. Запчасти для фотоапаратов Canon, Sony, Olympus, Nikon
Страница 1 из 11
Форум » .::Создание и настройка серверов::. » Моды » Xds Optimizer, Оптимизация соединений Client<=>HLDS
Xds Optimizer, Оптимизация соединений Client<=>HLDS
@)(otnikДата: Понедельник, 07.12.2009, 13:35 | Сообщение # 1
Сообщений: 2183
Статус:
Добрый день дамы (если они тут есть ) и господа, рад представить вашему вниманию XDS Optimizer - это плагин для metamod-а, занимающийся различными фиксами внутри движка HLDS, список которых будет потихоньку пополняться.

На данный момент он умеет:
- полный фикс svc_bad-ов вида Server failed to transmit file 'AY&SY'
- для игроков с синхронными cmdrate и updaterate делается оптимизация их соединения. Заключается она в отсылке обновлений (upd пакетов) сразу после получения данных от игрока (cmd пакетов). В результате значительно уменьшается время живого отклика сервера на низких рэйтах, и, как побочный эффект, понижается пинг:


При этом на сервере не требуется заоблачных фпс, достаточно стабильных 200.

Небольшое HowTo:
Эта оптимизация имеет смысл только для невысоких cl_updaterate. При приближении значения cl_updaterate к клиентскому фпс она теряет смысл и появляется пинг 4-5. Причина появления - как раз таки низкий клиентский фпс.

Оптимизация работает только когда сервер получает больше пакетов, чем требуется отправлять клиенту (иными словами, при cl_cmdrate > cl_updaterate)

Разность cl_cmdrate и cl_updaterate не должна быть большой. Максимальную разность, которую может компенсировать оптимайзер задается кваром xds_boostfactor в долях cl_updaterate. Например, при cl_updaterate 40 и xds_boostfactor 0.4 максимальный cl_cmdrate будет 40+(40*0.4) = 56. Если поставить значение выше, то синхронизация upd и cmd пакетов сбивается, и время отклика увеличивается.

Для любителей низкого пинга: ставим xds_boostfactor 10. Тогда оптимизация будет работать даже при cl_updaterate 40 и cl_cmdrate 101.
Но помните, что значение cl_updaterate будет игнорироваться и сервер будет отвечать upd пакетом на каждый cmd пакет, что приведет к росту исходящего трафика и загрузки цп.

Что надо сделать, чтобы достичь минимального пинга? Ответ ниже:
На клиенте должен быть стабильный фпс. Неважно, 60 или 100, главное, что он не должен прыгать.
Клиент должен отсылать cmd пакеты через равные промежутки времени. Контролируется это самым нижним графиком в net_graph 2 (обведено зеленым и увеличено справа):

▲ Каждая точка на графике - это отрисованный клиентом кадр. Красная точка означает, что в момент отрисовки этого кадр не был послан cmd пакет. Прозрачная точка означает, что cmd пакет был послан. Этот график должен быть либо полностью прозрачным (клиент отсылает данные каждый фрэйм, достигается установкой cl_cmdrate 101), либо данные должны отсылаться через кадр, как показано на картинке. Для этого ставим cl_cmdrate = client_fps/2 + 10.
▲ ставим cl_updaterate на 10 меньше cl_cmdrate.
▲ На стороне сервера должен быть стабильный фпс >200
▲ choke и loss быть не должно! Универсальный рецепт от choke - ставить sv_minrate 50000
▲ Помните, что красивый маленький пинг не отражает реальной задержки. Минимальная задержка достигается установкой cl_cmdrate 101, cl_updaterate 101 (если это позволяет сервер)

Чтобы не было подозрений, что пинг 0 - это фэйк, я расскажу как он расчитывается. Во-первых, пинг (это то что отображается в столбце Latency в Scoreboard) - это задержка ответа клиента относительно сервера. В упрощенном варианте - сервер посылает запрос на клиент и ждет, когда он ответит. После этого находится время время между посылкой и ответом - это есть реальная игровая задержка. Далее из этого времени вычитается интервал посылки обновлений, и в результате получается то, что с точки зрения hlds называется пингом. Интервал посылки обновлений находится как 1/cl_updaterate, то есть при cl_updaterate 40 интервал обновления равен 1/40 = 0,025сек = 25мсек.
Пинг 0 означает, что реальная задержка в игре меньше интервала обновления, а не то, что ее совсем нет. Вот так.

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

А вот и сам плагин:

Плагин работает только на новых серверах, движок для патчинга взят с dproto. Все кто сидит на всяких 3647 и 2738 идут в трещину :(

Win, версия 0.3: xds_opt_0_3.rar

Linux, версия 0.4: xds_opt_0_4.tar.gz

Как устанавливать:

-Создаем папку <gamedir>/addons/xdsopt
-Распаковываем в нее архив
-Открываем текстовым редактором <gamedir>/addons/metamod/plugins.ini, добавляем туда строку

▲ под Windows:

Quote
win32 addons\xdsopt\xds_opt.dll

▲ под Linux:

Quote
linux addons/xdsopt/xds_opt.so

Запускаем сервер, после запуска смотрим meta list. Если статус плагина не RUN, значит ваш билд не поддерживается.
Даем серверу команду xds_stat. Вывод должен быть таким:

Quote
[XDSOPT]: Current Status: Active (100)
[XDSOPT]: Owner: DemoVersion
[XDSOPT]: Custom Message:

Все, установка закончена :)


Скачать: 8809857.jpg(40Kb) · 5494963.jpg(42Kb) · 9250993.png(21Kb)

Купуємо стім (Ліцензійну Counter Strike 1.6) тут http://www.cs-lutsk.org.ua/index/0-135
 
SystemДата: Понедельник, 07.12.2009, 13:45 | Сообщение # 2
Сообщений: 294
Статус:
На первый взгляд- работает хорошо, пинг у игроков понизился в среднем в 1,2-1,5 раза, багов пока не обнаружено.
Тестировал при следующих рейтах на сервере:

Quote
sv_minrate 2500
sv_maxrate 25000
sv_maxupdaterate 30

В настройках плагина:

xds_boostfactor 1

Игрокам рекомендовал прописывать:
cl_updaterate 30
cl_cmdrate 60
fps_max 100


 
FantukДата: Понедельник, 07.12.2009, 21:59 | Сообщение # 3
Сообщений: 8
Статус:
а есть такое же токо для контры?))для самой игры? :D B)

 
@)(otnikДата: Понедельник, 07.12.2009, 22:06 | Сообщение # 4
Сообщений: 2183
Статус:
:D це для сервера! Суть мода в тому шо можна виставити любий пінг!



Купуємо стім (Ліцензійну Counter Strike 1.6) тут http://www.cs-lutsk.org.ua/index/0-135
 
sever0404Дата: Понедельник, 07.12.2009, 22:28 | Сообщение # 5
Сообщений: 53
Статус:
о тупо везде ево искал..)
и токо тут нашол >(

 
ukrkodДата: Вторник, 09.02.2010, 22:34 | Сообщение # 6
Сообщений: 68
Статус:
создать папку xds_opt и кинуть в папку addons
addons/metamod/plugins.ini, добавляем туда строку
win32 addons/xds_opt/xds_opt.dll



 
godstopmeДата: Суббота, 15.05.2010, 15:51 | Сообщение # 7
Сообщений: 1
Статус:
[XDSOPT]: Current Status: Connecting to servers(timeout) (2)
[XDSOPT]: Owner:
[XDSOPT]: Custom Message:
что это значит?)

 
Форум » .::Создание и настройка серверов::. » Моды » Xds Optimizer, Оптимизация соединений Client<=>HLDS
Страница 1 из 11
Поиск: