Idézet: Pietrosz - Dátum: 2006. júl. 4., kedd - 0:44
Most úgy néz ki 1 hónapig még lesz netem, szóval addig tudok CS-zni is

Favorites is megjavult szerencsére.
Viszont azt valaki megmagyarázhatná, hogy mi viszi rá az adminokat arra, hogy a cl_interp-et 0.01-re állítsák a szerveren, ezzel tönkretéve a játékomat

Mi az előnye? Mert nemigaz, hogy csak nálam az a hatás, hogy szinte mindenki akadozva mozog, ha 0.01-re van állítva. Nagyon zavaró tud lenni.

A CSP a CAL-on pl kötelező, és az 100 tickes szervereken zajlik interp 0.01-et erőltetve. Működik így a téma, főleg kislétszámú warokon, izmos szervereken, spectek nélkül. De nem simán.
De, nézzünk a dolog mélyére egy kicsit.
Vegyünk egy 100tickes szervert, mert ugye ezt mondják a legjobbnak. Egy ilyen szerveren (mint ahogy bármilyen 25 tick feletti, tehát 33, 66 stb szerveren) a legnagyobb csatákban a kiküldött frissítések mennyisége kb 25-50 közötti lesz (logikusan 50 csak a min 50 tickes szerveren), szimplán azért, mert azt a procit még nem találták fel szerverbe sem, ami ennél jelentősen többet nyomna ki ilyen terhelés mellett.. Nem sokáig, csak a pörgős pillanatokban, tehát pont ott ahol "számítana". A 100 tickhez tartozó elméleti 100 update/sec tehát gyakorlatilag ritkán, csak igen nyugis pillanatokban fenntartható. Ez az érték tehát másodpercről másodpercre változik, és a netgraphon ugye követhető is.
Tegyük fel a legrosszabb esetet, amikor erős csatában 25-re esik leg 1-2 másodpercre a z update. Ez ugye azt jelenti, hogy 40ms-onként érkezik 1 frissítés (1000ms/25).
Ha az interp 0.1 (default), akkor ez 100ms-os mintavételezési időt jelent. Ebbe logikusan 40ms-onként érkező csomagok esetén beleesik 2db, amiből tud interpolálni a kliensed, és még ilyen helyezetekben is így sima lesz a mozgás, mert átmenetet tud képezni. Van tehát 1 helyzete amiből kiindul, és ehhez 2 másik, ami 3-ból egy igen jókis scene-t tud kalkulálni, és renderelni, úgy, hogy mindenki a pontos helyén van, és sima mozgás van. Ehhez meg kell érteni azt, hogy a kliensed sosem mutat realtime eseményeket. MIndig buffert épít, az elmúlt X ms eseményeiből, amiből aztán interpolációval egy számodra "sima", élvezhető folyamatsort tár eléd. Ez az X ms-os buffer a cl_interp.
Vegyük most azt a helyzetet, amikor az interp 0.01, tehát 10ms. 40ms-onként jön 1 update, tehát a 10ms-os ablakba logikusn EGY SEM esik bele. Mit fog tenni? Tippel. Ami nem biztos, hogy utána bejön. Igy amikor a szerver a következő beleeső packettel korrigálja a látványodat, mindamellett hogy darabos lesz a mozgás, még vissza is fog ugrálni meg mittomén, szal hülyén zajlanak le a dolog. ISMÉTLEM: heves harc közben, amikor az update /sec lemegy 25 környékére.
Lássuk mi limitálhatja ilyen 25 per sec környékére az updateket? Minden! Szerver fps, tickrate, kliens ratek, kliens FPS!
Vegyünk egy átlagos harci helyzetet.
Szerver tickrate 50 (de ez bármi nagyobb is lehetne, 66, 100 stb, mert nem számít!), kliens ratek megfelelően 80 felett, kliens fps valahol 40 körül (az egyszerűség kedvéért), a szerver éppen 40 updateet képes kitolni minden kliens felé egyszerre.
Kliens interp 0.01-en: 40 update /sec -> 25ms-onként jön egy update. A kliens 10ms-os pufferébe megint nem tud interpolálni, tehát akadozik egy jót, és történik valami, amit a kliens bazira nem tud követni.
Kliens interp 0.05-ön: 40 update /sec ->25ms-onként jön egy update. A kliensnek ezúttal 50ms-os puffere van, amibe minimum 1, de optimális esetben akár 2 update is belefér. Magyarán: minimum 1 update rendelkezésre áll az interpolációhoz, a kliens sima mozgásokat lát, követni tuja az eseményeket.
Kliens interp 0.1 (def): 40 update/sec -> 25ms-onként jön egy update. A kliensnek ezúttal 100ms-os puffere van, ebbe akár 4 update is beleesik. Erőteljes redundancia, hiszen már 1 is elég lenne (de ilyenkor belekalkulájuk, hogy néha lehet packetloss is, tehát a 2 nem árt). 2 feleesleges packetünk van, ami nem szól bele a dolgokba érdemben, csak eszi a cpu-t és a sávszélt.
Mivan akkor, ha 100 tickrates a szerver, a ratek 100on vannak, és pl 50 méterre egymással szemben csak ketten vagytok már a mapon életben (jó nincsenek spectálók se). A szerver ki tud tolni mondjuk (nem akarjunk túl nagyot mondani) 90-et. Nagyjából 12ms-onként jön egy update.
A másik a rate limitálás, ugye durván 20-25kb/s-ban. Logikusan, ha van 20 ember egy szerveren, aki egyszerre harcol, akkor elég méretes packetek születnek. Másodpercenként 100 packet azt jelentené, hogy 1 packetre csak 0.2, 0.25kb jutna. Tehát nem férünk el benne, csökkeni fog az updaterate 100ról.
FPS? Hol van az átlagusernek heves tűzharcban több fps-e, mint 20-40? Sehol. Tehát logikusan, a szerverhez visszaküldött helyzetfrissítés is max ennyi lesz másodpercenként, tehát a szerver adatok híján ugyancsak nem fog több helyzetfrissítést szétküldeni. De még ha a szerver tudna is küldeni többet mások adatai alapján, a mi kliensünknek hol számít pl 60 update / sec, ha csak 30 képkockát tud kitenni másodpercenként? Elpocsékolt cpu, és sávszél, megint.
Az optimális eset tehát? 100 tick szerver, stabil 100 update /sec, ratek 100on, kliens fps stabil 100on. Na ehhez lehetne interp 0.01-et állítani, mert 1 plusz csomag már biztosan beleesik

Nos, ez egy néhány opteronos izmos szerveren előállítható lenne 1vs1-ben egy szerveren, ha az updatek nem haladják meg a csomagonkénti sacc 12-13kb-ot fejenként. Mondjuk nem mozogtok, és awp-vel egy-egy lövéseket adtok le, akkor tuti alatta van

És akkkor most ehhez kezdjük el hozzáadogatni ha több player van, ha mind mozog, ha mind lő, ha egyiknek sincs stabil 100 fps-e...
Hogy akkor mégis miért erőltetik sok helyen a 0.01 interpet? Egyszerű. Az interp ugye s-ot jelent, tehát ezesetben 10 ms. Logikusan tehát, a látványod, a és a szerverhitbox ingame ennyivel + a pingeddel lesz eltolódva egymáshoz képest. Ráadásul, ami ugye az engine jelenlegi egyik vitatott gondja, hogy még a 0.01-es interp érték is valamiféle ismeretlen forrásból + 66ms késleltetést hoz a témába. Tehét 10ms+66ms+24ms, gyakorlatilag 0.1s-os eltérés van a szerverhitbox, és a kliens látvány között. Ezt nem nehéz kitalálni, hogy minél gyorsabb, netán ellentétes irányú mozgás van a vadász és az áldozat között, annál nagyobb eltérést fog jelenteni pixelben. Természetesen a szerver ezzel kalkulál, tehát az update packetekkel a klienseket lényegében visszahelyezi az időben, tehát te sosem realtime eseményeket látsz. Igy fordulhat elő, hogy valaki fut el melletted, és neked mögé kell lőnöd látszólag ahhoz, hogy eltaláld. Na ez az anomália ami növekszik az interp emelésével. Tehát ha valaki bevállalja a jobb interpolációt, szebb mozgásokat, kevesebb "pedig belelőttem" típusu esményt, annál nagyobb ilyen jellegű gondot is el kell viselnie. Ezek törvényszerű dolgok, amik a késleltetésekből, meg a sokszáz más paraméterekből, és számítási pontatlanságokból adódnak.
Szerkesztette: Locutus 2006. 07. 04. 12:42 -kor