Що таке lerp в css? і як його знизити?
Якщо Ви помітили, після останнього оновлення мережевий код CS: S був змінений. З'явилося кілька нових змінних і одна з основних це LERP.
LERP - проміжок часу в якому пакети отримані клієнтом будуть інтерполювати.
По суті, значення lerp визначає пропорцію між пакетами, які прийшли від сервера, і пакетами, з генеруються на клієнті. Чим менше значення lerp, тим менше пакетів буде "придумано" на стороні клієнта, тим точніше те, що ви бачите, буде відповідати тому, що відбувається на сервері. Чим більше значення lerp, тим більшу частку в вашій картинці буде грати інтерполяція.
З самого початку здається, що в ідеалі lerp має дорівнювати 0, адже при такому значенні lerp немає інтерполяції і клієнт бачить те саме, що бачить сервер. Ви НЕ можете собі дозволити lerp = 0 з двох причин.
1) Ваш інтернет канал залишає бажати кращого.
Припустимо, що ви щасливий володар модему або в вашому місті широкосмуговий інтернет поки по кишені тільки обраним або ваш сусід по гуртожитку вечорами заливає на торрент пачку свіжих німецьких фільмів. Це означає, що ви можете собі дозволити виключно скромні мережеві настройки. Швидше за все ті, що стоять за замовчуванням, а можливо ваші справи ще гірше. При cl_updaterate 20, навіть якщо все пакети благополучно приходять від сервера до клієнта, ви бачите 20 кадрів в секунду (не має значення, який у вас комп'ютер). Людське око сприймає цю картинку як смикання. Якщо ж, не дай бог, втрати (choke) є, то грати ви просто не зможете, так як будете бачити слайдшоу.
2) Налаштування серверів не дозволяють клієнтської частини виставляти необхідні значення деяких змінних.
І так, як налаштувати?
1) Напишіть в консолі cl_updaterate і запам'ятайте значення цієї змінної
2) Напишіть в консолі cl_interp_ratio 1
3) Розділіть 1 на значення cl_updaterate
4) Напишіть в консолі cl_interp і надайте йому то що отримали в пункті 3
наприклад:
Я граю з cl_updaterate 66, це означає що в 3 пункті я отримаю 0.0152, отже мені потрібно написати cl_interp 0.0152. Це дасть мені lerp = 15. Що вже досить непогано. Так як інтерполяція таких часових проміжків не дуже сильно додає неточності вашим діям.
Якщо ви пишете значення cl_interp менше, ніж cl_interp_ratio / cl_updaterate, то на net_graph lerp буде відображатися помаранчевим кольором. Якщо ж lerp забарвлений в жовтий, то значить значення lerp більше проміжку часу між відсилає пакетами на цьому сервері. В обох випадках lerp (а значить cl_interp) потрібно збільшувати поки той не стане білим. Якщо ви будете намагатися грати з НЕ білим lerp, то ви прирікаєте частину своїх пострілів застрявати в проміжку клієнт-сервер.
висновок
Домагайтеся мінімального значення lerp, залишаючи його білим на кожному сервері, на якому граєте. Це дозволить вам знизити до мінімуму всі проблеми, пов'язані з вашим з'єднанням з інтернетом.
На останок зауважу, що існує міф, нібито lerp має дорівнювати пінг. Пінг - час за який пакет доходить від сервера до клієнта і він не має ніякого відношення до інтерполяції. Марно намагатися знайти зв'язку в цих двох поняттях. При будь-якому пінг зберігайте lerp мінімальним і білим.
Щоб не паритися з математикою, можна додати в autoexec.cfg:
alias lerpa + "incrementvar cl_interp 0.01 0.09 +0.0001" // cl_interp +0.0001
alias lerpa- "incrementvar cl_interp 0.01 0.09 -0.0001" // cl_interp -0.0001
alias lerpb + "incrementvar cl_interp 0.01 0.09 +0.001" // cl_interp +0.001
alias lerpb- "incrementvar cl_interp 0.01 0.09 -0.001" // cl_interp -0.001
alias lerpc + "incrementvar cl_interp 0.01 0.09 +0.01" // cl_interp +0.01
alias lerpc- "incrementvar cl_interp 0.01 0.09 -0.01" // cl_interp +0.01
bind "INS" "lerpa +"
bind "DEL" "lerpa-"
bind "HOME" "lerpb +"
bind "END" "lerpb-"
bind "PGUP" "lerpc +"
bind "PGDN" "lerpc-"
значення LERP під час гри можна подивитися включивши net_grah 1