Правимо Рейт (rates) - все для css - faq - каталог статей - сайт команди kremen ua
Багато людей часто запитують що таке Рейт, які значення використовувати і т.п Я думаю написання керівництва, що пояснює що все це означає, допоможе багатьом людям. Щоб потім люди не говорили які значення використовувати, не розуміючи що вони означають насправді.
Почнемо з визначень:
Rate (Рейт) - це максимальна межа байт в секунду який сервер може послати клієнту.
cl_rate - визначає максимальну межу байт в секунду який клієнт може послати на сервер. (Вам не потрібно турбуватися про цей параметр)
cl_cmdrate - число раз в секунду яке клієнт інформує сервер про свої дії.
cl_updaterate - це скільки разів в секунду сервер говорить клієнту що відбувається на карті.
Я припускаю, що большенство людей використовує ADSL або кабель і тут я буду розглядати ADSL як приклад і виходячи з цього я припускаю, що швидкість вхідного потоку у всіх 512кб # 92; с і швидкість вихідного 256кб # 92; с, але ви можете зробити всі наведені тут розрахунки і для кабелю, і для з'єднань на більш низьких швидкостях (просто необхідно обчислити різницю). Тепер виставляйте значення rate, cl_updaterate і cl_cmdrate чим вище тим краще, тому що це дозволяє вам грати в більш швидку гру і що більш важливо це дозволяє вашим кулям попадати в супротивника з більшою ймовірністю. Зараз я поясню вам чому.
Рейт
У теорії з'єднання ADSL повинно з легкістю підтримувати рейт в 30000. Це перевіряється наступним чином:
беремо значення Рейта, яке вимірюється в байтах в секунду і переводимо його в кілобайти в секунду.
30000/1024 = 29,296875кБ / с
У теорії ваше з'єднання працює на швидкості 512 кілобіт в секунду (в реальності воно працює на більш низькій швидкості). Я перекладаю це значення в кілобайти в секунду: 512/8 = 64кб / с
Тепер ви можете бачити що через ваше з'єднання можуть грати 2 людини з Рейт в 30000 (64 / 29.3 = 2.18). Можна використовувати таке ж обчислення для cl_rate, але цього робити не варто, значення за замовчуванням 9999 більш ніж достатньо.
cl_updaterate
Далі ви хочете змінити значення команд cl_updaterate і cl_cmdrate. updaterate визначає як багато оновлень в секунду ви можете отримати від сервера. Ясно що потрібно отримувати якомога більше оновлень, так як це дає вам більш точну картину того де хто знаходиться і куди летять їхні кулі. Однак, якщо у вас буде високий updaterate і низький rate ви не зможете послати достатню кількість даних за оновлення і будь-яка вигода від високого updaterate буде зведена до мінімуму. Для того щоб стало зрозуміло, я зараз все поясню.
Якщо я ставлю cl_updaterate в 100 і мій рейт дорівнює 30000 в теорії кожне оновлення може містити до 300байт даних (30000/100 = 300). Повторюся, чим більше даних ви зможете отримати за оновлення, тим чіткіше ви будете бачити ігровий світ (це не означає що ігровий світ буде більш чітким, а означає те, що ваші кулі будуть більш чітко потрапляти в ціль). Було обчислено, що коли у вас на екрані відбувається багато дій, ви можете використовувати 250байт на оновлення. Таким чином якщо у вас високий updaterate, вам потрібен відповідний йому високий рейт.
Використовуючи дані якщо у вас updaterate дорівнює 100, ваш рейт повинен бути рівний принаймні 25000, але краще мати невеликий запас. Я рекомендую значення 30000 як мінімум (щоб визначити яке значення вибрати для вашого Рейта візьміть ваш cl_updaterate і помножте його на 250, а потім додайте до отриманого значення ще хоча б 5000 для страховки).
cl_cmdrate
cl_cmdrate працює так само як і cl_updaterate. Ця команда визначає скільки оновлень в секунду ви посилаєте на сервер. І знову її значення потрібно ставити якомога вище. Чим більше оновлень ви пошлете на сервер, тим більше інформації він буде мати про ваших діях і про те куди летять ваші кулі. На мій погляд ця команда більш важлива ніж cl_updaterate.
Як і з cl_updaterate і з rate ви можете вирахувати максимальну кількість даних яке може містити кожне оновлення. Звідси, якщо у вас cl_cmdrate дорівнює 100 і ваш cl_rate дорівнює 9999, кожне оновлення може містити 99.99байт даних (9999/100 = 99.99). Цього має вистачити для ваших потреб, так як ви посилаєте менше даних на сервер, ніж він посилає вам.
Перешкоди (choke) і втрата (loss)
Тепер ми будемо дивитися на перешкоди і втрату. Перешкоди (choke) показують вам число оновлень що не були послані в обидва напрямки з перевантаження з'єднання. Втрата (loss) показує число оновлень які були послані, але не досягли іншого боку. Перешкоди важливіші ніж втрати, тому що ними ви засмічуєте з'єднання і воно не справляється з усіма цими даними. Це означає що вам потрібно знизити значення Рейт. Втрата не так важлива і якщо у вас велика втрата це говорить про те що у вас з сервером погане з'єднання. Поява як перешкод (choke) так і втрати (loss) є наслідком того, що значення Рейт які ви використовуєте, або занадто низькі, або занадто високі.
Я рекомендую спробувати використовувати ці значення:
rate 35000
cl_updaterate 100
cl_cmdrate 100
!Параметр cl_cmdrate має дорівнювати параметру cl_updaterate
Якщо ці значення призводять до перешкод або втрат, пробуйте знижувати значення. Я б спробував так:
rate 30000
cl_updaterate 66
cl_cmdrate 66
!Параметр cl_cmdrate має дорівнювати параметру cl_updaterate
Тим хто підключений до ADSL я б рекомендував використовувати ці значення:
rate 30000 або rate 25000
cl_updaterate 100 або cl_updaterate 66
cl_cmdrate 100 або cl_cmdrate 66
!Параметр cl_cmdrate має дорівнювати параметру cl_updaterate
Тим хто підключений до дргім провайдерам, то я б рекомендував використовувати ці значення:
rate 25000 або rate 10000
cl_updaterate 66 або cl_updaterate 33
cl_cmdrate 66 або cl_cmdrate 33
!Параметр cl_cmdrate має дорівнювати параметру cl_updaterate
Ви можете перевірити перешкоди і втрати за допомогою команди net_graph 3. Всі сервера відрізняються один від одного і якщо ви сильно турбуєтеся на рахунок перешкод і втрат включите net_graph і налаштуйте ваші Рейт, якщо не один з вище перерахованих вам не підійшов.
Знайдіть з'єднання яке найближче до вашого і спробуйте застосувати до нього одні з наведених нижче Рейт.
ПРИМІТКА - Ваша швидкість відправки (upload) не залежить від швидкості прийому (download). Ваш cl_updaterate - це кількість даних яке ви приймаєте.
Перешкоди (сhoke) трапляються коли сервер збирається послати дані клієнта, але не може тому що клієнт ще не готовий прийняти ці дані (грунтується це на настройках клієнтського Рейта (rate) або серверовского sv_maxrate). Деякі речі, такі як клієнтський рейт занадто низький для даного числа гравців на сервері, само собою призводять до втрати. Інші речі не завжди, але теж можуть привести до втрати, такі як коли клієнт піднімає значення cl_updaterate занадто високо.