Tilbage til forsiden
World of Warcraft - Let's Play!

Guides

Netcode i CS:Source

Tirsdag d. 15. august 2006 - kl. 12:38
Der findes næppe bedre og så præcise hitboxes, som det er tilfældet i CS:Source. Alligevel er der problemer, som vi i denne guide har set nærmerer på Netcode i CS:Source
Skrevet af:   Cave

Indledning

Formålet med denne guide er at introducere Netcode i CS:Source. Som seriøs spiller er det væsentligt, at man kender til Netcode, herunder hvilke indstillinger der er mest hensigtsmæssige at køre med. Derfor vil guiden både gennemgå, hvad Netcode er, hvilke problemer der er, samt til sidst komme med anbefalinger til, hvilke kommandoer man bør køre med,

Selvom Netcode kan være svært at forklare uden brug af en masse engelske termer, forsøger vi alligevel med til tider alternativ oversættelser. Vi har før været inde omkring Netcode, herunder interpolate-kommandoen (se guide), men da vi finder det nødvendigt med en mere uddybende artikel omkring emnet (også i lyset af at LAN arrangementer nærmer sig), mener vi, der er brug for denne guide.

Hvad er Netcode

Kort sagt kan Netcode beskrives som den måde, hvorpå den computer, man spiller fra (omtales klient i det følgende), og server kommunikerer. Klient og server kommunikerer naturligvis med hinanden, når man spiller, ved at sende små datapakker (data packets).

 Klienter modtager en masse information om, hvad der sker på serveren, hvorudfra der genereres video og lyd.
 Serveren modtager data om, hvad du foretager dig med keyboard, mus og mikrofon, og bearbejder disse data.

Denne kommunikation sker kun imellem server og klienter, og der er således ingen direkte kommunikation imellem klienter. Alle disse data sendes igennem datapakker (packet-based communication), og det er her, Netcode har dens funktion.

Eftersom mængden af data, der kan sendes imellem server og klienter er begrænset, så kan serveren ikke opdatere klienterne om enhver ændring, som der sker på serveren. Derfor tager den nogle øjebliksbilleder (snapshots) og sender videre til klienterne. De allerede omtalte datapakker tager en vis tid at transportere imellem server og klient, hvor ping'en er en faktor. Disse to forhold - begrænset mængde af data, der kan sendes, samt forsinkede datapakker - gør, at klienten altid er bagud i forhold til serveren. Med andre ord er det, du ser på din skærm, forsinket, i forhold til det, der i virkeligheden sker på serveren. Her snakker vi om milisekunder. Denne forsinkelse bliver dog ikke mindre af, at nogle datapakker mistes i trafikken mellem server og klient.

I hurtigere FPS spil såsom CS:Source kan bare få milisekunders forsinkelse skabe en følelse af et laggy gameplay. Derfor kan det være svært at ramme andre. I yderst led kan en dårlig opsat server og en stardard klient config betyde, at hitboxes er så forsinkede som illustreret nedenfor:


Valve har ved forskellige teknikere formået at løse disse problemer med forsinkelse - eller i det mindste gjort dem mindre synlige for spillere. Med en samlet betegnelse kan teknikerne betegnes som en klient/server-netværksarkitektur - eller bare Netcode, som oftest bruges på forskellige fora.

Problemer med Netcode

Source Engine'en simulerer spillet ved forskellige ticks, som ved en stardardopsat server er 33 ticks per sekund (tickrate 33 server). Ved hvert eneste tick opdateres det, der sker på serveren. Jo flere ticks per sekund, desto bedre kan spillet simuleres. Men en tickrate 100 server tager derimod også betydelig mere cpu kraft end en tickrate 33. Ligesom en højere tickrate kræver mere af den computer, en server står på, så kræver en højere tickrate også en større mængde data fra klienterne. Sidder man eksempelvis bag en modem, vil man i værste tilfælde kun kunne modtage 5-7 kb per sekund, hvilket vil betyde, at en masse datapakker går tabt. Det er kommandoen rate (kb/sec), der bestemmer, hvor store disse datapakker skal være. Det er derfor meget vigtigt, at denne kommando er sat korrekt. Udover rate-kommendoen bestemmer cl_updaterate, hvor mange øjebliksbilleder per sekund, man ønsker tilsendt. Hvorimod cl_cmdrate angiver, hvor mange datapakker per sekund, man vil sende til serveren.

Efter denne meget korte introduktion til tickrate, rate, cl_updaterate og cl_cmdrate, vil det nedenstående afsnit koncentrerer sig om de to store problemer, der er med netværksarkitekturen.

Hvis man kører med en standard config fil, modtager klienter 20 øjebliksbilleder per sekund, altså hvert 50. milisekund (cl_updaterate 20). Eftersom gameplay'et vil virke meget laggy med så få billeder, går spillet tilbage i tiden for bruge tidligere øjebliksbilleder til at gøre billedet flydende. Det forklares bedst med nedenstående citat:

By default, the client receives about 20 snapshot per second. If the objects (entities) in the world were only rendered at the positions received by the server, moving objects and animation would look choppy and jittery. Dropped packets would also cause noticeable glitches. The trick to solve this problem is to go back in time for rendering, so positions and animations can be continuously interpolated between two recently received snapshot.

Denne teknik kaldes "entity interpolation". Det interessante er, at Source - med en normal config - interpolere over en periode på 100 milisekunder (cl_interp 0.1), som nedenstående illustration viser (klik på billedet for at gøre det stort):
















Hvis et billede bliver tabt i trafikken mellem server og klient, vil spillet tage det forrige billede. Men pointen er - med cl_interpolate 1, at der altid vil være 100 milisekunder forsinkelse, når cl_interp er på 0.1, som er den mindste værdi, den kan sættes på. Dette er det ene problem.

Det andet problem opstår, når cl_interpolate er slået fra (på 0). Her vil der ikke være en forsinkelse på 100 milisekunder i og med, at interpolate teknikken er slået fra. Derimod vil gameplay'et virke laggy. Selvom cl_interp forsinkelser ikke længere er der, så vil der alligevel være en meget lille forsinkelse - hvad enten man spiller på samme computer, som serveren er på, eller ej. Det er desværre ikke noget, vi kan forklare, men du kan selv udforske det ved at lave en server og skrive følgende kommandoer i konsollen:

 bot_add_ct
tilføjer en bot (skal være på samme hold som en selv)
 sv_cheats 1 muliggør cheat kommandoer
 mp_friendlyfire 1 friendly fire
 cl_interpolate 0 deaktiverer interpolate i spillet
 bot_mimic_yaw_offset 360 Disse to kommadoer gør, at botten foretager
det samme som en selv
 bot_mimic 1

Start med at gå sidelæns, når du starter foran botten, mens du sigter på bottens hoved - og skyd. Placer derefter sigtekornet lige bag ved bottens hoved, gå sidelæns igen og skyd. Derefter vil du se, at botten mister health, som betyder, at hitboxes ikke er optimale, da du jo ikke ramte hovedet. Trods dette, er det langt fra et så stort problem, som forsinkelsen ved cl_interpolate 1. Og indtil nu har vi ikke fundet en forklaring på dette problem.

Hvilke indstillinger ingame?

Spørgsmålet er så, hvad man skal bruge ingame - interpolate 1 eller 0. I starten af CS:Source's levetid valgte de fleste at bruge cl_interpolate 0, idet forsinkelsen var meget mere beskeden uden interpolate end med - det er den i øvrigt også i dag efter mange opdateringer af Source Engine. Såfremt kampe bliver spillet på tickrate 100 servere, så vil det mest optimale være at køre uden interpolate, fordi man hermed undgår den 100 milisekunder forsinkelse, og spillet kører nogenlunde flydende på grund af de mange ticks per sekund. Alligevel er cl_interpolate 1 blevet det mest acceptable at kører med efter mange diskussioner omkring emnet. Dette er også blevet hjulpet godt på vej af server plugins såsom zblock max (findes i download sektionen), der blokkerer for cl_interpolate 0.

Det er især folkene bag online og LAN arrangementerne, der har sat standarden for fairplay i dette spørgsmål. Det kan dog virke besynderligt, at det er netop er interpolate 1, der er blevet valgt. Sagens kerne er dog, at en bestemt værdi af interpolate er blevet accepteret på scenen. Hvis dette ikke var tilfældet, ville de, der kørte med interpolate 0, have en betydelig fordel over for de, der kører med interpolate 1.

Det er nok ikke alt, man som læser forstod af denne artiklen, eftersom emnet er ret teknisk og dermed vanskeligt at forklare. Derfor sluttes artiklen af med at nævne de indstillinger, man som fairplay-spiller bør have i sin autoexec.cfg, se CS:S guide til begyndere (bemærk at disse er minimum-indstillinger, oftest medtages cl_smooth 1):

 cl_interpolate "1"
cl_interp "0.01"
cl_updaterate "100"
cl_cmdrate "100"
rate "25000" (hvis man har en bredbåndsforbindelse)

Benytter man sig ikke af disse indstillinger, vil det oftest hurtigt blive opdaget af ens modstandere, da de fleste erfarne spillere kan se forskel på henholdsvis dårlige og optimale klient-indstillinger, når det handler om netcode. For de dovne, som ikke har disse indstillinger, har vi uploaded en autoexec.cfg fil til download sektionen under navnet "Autoexec (netcode commands)".

Vil man læse mere om Netcode, så er de to artikler, der er linket til nedenfor, en udemærket introduktion. Endvidere er man meget velkommen til at stille spørgsmål her nedenfor.

Link(s):

Counterstrike source netcode - The final quirks
Source Multiplayer Networking
Flere |



KONSekvnz
Tirsdag d. 15. august 2006, kl. 12:55
1
Interessant læsning. Vil sikkert hjælpe mange.
krogh | Gaming.dk
Tirsdag d. 15. august 2006, kl. 13:18
2
Grunden til at de fleste events har valgt 1, er at der findes ekstra hitreg (som holm har forklaret i et andet indlæg) med interpolate 0. At hitboxen faktisk sidder mest korrekt, men derudover spiller interp med i interpolate 0 (Af grunde vi ikke rigtig ved) således at du slår interpolation fra, men dog lige får det der delay (med interp 0.01) der faktisk ender med at give en slags omvendt effekt, og gør dig i stand til at skyde på - og faktisk også bag ved folk. Og ramme ved begge tilfælde.

Jeg synes stadig interpolate 1 er noget lort, men lad det være med det :) - Jeg er vandt til at spille med ex_interp 0.01 fra de gamle 1.6 dage. Der var minimal interpolation :D
98% Of teens have moved to rap.
If you belong to the other 2% sig this.
Cave
Tirsdag d. 15. august 2006, kl. 13:41
5
Interessant. Men det har vist sig, at interpolate 0 giver ikke tilsvarende forsinkelse som svarer til interp 0.1 forsinkelsen, så om interp værdien har en betydning, er svært at sige :) Det ville også være rart, hvis man kunne køre med cl_interp på 0.01 i source:)
Forhenværende gamer ...
3k2 | über G33KZ
Tirsdag d. 15. august 2006, kl. 17:05
10
Taget fra console:


"cl_interp" = "0.01" ( def. "0.1" ) min. 0.010000 max. 1.000000

Så medmindre det er løgn fra valve af så har du fået noget forkert med :D
Mig > Dig (Even DMT, selvom han er meget klog)
<3 reffe
Cave
Tirsdag d. 15. august 2006, kl. 17:07
11
Problemet er, at værdien 0.01 ikke godtages, eller rettere sagt betragtes som 0.1, tror jeg nok - er dog ikke sikker.
Forhenværende gamer ...
3k2 | über G33KZ
Tirsdag d. 15. august 2006, kl. 17:09
12
ok, for 90 ms er alligevel en del forskel :D
Mig > Dig (Even DMT, selvom han er meget klog)
<3 reffe
lokke | GIAL
Tirsdag d. 15. august 2006, kl. 13:23
3
Jeg har stadigt ikke forstået hvorfor ALLE ikke bare kører med cl_interpolate 0. (Jeg kører selv med 1, men det er kun fordi man ellers ikke er så populær :))
Non ducor duco
White_
Tirsdag d. 15. august 2006, kl. 13:26
4
rigtig god guide til nye på css scenen og folk som endnu ikke har så meget forstand på cfg's.. og som lokke siger. At hvorfor ikke alle bare køre med interpolate 0..
Perform da lige #Gaming.dk
xpre 4tw
mikkel
Tirsdag d. 15. august 2006, kl. 15:48
6
det ser sgu nice ud , jeg må prøve at klappe mig igennem en gang til da mit kendskab til computere og opsætning af css er minimal , hvor stor betydning har ens opsætning på spillet ? altså ville man kunne gå fra spejder dreng til rambo ? ,altså kan man ramme meget bedre eller er det en sag med mange menninger ?
White_
Tirsdag d. 15. august 2006, kl. 17:00
9
det gør utroligt meget ved dit aim. hvis du fixer de cmd's.. og som cave skriver så spiller alle med det. og hvis du ikke gør det så vil folk normalt begynde at whine over at dine rates ikke er sat ordenligt.
Perform da lige #Gaming.dk
xpre 4tw
BuqU
Tirsdag d. 15. august 2006, kl. 16:21
7
Har aldrig kunne en eneste command i console ^^
I'm God.
CeoZ
Tirsdag d. 15. august 2006, kl. 17:00
8
kå
Jikte o høvvis emfsoh fivvi lufi
PrecisioN
Lørdag d. 27. december 2008, kl. 20:44
26
bind "P" "say k, seje, k"

Husk den! <:
puha | DigitalInsanity
Tirsdag d. 15. august 2006, kl. 17:22
13
Du bør anbefale folk at bruge cl_interp 0.01. Ikke kun fordi det er krav i samtlige ligaer der spilles, men også fordi det giver mindre delay (i teorien). Der er som du nævner noget buggy med at den giver ekstra delay alligevel, det som Drax nævner og viser i sin film, dog vil det være smartest at sætte den på 0.01 efter min mening alligevel.

Disse commands vil jeg anbefale:
rate "25000"
cl_updaterate "101"
cl_cmdbackup "50"
cl_cmdrate "101"
cl_timeout "9999"
cl_smooth "1"
cl_smoothtime "0.1"
cl_lagcompensation "1"
cl_lagcomp_errorcheck "1"
cl_interp "0.01"
cl_interpolate "1"
cl_resend "2"

Grunden til jeg skiftede over til cl_interpolate 1 var udelukkende at 80% af scenen brugt det. De eneste der brugte interpolate 0 var os danskere, tyskere og få svenskere.
Dertil kom der 40 forskellige plugins der gjorde det umuligt at spille med interpolate 0 selv i alm. pcw'er - og så kan man ligeså godt gi fortabt.
Jeg ville stadig spille med interpolate 0 hvis jeg måtte, da registreringen er SÅ meget bedre. Både når man sprayer, men også når man laver singleshots. Jeg ved ikke hvor mange gange jeg har siddet og råbt og skreget på vt, når min client tydeligt viser jeg ramte ham lige i snotten pga. blod - men serveren ikke har registreret ét eneste hit.
Jeg er
din her0
Cave
Tirsdag d. 15. august 2006, kl. 19:16
15
Efter din besked har jeg endnu en gang set i forskellige tests igennem, som viser vidt forskellige ting. Jeg er blevet usikker på min anbefaling til interp. Denne er derfor ændret til 0.01. Jeg tror stadig ikke på, at det gør nogen forskel, men for en sikkerhedsskyld ... :)

Det "sjove" er, at forskellige server plugins låser interp til forskellige værdier - jeg ved dok ikke, om det stadig er sådan.
Forhenværende gamer ...
Elitenar
Tirsdag d. 15. august 2006, kl. 18:32
14
Du skriver noget med at cl_smooth 0 oftes medtages, så vidt jeg bruger mange da 1? Jeg kan ihvertfald ikke huske hvornår jeg sidst har set cl_smooth 0 i en cfg.

Btw holm er der en grund til at din cmdbackup er på 50? Min er nemlig kun på 2 :o Og så vidt jeg lige kan læse mig til, så sender du altså 50 gamle pakker, for hver pakke du sender :/
Irish times
Cave
Tirsdag d. 15. august 2006, kl. 19:19
16
cl_smooth 0 var simpelhen en fejl, så det var godt du nævnte det:) Smooth afhjælper - så vidt jeg hitte ud af - fejl mellem server og klient, som typisk opstår, når en fx har høj ping.
Forhenværende gamer ...
puha | DigitalInsanity
Onsdag d. 16. august 2006, kl. 12:52
18
VALVe skrev også i en nyhed engang at man skulle bruge cl_smooth 1. (At de så laver commanden forstår jeg ikke).
cmdbackup på 50 er noget jeg har fra en fyr fra steampowered.com, og jeg føler det virker :p
Jeg er
din her0
kuli | tRICKED
Onsdag d. 16. august 2006, kl. 15:52
19
cmdbackup 50 oO jeg tror mere det er føling end det er fakta holm :P jeg kan huske når jeg kom til at sætte cmdbackup for højt i 1,6 så sejlede alting rundt.
../\\\\\\\\\\\\\\\\.. Bitches dont know bout
`\\\\\\\\\\\\\\\\/´ my additional Pylons
suigeneris | GIAL
Onsdag d. 16. august 2006, kl. 12:18
17
God læsning Cave :)
Simon C. Andersen .:. Crosscom Media I/S
Kristensen_
Onsdag d. 16. august 2006, kl. 18:33
20
Rigtig god læsning Cave :)
rafl3r
Tirsdag d. 22. august 2006, kl. 23:18
21
nice nok .... en anden der forklarer sig på dette her:



http://www.pro-hl.com/column_bomberman_1.shtml



syns nu også han gør det godt... han adder lidt info

btw en super nice side den der ^^
Redigeret: Tirsdag d. 22. august 2006 - kl. 23:26
PlayR
Onsdag d. 23. august 2006, kl. 13:41
22
thumbs up
DMT | Profanity.css
Søndag d. 27. august 2006, kl. 15:57
23
"Der findes næppe bedre og så præcise hitboxes, som det er tilfældet i CS:Source."

WHAT THE FUCK?!??!!


Ellers en interresant og fin "guide", der forklarer lidt om det.
TYBO
Tirsdag d. 18. september 2007, kl. 10:28
24
cl_cmdrate "1" FTW :)
jERNL0L | [T1]
Onsdag d. 27. februar 2008, kl. 22:21
25
er det ik bare fint hvis man spiller med CSSNation
iRl_PiiiiiMP d:-)~~
iRl_PiiiiiMP d:-)~~
f0CUS | Gamers Platoon
Mandag d. 13. april 2009, kl. 21:09
27
http://www.jason35.com/netcode.htm

Det er en bred misforståelse at rate kun skal være på 25000
http://gaming.dk/regler/
//GP.f0CUS
MeJoho
Lørdag d. 24. december 2011, kl. 00:00
28
Det er ret grineren at denne topic stadig er på forsiden efter ca. de der 1957 dage.
NEJ HVOR ER DU LANGSOM MUFFE, NEJ HVOR ER DU TYK!

Skriv en kommentar

Det kræves at du er logget ind, før du kan skrive en kommentar..
Har du ikke allerede en profil, kan du oprette en gratis!

Log ind

Bruger
Kodeord
Husk
» Opret profil
» Glemt kodeord?

Information

For at få det fulde udbytte af Gaming.dk, kræver det at du har oprettet en bruger.

Det tager ikke mere end 2-3 min. og er selvfølgelig gratis.

Seneste CS:S indlæg

Counter-Strike: Source 5thizz til CPHG (15)
Counter-Strike: Source Glide eSports @ ... (10)
Counter-Strike: Source GUI Maker? (0)
Steam Steamservice.exe ... (1)
Counter-Strike: Source Kan ikke komme ind ... (0)
Counter-Strike: Source kA søger hold til ... (13)
Counter-Strike: Source Happy Three ... (6)
Counter-Strike: Source Easy anti cheat ... (7)
Counter-Strike: Source Min skærm bliver ... (2)
Counter-Strike: Source +3 til ... (4)
Counter-Strike: Source Søger hold i CPHG (4)
Counter-Strike: Source HKLan Holdbillet (34)
Counter-Strike: Source glipeN søger god ... (1)
Counter-Strike: Source Reddot søger... (15)
Counter-Strike: Source Søger 3 til ... (12)
Counter-Strike: Source Combined-Cup ... (18)
Counter-Strike: Source theBlast hold? :-) (9)
Counter-Strike: Source Gennemsigtige grå ... (3)
Counter-Strike: Source DivisionCups er ... (12)
Counter-Strike: Source HUD colors (11)

Seneste NON-GAME indlæg

Køb og Salg S: PC og gear. (3)
Offtopic Css clip (9)
Køb og Salg S: syncmaster ... (15)
Offtopic Super Bowl XLVI (11)
PC Relateret Gaming bærbar - ... (9)
Offtopic Minecraft server ... (10)
Offtopic Before we fly by ... (8)
Køb og Salg Beats by dr dre (29)
Offtopic Hvisten vs rugbrød (21)
PC Relateret Hjælp til ... (7)

RTS Games

League of Legends [West] Mates at ... (9)
League of Legends Semi-pro ... (0)
League of Legends Ap Mid Runer N ... (26)
Starcraft 2 Sc2 chat kanal! (2)
League of Legends Team På West Søger ... (7)
League of Legends [West] 1550+ DUO (3)
Starcraft 2 Starcraft 2 Hva ... (76)
League of Legends Hjælp (11)
League of Legends [EUNE] Woopd søger ... (9)
League of Legends "Elo Hell" (67)

FPS Games

N/A Sc2 chat kanal! (2)
N/A Starcraft 2 Hva ... (76)
Battlefield Søger et hold (1)
Battlefield Hej. RsK Søger ... (21)
N/A Explicit Gaming ... (12)
Battlefield Team Denmark får ... (6)
N/A SC2 Stream (21)
Battlefield Søger BF3 team (1)
Battlefield TCoa søger ... (12)
N/A Til folk i bronze ... (9)

Spilkonsoller

Playstation HDMI benQ xl2410t (17)
Playstation FIFA 12 - lagger ... (2)
Playstation Ps3 Fifa 12. (33)
Xbox FIFA 12 ONLINE ... (6)
Playstation mass effect 3 ... (1)
Playstation Playstation 3 ... (2)
Playstation Fifa (PS3) tips (9)
Playstation Mates at spille ... (0)
Xbox FIFA 12 online? (16)
Playstation Playstation ... (1)

Reklamer

© COMWAYS 2006-2012 - Regler | Advisering | Jobs RSS Feeds
0.957190990448