De multe ori stateam si ma intrebam: "Oare la ce ma ajuta acest ex_interp, ce face el defapt ?".
Ei bine, am dat un search pe google si am gasit o explicatie destul de clara.
Tin sa precizez de acum ca nu eu am scris prezentarea, eu doar am gasit-o undeva si m-am gandit sa o postez si aici.
Prezentarea ce urmeaza nu-mi apartine, va rog nu-mi multumiti.
Să zicem că trenul X pleacă din gară în minutul 0. Peste 5 minute, știm că trenul a parcurs o distanță de 2 kilometri (2000 metri). Să presupunem prin absurd că viteza trenului era constantă (adică a plecat brusc din gară cu 25 km/h și a menținut acea viteză). Atunci cu siguranță putem spune că la minutul 2.5 (jumate din timpul total) a parcurs 1 kilometru (jumate din distantă). La fel cum putem spune că la minutul 1.25 (un sfert din timpul total) a parcurs 500 metri (un sfert din distanță). Ghicirea aceasta se numește interpolare.
Ok, și ce legătură are trenul ăsta cu cs-ul? Gândește-te la tren ca la un pachet de date trimis de server în care se găsesc pozițiile jucătorilor. Serverul trimite aceste pachete doar de câteva ori pe secundă, nu încontinuu. Știind intervalul acestor pachete (odată la câte milisecunde primești un pachet, sau odată la câte secunde știm exact distanța parcursă de un jucător), putem ghici poziția unui jucător între aceste intervale.
În cazul nostru, intervalul acestor pachete este dat de cl_updaterate, care de obicei este setat la 101 (adică 101 pachete pe secundă). Acum te vei întreba, de ce ne mai trebuie o altă setare dacă știm intervalul. Nu poate cs-ul să-și calculeze singur asta? Ba da, poate, dar dacă ai o conexiune slabă cu serverul, nu vei primi toate aceste pachete, sau le vei primi întârziate. cl_updaterate spune serverului cât de repede vrei să primești datele, nu că le-ai și primi atât de repede. Deci ai nevoie de o altă setare pentru interpolare (ghicire). Aceasta este desigur ex_interp, care este diferența de timp între două pachete care crezi că este reală. Valoarea 0.01 la ex_interp înseamnă că tu bănuiești că următorul pachet are să vină peste 0.01 secunde, sau 10 milisecunde. Valoarea 0.1 pe de altă parte o pui când următorul pachet are să vină peste 0.1 secunde, sau 100 milisecunde. Dacă ești sigur că ai o conexiune stabilă cu serverul, valoarea aceasta ar trebui să o pui la 1/cl_updaterate, adică inversul numărului de pachete pe secundă. Așadar, dacă ai cl_updaterate setat pe 100, ex_interp ar trebui să fie 0.01 (1/100), dacă îl ai setat pe 10, ex_interp ar trebui să fie 0.1 (1/10) și tot așa.
Ce se întâmplă dacă setezi greșit valoarea lui ex_interp?
Să revenim la trenul nostru. Să presupunem că nu știm timpul în care trenul parcurge cei 2 kilometri și că aproximăm la 10 minute. Atunci putem presupune că în 5 minute, trenul a parcurs doar 1 kilometru, când de fapt, trenul a mers 2 km. În cs, dacă setezi ex_interp mai mare decât ar trebui, jucătorul ar merge mai departe decât trebuie, și la următorul pachet primit, va reveni la poziția corectă (ceva gen, 2 pași înainte, 1 pas înapoi). Analog se întâmplă și dacă setezi valoarea lui ex_interp mai mică: jucătorul va merge mai puțin decât trebuie, și la următorul pachet primit, va sări la poziția corectă (1 pas înainte, 2 pași înainte).
Setarea greșită a lui ex_interp nu afectează doar estetica jocului, ci și gameplay-ul. Să zicem că ești cu awp-ul cu ținta la maxim și că la o distanță destul de mare trece un inamic perpendicular pe direcția ta (cazul trasului din bază tero la porți mijloc pe dust2). Dacă tu tragi între 2 pachete primite, există șansa destul de mare să nu fi nimerit jucătorul, chiar dacă tu ai pus ținta pe el, asta pentru că el, de fapt, este mai în față în cazul în care ex_interp este mai mic, sau mai în spate, în cazul în care ex_interp este mai mare.
Nu ai înțeles nimic din ce am spus aici? Nici o problemă. Pentru tine, cea mai bună setare este 0. (adică scrii în consolă ex_interp 0). Clientul îți setează automat valoarea în funcție de cl_updaterate.
Pentru ceilalți, succes la configurări.