CS:S
2007.05.27. 15:08
A vilg legjobb fps jtka!!
A Source motor
Source motor ms nven Valve Source Engine gyakorlatilag nem ms, mint egy 3D megjelentsre kpes motor, ami kimondottan a first person shooter jtkohoz ksztettek. Termszetesen a motor a Half-Life2-vel debtlt, de a csomagban mr akkor megtallhat volt a Counter-Strike:Source, amit azonban nem ugyanaz a Source motor hajt, ami a Hl2-t. A CS:S motorjt joggal lehet nevezni egy buttott Source motornak, a ksztk arra trekedtek, hogy gy alaktsk t az eredeti engine-t, hogy az a legjobb hlzati kihasznlst nyjtsa. Emellett jtkspecifikusan ne lehessen mindent megcsinlni, amit egybknt a Half-Life2-ben meglehetett (hordkra ugrls, stb.) Lnyegben sajnos pont ez vezetett ahhoz, hogy a jtknak taln mg a Half-Life2-nl is nagyobb gpignye lett, hiszen az optimalizlsnak ez lett a kvetkezmnye. Persze a butts nagy rszt szerver oldalon vissza lehet kapcsolni, ezzel a jtkot mg lvezetesebb lehet tenni (kzzel lehet trgyakat mozgatni), de ez nem ltalnos, hiszen alap llapotban ez nem lehetsges. A Source motorrl annyit rdemes mg tudni, hogy Havok fizikt hasznl a megjelentsekkor, a jtk tartalmaz Botokat, amik intelligensen kzlekednek a plykon, ltrt msznak, bombt raknak vagy tszokat menektenek ki. Megjelentsben messze fellmlja az elz verzikat, hiszen olyan technikkat hasznl mint a bumpmapping vagy a HDR. Egyetlen igazn nagy htrnya a motornak, hogy gyakorlatilag kzzel brmit ellehet benne lltani (konzolon keresztl), gy kt egy formn bekonfigurlt CS valsznleg a vilgon nincs.
A hitboxok
A Valve a CS:Source kezdeti llapotban nem nagyon foglalkozott a hitbox problmval, hiszen LAN-on mr az akkori verzi is teljesen megfelelt, de nem az interneten. Ennek lett kes pldja egy-kt Source Hitbox vide, ami futtzknt terjedt szt a vilgban, alapja ugyan volt ezeknek, a videknak is, azonban a valsgot nem teljesen fedtk. Ksbb mikor a jtk egyre nagyobb teret hdtott szksg lett egy frisstsre, ami hamarosan be is kvetkezett, br nagyon nem kellett hozznylni mgis megalkottk az j struktrt, ami kvetkeztben a hitbox mr teljes egszen a modellt kveti. Persze sokan mg gy is szdjk de legtbb esetben kiderl, hogy a jtkosok illetve a szerver belltsokban van a hiba s nem a hitboxban, amire rfogjk utna. A legtbben mg mindig azt hiszik, hogy a showhitboxes a vals hitboxokat mutatja mikzben az a szerveren, mutatja a modell llapott, ami rtelemszeren az interpolci miatt egy kicsit mindig elrbb ltszik, mint az ellenfl. sszessgben elmondhatjuk, hogy a hitboxnak nincsen olyan hibja, ami miatt jtszhatatlan lenne, s ltalban a felhasznlk azok, akik nem kpesek rendesen belltani a jtkukat.
 http://video.google.com/videoplay?docid=2325617804374182980
A Source halzatkezelse
ttekints
A Source motorra pl multiplayer jtkok kliens/szerver halzati felptsek. Nagy ltalnossgban elmondhat, hogy a jtk dediklt szervereken zajlik, s ezek nllsgot lveznek a motort hasznl jtk tpusa, annak belltsai, szablyai, s az oda csatlakoz kliensek (jtkosok) kezelst illeten. Ezek a kliensek a jtkosok szmtgpein fut programok, melyek kapcsoldnak a szerverhez, s a kettejk kztt zajl kommunikci kis adatcsomagok nagy gyakorisg kldsbl s fogadsbl ll (20-30 csomag msodpercenknt). Ebben a ktirny adatkzlsben a szerver folyamatosan frissti az adott jtkkal kapcsolatos adatokat a kliensnek, amiket az audio s video jelekk alakt t, valamint a kliens is folyamatosan frissti a szerver irnyba a perifrikrl (billentyzet, egr, mikrofon, stb.) mintavtelezett vltozsokat, s kldi mindezt el a szervernek tovbbi feldolgozsra. A kliensek csak s kizrlag a szerverrel folytatjk ezt a trsalgst, egymssal nem llnak kapcsolatban. Ellenttben az egyszemlyes vagy single (offline) jtkkal, egy multiplayer jtknak ppen ezrt, szmos j problmval kell megbirkznia, amit az eddig ecsetelt csomag alap adatcsere okoz.
Mivel brmely hasznlt hlzat svszlessge korltozott, a szerver nem engedheti meg magnak, hogy a jtkban bekvetkez vltozsokat rgtn s kln-kln frisstse minden egyes kliensnek, ezrt ehelyett a szerver megadott idkznknt pillanatkpeket kszt a jtk menetrl, s ezeket kldi el. A hlzati csomagoknak idbe telik, mg megteszik a szerver s a kliens kztti tvolsgot (lsd: ping) s mindez azt is jelenti, hogy a kliensnek a megkapott informcik alapjn felptett aktulis jatkllapota, rendre egy kis kssben lesz a szerverhez kpest. Termszetesen mindez igaz a kliens oldalrl rkez csomagokra is, teht a szerver is ksleltetett kliens oldali parancsokat s llapotjelzseket dolgoz fel. Radsul a kliensek ksse a szerverhez rendre ms s ms, ami (a hlzati kapcsolatok tpusbl ered klnbsgeken fell) az idvel is vltozik, fggen a tovbbi hlzati forgalmtl, vagy a kliens framerate-jtl is. Ezen egyidejsg-klnbsgek a szerver s a kliensek kztt, rtelemszeren vetnek fel problmakat, melyek csak rosszabbak lesznek ezen ktoldal kss nvekedsvel.
Jellemzen a gyors menet, akci jtkokban a legkisebb, nhny ezredmsodperces kss is "laggos" jtklmnyt okozhat, nehezebb teszi a msik jtkos eltallst vagy a mozg trgyakkal trtn manipulcit (hisz mshol vannak valjban, mint amit ltunk. a szerk.meg.). A svszlessg korltozsa vagy a nagy mrtk kss, knnyen okozhat informcivesztst a kommunikciban, ksznheten, a hlzati csomagok eltnsnek vagy elvlsnek.

Hogy mindezekkel a hlzati kommunikcival kapcsolatos, fentebb trgyalt problmkkal megbirkzzon, a Source motorja tbb mdszerrel kszbli ki, vagy legalbbis prblja kevsbe szembetnv tenni a jtkosok szmra mindezt. Ezen mdszerek az adat kompresszi (tmrts), interpolci (kitlts), predikci (elrejelzs/vrakozs) s lag kompenzci (kiegyenlts). Mindezen eszkzk szorosan ktdnek egymshoz, s valamely vltoztats valamelyikben komoly befolyssal lehet a tbbire. Ez a dokumentum nagy ltalnossgban rja le ezen rendszerek mkdst, funkcijt s egymshoz val viszonyt.
Az alapok
A szerver az adott jtk szimulcijt nem folyamatosan, hanem diszkrt vltozsok/vltoztatsokon keresztl vgzi, ez a jtk szvverse, s mostantl tick nven hivatkozunk r. Alaprtelmezsben a motor 66 ticket szimull msodpercenknt, de a klnbz modok sajt belltsokat hasznlhatnak. Pldul a Counter-strike: Source alacsonyabb, 33-as rtekkel dolgozik, hogy gy is cskkentse a szerver CPU terhelst. Minden szvdobbans, azaz tick utn, a jtk belltsaival sszhangban, a szerver feldolgozza a kliens oldalrl kapott parancsokat s ezek egyttese alapjn pedig szimullja a objektumok vltozst, befrissti azokat. Miutn a szerver lejtszotta magban ezt a szvverst, ellenrzi, hogy mely kliensekkel szksges vltozsokat kzlni, s ezek alapjn eldnti, hogy a szksges pillanatkpet megcsinlja-e. A szimulci pontossga rtelemszeren a tickrate nvekedsvel n, ugyanakkor mind a kliens, mind a szerver oldal svszlessgvel valamint a szerver CPU-jval szemben is nagyobb kvetelmnyeket tmaszt. A szerver adminja tetszs szerint llthatja a szerver szvverst a -tickrate futtatsi paramterrel, de nem felttlenl szerencss, mert a motor adott modja nem felttlenl fog a tervezett mdon mkdni a mdostott tickrate-tel.
ltalban a kliensek rendelkezsre ll svszlessge korltozott. Egy modemes kapcsolat esetn a kliens ltal kaphat maximlis adatmennyisg 5-7 KB/msodperc, csak hogy a legrosszabb esetet emltsk. Amennyiben a szerver nagyobb mennyisg adatot prbl kzlni mint amennyit a kliens befogadni kpes, a csomagveszts elkerlhetetlen. ppen ezrt a rate(bytes/msodperc) vltoz megfelel belltsval, minden egyes kliensnek meg kell mondania a szervernek, hogy az szemlyes kapacitsa a csomagok fogadsra mekkora. Ez a legfontosabb kliens oldali hlzati bellts, melynek pontos eltallsa elengedhetetlen az optimlis jtklmnyhez. A kliens szintn megadhatja, a cl_updaterate paranccsal, hogy msodpercenknt maximum hny pillanatkpet, csomagot hajland fogadni a szervertl, de a szerver soha nem fog tbbet kldeni az ltala legenerlt szvversekbl, mint amennyit a rate parancs ltal megadott svszlessgkorlt lehetv tesz, s termszetesen szintn korltja az, hogy maga a szerver hny ilyen szvverst generl le, teht hogy mekkora tickrate-en fut. A szerver zemeltetje korltozhatja a maximlisan elkldhet adatokat a mr emltett bontsban, teht a maximlis kliens oldalra nyl svszlessget az sv_maxrate, s a maximimalis lefrissts gyakorisgt a sv_maxupdaterate parancsokkal.
A kliens a perifrikrl ugyanazzal a tickrate-tel mintavtelezi az adatokat, s generlja ezekbl a szerver szmra feldolgozhat parancsokat (user commands), mint amin a szerver is fut. (igen praktikus, hisz gy a szervernek csak az ltalnos ksssel kell trdnie, hisz maguk a parancsok szinkronban lehetnek a szerver szimulcijval (a szerk.meg). Egy ilyen felhasznli parancs (mostantl usercommand) alapveten semmi ms, mint egy, az adott szvvershez tartoz pillanatkp a billentyzet s az egr sttuszrl. Ugyanakkor ahelyett hogy minden egyes tickre j csomagokat kldene a kliens a szervernek az ppen aktulis usercommandokkal, a kliens a usercommandokat tartalmaz csomagokat megadott idkznknt kzli csak. Mindez azt is jelenti, hogy kett vagy tbb usercommand is rkezhet ugyanazzal a csomaggal a szerverhez. A kliens a klds gyakorisgnak belltsra a cl_cmdrate parancsot hasznlja, ennek a nvelsvel javthat az interaktivitsa a jtknk, rzkenyebben fog reaglni a vltozsokra, viszont nagyobb kifele men svszlessget kvetel.
A jtk ltal kommuniklt adatmennyisg, .n. delta kompresszit, egy adott tmrtsi eljrst hasznl, hogy cskkentse a svszlessg ignybevtelt. Ez azt jelenti, hogy a szerver nem kzli a klienssel az sszes informcit, amit tickenknt szimull, hanem csak azon vltozsokat (delta snapshot), amik az utols megerstett frissts utn trtntek. A megersts gy trtnik, hogy minden elkldtt s fogadott csomaghoz, ami a kliens s a szerver kztt thaladt, egy szmot rendelnek, hogy mindkt fl tudja kvetni s ellenrizni az adatfolyam kontinuitst, folyamatossgt. (igen, ez alapjn tudja a kliens, hogy neki pocket loss-a van. a szerk. meg.) ltalban teljes pillanatkpet (teht ami nem delta snapshot), csak a jtk kezdetekor kld a szerver, vagy ha a kliens oldalon komoly csomagveszts jelentkezik. (mikor a kliens mr nem kpes sszerakni a pillanatkpet, s egyszerbb neki egy teljes frisstst krni, hisz a delta tmrts eredmnye sem lenne nagyon ms, mert az utols visszajelzett frissts ta majd minden vltozott. a szerk. meg.) A kliens manulisan is krheti a teljes frisstst a cl_fullupdate parancsal. (valsznleg a cstek elleni harcban lehet szerepe, de ez a parancs csak sv_cheats 1 szerveroldali belltssal mkdik. (A szerk. meg.)

Interpolci
A kliens annyi pillanatkpet, csomagot kap a szervertl msodpercenknt, amekkora a cl_updaterate paramternek az rtke. Ha egy adott dolog helyzete a jtkosnl, a kliens oldalon csak akkor s ott lenne kiszmolva s kirajzolva, ahol s amikor azt ppen aktulisan a szerver kzln, a mozg dolgok, modellek, trgyak, stb. darabosnak, akadoznak ltszannak, s szintn problmat jelentene a megjelentsben az elveszett, vagy figyelmen kvl hagyott csomagok is. A trkk ahhoz, hogy mindezt elkerljk az, hogy a renderelst, teht a megjelentend dolgok kiszmolst nem a legfrissebben megkapott pillanatkp, hanem idben az ezeltti valamelyik csomag tartalma szerint keszttetjk el, ezzel a jelenlegi pozcikhoz vezet animci folyamatoss tehet, hisz kitltdik a jelenlegi pozici, s az ezt megelz pozci kztti t. Ezt nevezik kliens oldali entits interpolacinak, kicsit magyarosabban kliens oldali folytonostsnak, diszkrt pozicik kztti kitltdsnek. (egyik sem magyaros, de gy kell elkpzelni mintha teniszben csak azt tudnnk hogy hol rt fldet a labda, s hogy hol tttek bele; csak akkor tudjuk szpen megrajzolni a labda replsnek az vet, ha nem abbl indulunk ki, hogy hol rt fldet, hanem hogy hol ttt bele a jtkos, majd a fldetrs, s az ts, mely idben elbb trtnt, kztt megmutatjuk, interpolljuk, hogy merrl rkezett a labda a fldetrs pontjhoz (A szerk. meg.). Ezen kitltds ki-, bekapcsolhat a cl_interpolate 0/1 vltoz segtsgvel. Egy msodpercenknt hsz pillanatkpet frisst kliens esetben, az aktulisan kvetkez frissts krlbell minden 50. ezredmsodpercben rkezik meg. Az elzek alapjn, ha az aktulis kp kiszmolshoz az 50 ezredmsodperccel azeltti pillanatkpet veszi alapul, akkor a dolgok a megjelentsben az utoljra megkapott pillanatkp, s az az eltti kztt tkletes kitlts valsthat meg. A Source motor az entits interpolcit 100 ezredmsodperces ksleltetssel vgzi alaprtelmezsben, ami azt jelenti, hogy 20 frissts esten, az egyik frissts elvesztsekor is kpes kt vals pillanatkp kztti helyzetkitlts elvgzsre. (ez a cl_interp parancs, mely a 100 ezredmsodpercnl 0.1-et jelent. Mikor az ember ezt az rtket 0-ra rakja, az 1/cl_updaterate rdik be automatikusan, mely pontosan azt jelenti, hogy ppen nem kpes a kt pozci kztti kitltsre, hisz az interpolci mrteke pont a kt megkapott pillanatkp kztt eltelt id (A szerk. meg.). Az albbi brn elmlzva lthatjuk a megjelents, frissts s interpolci kapcsolatt az id fggvnyben.
A kliens oldalra megrkez pillanatkp a 344-es ticknl trtnt, idben kifejezve a 10.30 msodpercnl. A kliens oldalon az id szalad tovbb termszetesen, s a szvversnek megfelel kvetkez pillanatban, jelen esetben 10:32 (current time), megjelent egy kpkockt, ami viszont a kliens jelenlegi idpillanata (client time) mnusz az interpolcis (kitlts miatt szksges) ksleltets, azaz 0.1 msodperccel cskkentett, 10:22-kor birtokolt pillanatkp alapjn szmtott pozci. Teht a megjelentett animci alapja pldnkban, a 340 s a 342 kztti pillanatkp.
Minekutn az interpolcis kss 100 ezredmsodperc, az interpolci akkor is mkdkpes ha a 342-es pillanatkp valamely oknl fogva elveszett. Ekkor ugyanis az interpolci mg mindig hasznlhatja a 340 s 344-es pillanatkpek kztti kitltst. Ha tbb mint egy csomag veszik el, a kitlts megbzhatatlann vlik, hisz nincs elg informci a birtokban hozz. Ebben az esetben a renderels extrapolcit hasznl (cl_extrapolate 1), s megprblja egyszer, a birtokban lev informcik alapjn, egyenes arnyossgon alapul mintaillesztssel betippelni, hogy hol lehetnek a dolgok. Az extrapolci csak 25 szzadmsodpercig mkdik ( cl_extrapolate_amount) csomagveszts esetn, mert ezutn a motor gy tli meg, hogy a jsls hibahatra tl alacsonny vlik, teht kevsb valszn, realitst vesztettnek tekinti sajt extrapolcijt, kiegsztst.
Predikci
Tegyk fel, hogy egy jtkos 0.1 msodperces ksst szenved el a hlozata miatt, s elindul elre. Az informcit, hogy elindult, teht a +FORWARD gomb lett nyomva, egy usercommand formjban elszr trolja, majd tovbbtja a kliens a szervernek. Ekkor a szerver feldolgozza ezt, s a jtkos a szerveren szimullt vilgban megindul elre. Ekkor a vilg sttusza megvltozik, s a kvetkez pillanatkp, amit a tbbi jtkosnak lefrisst, mr tartalmazza ezt a megvltozott llapotot. Teht 0.1 msodperccel azutn hogy elindult, mindenki ms, kztk is, rzkeli hogy elindul, s ez a kss minden jatkos brmely akcijra is igaz, legyen az mozgs, lvs, stb., s csak roszabb vlik nagyobb kss esetn.
A jtkos akcija s a szervertl rkezett vlasz ksse, mely egyben a vizulis megjelens ksst is jelenti, szokatlan, termszetellenes rzst klcsnz az egsz jatknak, neheztve a precz mozgst s lvst. A kliens oldali predikci (cl_predict 1) segt megszntetni mindezt, cskkentve a ksst, s gy a jtkos a beavatkozsait sokkal kzvetlenebbnek rezheti. Ahelyett hogy arra vrna a kliens, hogy a szervertl megrkezzen a sajt pozicijnak a frisstse, a kliens nmaga megbecsli a sajt usercommandjnak az eredmnyt. Ehhez a kliens pontosan ugyanazokat a belltsokat hasznlja, amit a szerver, s miutn a predikci befejezdtt, a jtkos mr az j pozicijban fogja ltni magt, fggetlenl attl hogy a szerver t mg a rgi pozcijban ltja.
A kliens 0.1 msodperccel ezutn kapja meg a szervertl azt a pillanatkpet, amiben azok a vltozsok vannak benne, amiket mr vgrehajtott, s semmi ms dolga nincs, mint sszehasonltani a szerver ltal megadott vltozsokat a sajt maga ltal vgrehajtottakkal. Amennyiben ezek nem egyeznek, predikcis hiba lpett fel, ami azt mutatja, hogy a kliensnek nem lltak birtokban megfelel informcik a jatktrben rajta kvl szerepl dolgokrl, mikor a usercommandot vgrehajtotta. Ekkor a kliens fellbrlja magt a szervertl kapott pillanatkp alapjn. Amennyiben a cl_showerror 1 be van kapcsolva, a kliens ltja mikor kvetkezik be ilyen hiba, ugyanakkor ezen hibk kijavtsai a jatkban is szlelhetek, mert kp ugrshoz vezetnek. Ahhoz hogy a lthat kpen ez kevsbe tkrzdjn vissza, a predikcis hiba fokozatosan javtdik ki egy adott idintervallum alatt (cl_smoothtime). A predikcis hiba kijavtsnak az elmosst szintn ki lehet kapcsolni, a cl_smooth 0 kapcsolval.
Ez a fajta elrejelzs vagy predikci csak akkor mkdhet, ha a kliens pontosan tisztban van mindazzokkal az informcikkal amivel a szerver is br. Termszetesen ez az esetek tredkben lehet csak gy, hisz a szerver tbbet lt, s tbb bels informcival rendelkezik mint a kliens. A kliens csak egy apr szelett lthatja az egsz jatknak, pont annyit, hogy idelis esetben meg tudja mindazt s csakis azt jelenteni, ami r tartozik. ppen ezrt csak azt tudhatja pontosan a kliens, ami maga, gy a predikci csak s kizrlag a sajt mozgs esetben lehet pontos, brmi amibe ms, interaktv objektum szerepel, mr elvbl elveszti azt a lehetsget, hogy r nzve predikcit lehessen alkalmazni.
Lag Kompenzci
Tegyk fel, hogy egy jtkos rl a clpontra 10.5-kor. Az informci, hogy jtkosunk megnyomta a tz gombot, egy usercommandba fog megrkezni a szerverre. Mikzben a csomag amiben ez a usercommand szerepel halad t a hlzaton, a szerver tovbbra is folytatja a jtk szimulcijt, s a clpont elmozoghat egy msik pozciba, s ezltal mire a csomag 10.6-kor megrkezik a szerverre, a szerver nem lt tallatot, holott jtkosunk pontosan clzott. Ennek a hibnak a kikszblsre szolgl az sv_unlag 1 .
A lag kompenzcis rendszer emlkezik minden jtkos pozcijra kb. 1 msodpercig visszamenleg (allthat az sv_maxunlag vltozval). Amennyiben egy usercommand befut a szerverhez, a szerver a feldolgozsakor megbecsli,hogy az adott parancs mikor keletkezett. Mindez az albbiak alapjn trtnik:
A parancs kiadsnak idpontja = A szerver aktulis idpillanata - a kliens ksse - a kliens interpolcija
Ebben az esetben a szerver a megadott szmts alapjn visszahelyezi a szerveroldalon a jtkosokat abba az idpoziciba, amikor a kliens oldali parancsot kiadtk, s ez alapjn ellenrzi, hogy milyen kvetkezmnyei vannak az adott usercommandnak. Miutn a usercommand lefutott, a szerver visszahelyezi az eredeti pozcikba a jtkosokat. A szerveroldalon, amennyiben nem dediklt szerverrl, hanem .n. listen szerverrl van sz, az sv_showimpacts 1 parancs segtsgvel megjelenthetv tehet a klnbsg a szerver oldali s a kliens oldali hitboxok helyzete kztt.

Ez a kp egy ilyen szerveren keszlt 0.2 msodperces lag belltssal (hasznlva a net_fakelag parancsot), a piros hitbox jelzi a clpont pozcijt a kliens oldalon 0.1 msodperccel ezeltt. Azta a clpont folytatta a bal irny mozgst, de hla a beptett lagnak, ez az informci mg "utazik a szerver s a kliens kztt". Miutn a lvsre vonatkoz usercommand megrkezett, a szerver visszahelyezte a hitboxot abba a pozciba, ahol lennie kne (kk hitbox). A szerver lekveti a lvst, s nyugtzza a tallatot (lsd vr). Az is jl ltszik, hogy a kliens s a szerver hitboxok nem fedik egymst tkletesen, de egsz j kzelts, figyelembe vve hogy a legkisebb eltrsek is egy ilyen jtkban a gyorsan mozg modelleknl, centimteres eltrseket okozhatnak. A multiplayer jtkok nem pixelpontosan jegyzik a tallatokat, s a pontossg nagyban fgg a tickrate-tl s a clpont mozgsi sebessgtl. Mint azt mr emltettk, a magasabb tickrate nveli a tallatrzkels pontossgt, de majd minden erforrs tekintetben tbbet is kvetel.
Joggal merl fel a krds; Mirt olyan kompliklt a szerver oldalon a tallat szlelse? Sokkal egyszerbb lenne a szervernek elkldeni a pozcikat csupn, s minden mst a kliensre bzni, elrve ezzel a pixelpontossg tallatfelismerst. A kliens csak kzln a szerverrel amikor "tallat"-ot vitt be, s megmondan kit s hol rt a tallat. Sajnos nem megengedhet, hogy ilyen fontos dnts kliens oldalon zajldjon le, mert nem lehet bzni a kliensben. Mg akkor is, ha a kliens "tiszta", s VAC fut rajta, a csomagok akkor is mdosthatak egy kztes harmadik gp ltal. Ezen "cheat proxik" kpesek lennnek "tallat"-okat csempszni a rajtuk thalad csomagokba, gy hogy a VAC ezellen semmit nem tudna tenni. (nem mintha amgy akrmit is tenne a VAC. A szerk. meg.)
A hlzati kss s lag kompenzci knnyen eredmnyezhet paradox, letszertlen szitucikat. Pldul tallatot szenvedhet valaki, aki nem is ltja az ellenfelet, mert az mr takarsban volt. Ezek a hibk kijavthatatlanok, mert a csomagok sebessge viszonylag lass, s soha nem kzeltheti meg a fny sebessgt, (legalbbis a kzeljvben), s gy az lethsg mindenkppen csorbt szenved.
NetGraph
A Source motor rengeteg lehetsget s eszkzt knl, hogy a hlzati belltsok helyzett ellenrizni lehessen. Ezek kzl a legnpszerbb a netgraph, melynek tbb verzija is elrhet a jtkban. Mi most a netgraph 2 paranccsal foglalkozunk. A berkez csomagokat balrl jobbra fut vonalak mutatjk, s a magassga a vonalaknak a csomag mretre utalnak. Amennyiben sznet ltszik a vonalak kztt, az nem rtelmezhet, vagy elveszett csomagot jelent. Mindezek felett a vonalak sznkddal vannak elltva, amelyek pedig a csomagot alkot informci tpusra utalnak.

A netgraph alatt az els sorban az fps, (msodpercenknt megjelentett kpkockk) az tlagos kss, s az updaterate, teht a frissts gyakorisga lathat, a msodik sorban az utols megrkezett csomag mrete, az tlagos bejv svszlessg, s a msodpercenknt tlagosan kapott csomagok szma lthat. Mg a harmadikban, a szervernek kldtt csomagokra vonatkoz informcik lthatak.
Forrs:CS2HU
|