Interpolacija i ekstrapolacija (ex_interp)

ex_interp – “magično” podešavanje za koje mnogi imaju stav kako treba podesiti, ali skoro niko nema objašnjenje. Pa evo, slijedi objašnjenje…

Spomenuta komanda određuje koliko će vaš CS da interpolira, odnosno kad će krenuti ekstrapolirati.

Podsjetimo se na klijentsku i serversku stranu (članak: Šta je ping?)– ono što vidite na ekranu nije isto kao ono što server “vidi”. S obzirom na tu razliku, vaš CS radi aproksimacije (predviđanja) pozicija igrača, odnosno, na osnovu posljednjeg primljenog paketa i onog prije njega, CS predviđa trenutnu poziciju, jer “zna” da postoji kašnjenje u odnosu na server.
Kad ne bi bilo toga, sve na ekranu bi vam se dešavalo isjeckano, odnosno sve bi se pomjeralo u skladu s primljenim paketima. Ovako je vama slika tečna, ali postoji nesklad između onoga što vi vidite na ekranu i onog što se u istom trenutku dešava na serveru.

Pokušajmo slikovito:

Grubo nacrtano i rečeno, neka se igrač kretao po crnom krugu, a ćoškovi crvenog mnogougla neka predstavljaju pristigle pakete. CS na osnovu svaka dva pristigla paketa (uzastopni uglovi) pretpostavlja gdje se igrač nalazi između njih (kružna linija). Ako predviđa pravom linijom, to znači da će u CS-u, osim u trenucima kad je paket primljen, uvijek prikazivati samo gdje se igrač otprilike nalazi i prikazivat će vam njegovu kretnju kao crveni mnogougao umjesto kruga – sjeckavo, a ne tečno.

Da bi CS pretpostavljao gdje se nalazi igrač potrebno je da ima dva paketa – trenutni i prethodni, te između ta dva paketa CS interpolira kretanje. Što je veće vrijeme interpolacije (ex_interp), bit će prikazivane starije pozicije igrača. CS će na pakete čekati maksimum toliko vremena prije nego što krene da ekstrapolira. Za razliku od interpolacije koja ne pretpostavlja toliko loše gdje se igrač nalazi, ekstrapolacija se vrši na osnovu prethodnog paketa (u smislu ako se igrač kretao u nekom pravcu, pa, hajde, valjda se i dalje kreće). Na kraju, kad istekne vrijeme i za ekstrapolaciju, igrač laguje, tj. vidi se na jednoj poziciji, a onda skoči na neku sljedeću. Drastičan primjer ekstrapolacije ste najbolje mogli da osjetite kad server “zabode” na sekund – vi se krećete u nekom pravcu, a onda nešto zabode i buvalno vas vrati unazad.

Šta se tu u stvari desilo:

1. Vi se krećete,
2. Prestaju da stižu paketi,
3. Interpolacija radi onoliko koliko vam je podešen ex_interp,
4. Po isteku, kreće ekstrapolacija vašeg CS-a po kojoj vi i dalje idete u istom pravcu,
5. Konačno stigne novi paket (s informacijom koja je zastarjela u odnosu na ekstrapoliranu sliku, ali je informacija sa servera “starija” od one na vašem računaru),
6. CS vas vraća na poziciju koju server ima zabilježenu kao posljednju.

Naravno, to je drastičan i relativno rijedak slučaj, ali se manji primjeri toga dešavaju stalno. U svakom slučaju, interpolaciju, a pogotovo ekstrapolaciju treba svesti na minimum.

One thought to “Interpolacija i ekstrapolacija (ex_interp)”

Komentariši

Vaša email adresa neće biti objavljivana. Neophodna polja su označena sa *

This site uses Akismet to reduce spam. Learn how your comment data is processed.