Ustawienia sieciowe graczy
(→cl_updaterate) |
|||
(Nie pokazano 32 wersji utworzonych przez jednego użytkownika) | |||
Linia 1: | Linia 1: | ||
− | + | [[kategoria:E-Sport]] | |
− | + | [[Kategoria:Netcode]] | |
[[kategoria:HLDS]] | [[kategoria:HLDS]] | ||
[[kategoria:SRCDS]] | [[kategoria:SRCDS]] | ||
− | + | =Wstęp= | |
+ | Trochę stary artykuł, będę musiał go odkurzyć z debilizmów, więc się będzie zmieniał co jakiś czas. | ||
+ | --[[Użytkownik:KaszpiR|KaszpiR]] 15:52, 9 sie 2006 (CEST) | ||
+ | |||
+ | {{stub}} | ||
+ | |||
+ | =Opis= | ||
Ustawienia sieciowe graczy CS | Ustawienia sieciowe graczy CS | ||
Turorial przyblizy wam jak lepiej ustawic wartosci takie jak cl_cmdbackup | Turorial przyblizy wam jak lepiej ustawic wartosci takie jak cl_cmdbackup | ||
− | cl_rate, cl_updaterate , cl_cmdrate oraz rate aby lepiej wam sie gralo na serwerze | + | cl_rate, cl_updaterate , cl_cmdrate oraz rate aby lepiej wam sie gralo na serwerze. |
− | + | = Opis zmiennych= | |
+ | *Ramka oznacza 1 fragment informacji przeslany miedzy klientem a serwerem (niezaleznie w ktora strone). | ||
+ | *Ilosc ramek z serwra do klienta kontroluje cl_updaterate oraz rate. | ||
+ | *Ilosc ramek od gracza do serwera kontroluje cl_cmdrate i cl_rate. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | - | + | ==cl_cmdrate== |
− | + | Jest to liczba ile razy na sekunde gracz informuje serwer o swoich poczynaniach, to jest - ruchach na mapie, strzelaniu, ruchach myszy. | |
− | + | ||
− | + | Im wiecej robisz (im bardziej ostra akcja) tym wiecej danych wysylasz. | |
− | + | Najlepiej, jeśli będzie wynosił maksimum fps jakie osiągasz w grze, jednakże bardzo często 60 juz wystarcza. | |
− | + | ||
+ | ==cl_updaterate== | ||
+ | Jest to liczba ile razy na sekundę gracz otrzymuje z serwera dane o tym co się dookoła niego dzieje - oznacza to ze dostajesz info jak lecą granaty, kto gdzie się porusza i strzela, bryzgi krwi , dźwięki audio, efekty HUD, latające pociski, rykoszety itp. | ||
− | + | Jak jesteś w miejscu gdzie mało się dzieje (np nie ma graczy albo niewiele robią) to otrzymujesz mało informacji, ale jak wbiegniesz w miejsce gdzie się strzelają 4 osoby i latają granaty to dostajesz tych informacji o wiele więcej. | |
− | + | ||
− | + | ||
− | cl_updaterate | + | cl_updaterate najlepiej mieć troszkę wyższe od ilości fps jakie osiągamy w grze, jednakże nie oznacza to, iż będziemy na pewno dostawać tyle uaktualnień, gdyż to wydajność serwera i zmienne jak sv_maxupdaterate definiują ile można wysłać z serwera do gracza. |
− | + | ||
− | + | ||
− | + | ||
− | to | + | |
− | + | ||
− | + | ||
− | cl_rate | + | ==cl_rate== |
− | poczynan i powinna byc ustawiona na maksymalna wartosc uploadu jaka mozesz wycisnac z łącza | + | Ustawia maksymalny limit bajtow wyslanych od ciebie do serwera na temat twoich poczynan i powinna byc ustawiona na maksymalna wartosc uploadu jaka mozesz wycisnac z łącza |
− | rate | + | ==rate== |
− | + | Ustawia maksymalny limit bajtów odebranych przez ciebie jaie przychodza do serwera. | |
+ | Powinna byc ustawiona na 80% maksymalnej wartosci download jaki mozesz wycisnac ze swojego łącza. | ||
− | cl_cmdbackup | + | ==cl_cmdbackup== |
+ | ustawia ile ramek mozna przesylac ponownie jesli nam lacze nie wyrabia | ||
np jak ma sie wysokie lossy albo choke | np jak ma sie wysokie lossy albo choke | ||
− | Dla nie kumatych | + | ==Dla nie kumatych== |
cl_rate, cl_cmdrate | cl_rate, cl_cmdrate | ||
Linia 62: | Linia 57: | ||
− | + | =Zakresy wartosci= | |
− | + | ||
− | + | ||
Ilosc danych od gracza przewaznie jest mala, mniej wiecej 25 bajtow na ramke. | Ilosc danych od gracza przewaznie jest mala, mniej wiecej 25 bajtow na ramke. | ||
natomiast serwer wysyla znacznie wiecej, jak sie nic nie dzieje jest to okolo 35bajtow na ramke, | natomiast serwer wysyla znacznie wiecej, jak sie nic nie dzieje jest to okolo 35bajtow na ramke, | ||
a jak jest ostra akcja to dochodzi nawet do 176 bajtow na ramke albo i wiecej. | a jak jest ostra akcja to dochodzi nawet do 176 bajtow na ramke albo i wiecej. | ||
− | |||
− | |||
Dosc latwo sie przekonac ile danych wchodzi i wychodzi patrzac na net_graph | Dosc latwo sie przekonac ile danych wchodzi i wychodzi patrzac na net_graph | ||
przyklad (oczywiscie u was moga byc inne wartosci) | przyklad (oczywiscie u was moga byc inne wartosci) | ||
− | + | ||
− | 77 fps 5ms | + | 77 fps 5ms |
− | in: 34 1.48 k/s | + | in: 34 1.48 k/s |
− | out: 25 1.35 k/s | + | out: 25 1.35 k/s |
− | + | ||
− | loss: 0 choke: 0 | + | loss: 0 choke: 0 |
− | + | ==Pierwsza linia== | |
− | + | ||
− | Pierwsza linia | + | |
pierwsza liczba reprezentuje ilosc wyswietlanych FPS | pierwsza liczba reprezentuje ilosc wyswietlanych FPS | ||
druga liczba oznacza czas jakim sie rozni to co widzimy od tego co dostajemy od serwera | druga liczba oznacza czas jakim sie rozni to co widzimy od tego co dostajemy od serwera | ||
i co wysylamy do sewera (o tym nizej) | i co wysylamy do sewera (o tym nizej) | ||
− | Druga linia | + | ==Druga linia== |
reprezentuje dane wejsciowe jakie otrzymujesz z serwera. | reprezentuje dane wejsciowe jakie otrzymujesz z serwera. | ||
Tu mamy wielkosc ramki 34 bajty, co przy danym cl_updaterate przelicza sie na 1.48 k/s downloadu. | Tu mamy wielkosc ramki 34 bajty, co przy danym cl_updaterate przelicza sie na 1.48 k/s downloadu. | ||
− | Trzecia linia | + | ==Trzecia linia== |
reprezentuje dane wyjsciowe jakie wysylamy do serwera. | reprezentuje dane wyjsciowe jakie wysylamy do serwera. | ||
Tutaj mamy rozmiar ramki 25 bajtow, a to sie przelicza przy tym cl_cmrdate na 1.35 k/s uploadu. | Tutaj mamy rozmiar ramki 25 bajtow, a to sie przelicza przy tym cl_cmrdate na 1.35 k/s uploadu. | ||
− | + | =Nasze łącze= | |
− | + | Najcześciej informacje o naszym łączu mamy podane w kilobitach. | |
− | + | ||
− | + | ||
− | + | ||
Najczęciej także podawane są nam informacje o naszym maksymalnym downloadzie,a rzadziej o naszym | Najczęciej także podawane są nam informacje o naszym maksymalnym downloadzie,a rzadziej o naszym | ||
uploadzie, ktory czesto tez jest wazny. | uploadzie, ktory czesto tez jest wazny. | ||
Linia 105: | Linia 91: | ||
Przeważnie upload mamy 4 albo 8 razy mniejszy niz download przy łączach ADSL (asynchroniczne) | Przeważnie upload mamy 4 albo 8 razy mniejszy niz download przy łączach ADSL (asynchroniczne) | ||
ADSL to na przykład sdi, neostrada, astercity, chello.. większosć dostępnych teraz łączy. | ADSL to na przykład sdi, neostrada, astercity, chello.. większosć dostępnych teraz łączy. | ||
− | Takie łącze jest przeznaczone | + | Takie łącze jest przeznaczone właśnie dla graczy. |
łącza które mają taki sam upload jak download są to przeważnie SDSL (synchroniczne) | łącza które mają taki sam upload jak download są to przeważnie SDSL (synchroniczne) | ||
− | i są znaczie droższe niz asynchroniczne, ale takie łącze powinien | + | i są znaczie droższe niz asynchroniczne, ale takie łącze powinien właśnie posiadać serwer. |
− | Pamietajmy ze 8kb = 1B (8 kilobitów równa sie 1 | + | Pamietajmy ze 8kb = 1B (8 kilobitów równa sie 1 kilobajt) w przeliczeniu na szybko. (nie mam zamairu sie tu zaglebiac i dokladnie tego liczyc) |
Powiedzmy ze masz modem 56k, weg specyfikaji oznacza to ze masz 56kbit downloadu i 33kbit uploadu. | Powiedzmy ze masz modem 56k, weg specyfikaji oznacza to ze masz 56kbit downloadu i 33kbit uploadu. | ||
Oznacza to stan idealny gdy nic nie zakloca linii. | Oznacza to stan idealny gdy nic nie zakloca linii. | ||
+ | |||
W rzeczywistosci jakies 10% łącza idzie na dane dodatkowe - korekcja błędów, kontrola połączenia | W rzeczywistosci jakies 10% łącza idzie na dane dodatkowe - korekcja błędów, kontrola połączenia | ||
− | więc | + | więc wartości jakie masz podane nie są wartościami realnymi tylko wartościami teoretycznymi jakie |
− | mozesz osiągnąc - w rzeczywistosci osiągasz mniej bo wpływa na to sam ruch sieci, | + | mozesz osiągnąc - w rzeczywistosci osiągasz mniej bo wpływa na to sam ruch sieci, jakość kabli |
pogoda, zakłócenia elektromagnetyczne (komorki, radio) i wiele innych czynnikow. | pogoda, zakłócenia elektromagnetyczne (komorki, radio) i wiele innych czynnikow. | ||
Czyli mamy w rzeczywistosci 56/8 = 7kbajtow/s downloadu i 33/8 = niecale 5k/s downloadu. | Czyli mamy w rzeczywistosci 56/8 = 7kbajtow/s downloadu i 33/8 = niecale 5k/s downloadu. | ||
− | Neostrada | + | ==Neostrada== |
− | jakies 768kbit downloadu i 128 kbit uploadu | + | jakies 768kbit downloadu i 128 kbit uploadu (kiedyś) |
+ | teraz ma 196kbit uploadu (czyli 24k/s) | ||
Po przeliczeniu wychodzi jakies 96k/s downloadu oraz 16k/s uploadu | Po przeliczeniu wychodzi jakies 96k/s downloadu oraz 16k/s uploadu | ||
Linia 133: | Linia 121: | ||
Reszte sobie sami przeliczcie. | Reszte sobie sami przeliczcie. | ||
− | + | =Jak obliczyc wartosci= | |
− | + | ||
− | + | ||
− | + | ||
Najpierw sie zajmiemy wartosciami cl_rate i rate. | Najpierw sie zajmiemy wartosciami cl_rate i rate. | ||
− | cl_rate | + | ==cl_rate== |
Bierzemy nasz upload w bitach, mnożymy razy 0.9 a następnie dzielimy przez 8. | Bierzemy nasz upload w bitach, mnożymy razy 0.9 a następnie dzielimy przez 8. | ||
Linia 145: | Linia 130: | ||
Jak wychodzi liczba po przecinku to ją zaokrąglamy w dół. | Jak wychodzi liczba po przecinku to ją zaokrąglamy w dół. | ||
− | Jednakże | + | Jednakże wartością maksymalną jaką mozemy wstawić jest 20 000, dlatego przy |
łączach które mają lepszy upload niż Neostrada (128kbit czyli 16k/s) powinnismy ustawic 20000 | łączach które mają lepszy upload niż Neostrada (128kbit czyli 16k/s) powinnismy ustawic 20000 | ||
Przyklady | Przyklady | ||
− | Nazwa | Upload | Rachunki | cl_rate | + | Nazwa | Upload | Rachunki | cl_rate |
− | ---------------------------------------------------------------------------------- | + | ---------------------------------------------------------------------------------- |
− | modem 56k: | 56000 | ( 56000*0.9)/8 = 6300 | + | modem 56k: | 56000 | ( 56000*0.9)/8 = 6300 |
− | Neostrada | 128000 | ( 128000*0.9)/8 = 14400 | + | Neostrada | 128000 | ( 128000*0.9)/8 = 14400 |
− | + | ==rate== | |
− | rate | + | |
Bierzemy nasz download maksymalny w bitach, mnożymy razy 0.9 a nastepnie dzielimy przez 8. | Bierzemy nasz download maksymalny w bitach, mnożymy razy 0.9 a nastepnie dzielimy przez 8. | ||
Czyli analogicznie jak przy cl_rate. | Czyli analogicznie jak przy cl_rate. | ||
Linia 161: | Linia 145: | ||
Jak wychodzi liczba po przecinku to ją zaokrąglamy w dół. | Jak wychodzi liczba po przecinku to ją zaokrąglamy w dół. | ||
− | Jednakże | + | Jednakże wartością maksymalną jaką mozemy wstawić jest 20 000, dlatego przy |
łączach które mają lepszy download niż Neostrada (768kbit czyli 16k/s) powinnismy ustawic 20000. | łączach które mają lepszy download niż Neostrada (768kbit czyli 16k/s) powinnismy ustawic 20000. | ||
Przy Neostradzie podałem gwiazdki - powinno sie wec ustawic 20000. | Przy Neostradzie podałem gwiazdki - powinno sie wec ustawic 20000. | ||
− | Nazwa | Download | Rachunki | rate | + | Nazwa | Download | Rachunki | rate |
− | ---------------------------------------------------------------------------------- | + | ---------------------------------------------------------------------------------- |
− | modem 56k: | 33600 | ( 33600*0.9)/8 = 3780 | + | modem 56k: | 33600 | ( 33600*0.9)/8 = 3780 |
− | Neostrada | 768000 | ( 768000*0.9)/8 = 86400 *** -> 20000 | + | Neostrada | 768000 | ( 768000*0.9)/8 = 86400 *** -> 20000 |
− | + | ==cl_cmdrate== | |
− | + | ||
− | + | ||
− | + | ||
− | cl_cmdrate | + | |
Najlepiej gdy wezmiemy nasz cl_rate i podzielimy przez 25 (bo przewaznie tyle bajtow ma ramka). | Najlepiej gdy wezmiemy nasz cl_rate i podzielimy przez 25 (bo przewaznie tyle bajtow ma ramka). | ||
Wtedy np dla Neostrady mamy: | Wtedy np dla Neostrady mamy: | ||
Linia 182: | Linia 162: | ||
W rzeczywistosci najlepiej ustawic cl_updaterate rowny sredniej liczbie naszych fps w grze. | W rzeczywistosci najlepiej ustawic cl_updaterate rowny sredniej liczbie naszych fps w grze. | ||
− | + | Jak ustawimy wiecej to mozliwe ze serwer bedzie dropowal pewne dane ale ni powinnismy sie tym | |
przejmowac bo zostaja one wyslane kolejny raz. | przejmowac bo zostaja one wyslane kolejny raz. | ||
− | + | ==cl_updaterate== | |
− | cl_updaterate | + | |
Najlepiej gdy wezmiemy nasze rate i podzielimy przez 175 (bo tyle bajtow srednio ma ramka). | Najlepiej gdy wezmiemy nasze rate i podzielimy przez 175 (bo tyle bajtow srednio ma ramka). | ||
Np dla Neostrady mamy | Np dla Neostrady mamy | ||
20000 / 175 = 114 ale wartoscia maksymalna jest 100 wiec mozna spokojnie ustawic 100 | 20000 / 175 = 114 ale wartoscia maksymalna jest 100 wiec mozna spokojnie ustawic 100 | ||
− | |||
uwaga, teraz warto popatrzyc na net graph | uwaga, teraz warto popatrzyc na net graph | ||
Linia 206: | Linia 184: | ||
wtedy musimy u nas takze zmiejszac cl_updaterate i cl_cmdrate. | wtedy musimy u nas takze zmiejszac cl_updaterate i cl_cmdrate. | ||
− | + | ==cl_cmdbdackup== | |
− | + | ||
− | + | ||
− | cl_cmdbdackup | + | |
− | + | ||
Czasami ustawianie wartosci zmiennych cl_cmdrate i cl_updaterate powyzej ilosci fps serwera | Czasami ustawianie wartosci zmiennych cl_cmdrate i cl_updaterate powyzej ilosci fps serwera | ||
moze okazac sie zbyteczne bo serwer ich nie przyjmie bo nie wyrobi. | moze okazac sie zbyteczne bo serwer ich nie przyjmie bo nie wyrobi. | ||
Linia 224: | Linia 198: | ||
lacze rzeczami czasem juz nieaktualnymi (jak serwer ma 60 fps a probujesz przepchnac 60 ramek to | lacze rzeczami czasem juz nieaktualnymi (jak serwer ma 60 fps a probujesz przepchnac 60 ramek to | ||
znaczy ze chcesz czasem miec dane z calej osatniej sekundy) | znaczy ze chcesz czasem miec dane z calej osatniej sekundy) | ||
− | |||
Kiedys tlumaczylem ze cmdrate powinen byc 4x miejszy od updatrate - autor tekstu byl w bledzie | Kiedys tlumaczylem ze cmdrate powinen byc 4x miejszy od updatrate - autor tekstu byl w bledzie | ||
bo nie wzial pod uwage faktu ze ramka jest mniejsza w cmdrate | bo nie wzial pod uwage faktu ze ramka jest mniejsza w cmdrate | ||
− | dlatego mzoa ustawic cmdrate 4 albo i wiecej razy wieksze niz updaterate | + | dlatego mzoa ustawic cmdrate 4 albo i wiecej razy wieksze niz updaterate. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Choke | + | =Choke i Loss= |
+ | ==Choke== | ||
Choke procent danych jakie serwer albo klient powtrzymuje przed wyslaniem bo nie pozwalaja mu na | Choke procent danych jakie serwer albo klient powtrzymuje przed wyslaniem bo nie pozwalaja mu na | ||
to ustawione parametry. | to ustawione parametry. | ||
Linia 256: | Linia 220: | ||
Na net graphie choke jest wyswietlany jako kolor żółty w zielonym grafie (ten górny). | Na net graphie choke jest wyswietlany jako kolor żółty w zielonym grafie (ten górny). | ||
− | Loss | + | ==Loss== |
Loss wskazuje ile procent danych nie dotarlo do celu - oznacza ze cos jest zle z naszym łączem pod | Loss wskazuje ile procent danych nie dotarlo do celu - oznacza ze cos jest zle z naszym łączem pod | ||
względem technicznym. | względem technicznym. | ||
Linia 264: | Linia 228: | ||
Na net graphie los jest wyswietlany jako kolor czerwony w zielonym grafie (ten górny). | Na net graphie los jest wyswietlany jako kolor czerwony w zielonym grafie (ten górny). | ||
− | + | =Ex_Interp= | |
− | + | ||
− | + | ||
− | + | ||
ex_interp domyslnie ma wartosc 0.1 , i jego zmiana jest czesto blokowana przez takie | ex_interp domyslnie ma wartosc 0.1 , i jego zmiana jest czesto blokowana przez takie | ||
dodatki jak wwcl albo hlguard | dodatki jak wwcl albo hlguard | ||
Linia 275: | Linia 236: | ||
ale w rzeczywistosci modele beda wtedy skakac i lepiej obliczyc to samemu wg ponizszego wzoru | ale w rzeczywistosci modele beda wtedy skakac i lepiej obliczyc to samemu wg ponizszego wzoru | ||
ex_interp = (1/ cl_updaterate) +0.02 | ex_interp = (1/ cl_updaterate) +0.02 | ||
− | |||
przy cl_updaterate 50, ex_interp powinien wiec wynosic jakies 0.04 | przy cl_updaterate 50, ex_interp powinien wiec wynosic jakies 0.04 | ||
Linia 283: | Linia 243: | ||
i wtedy mamy tylko fioletowo niebieski wykres. | i wtedy mamy tylko fioletowo niebieski wykres. | ||
− | + | =Serwer= | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Na serwerze admin moze ustawic zmienne aby forsowac pewne wartosci. | Na serwerze admin moze ustawic zmienne aby forsowac pewne wartosci. | ||
Dlaczego? Aby na przyklad nie placic za łącze więcej niż go stac. | Dlaczego? Aby na przyklad nie placic za łącze więcej niż go stac. | ||
Linia 295: | Linia 251: | ||
to nie bedzie on z niej korzystal, bo serwer bedzie wywyslal wartosci ze swoich usatwien. | to nie bedzie on z niej korzystal, bo serwer bedzie wywyslal wartosci ze swoich usatwien. | ||
− | sv_maxrate | + | ==sv_maxrate== |
− | kontroluje maksymalna wartosc rate | + | kontroluje maksymalna wartosc rate, jaka gracz moze otrzymac od serwera. |
− | sv_maxupdaterate | + | ==sv_maxupdaterate== |
kontroluje maksymalna wartosc sv_updaterate, domyslnie 30 | kontroluje maksymalna wartosc sv_updaterate, domyslnie 30 | ||
− | stosowanie ponizszych | + | stosowanie ponizszych wartości nie jest zalecane sczególnie przy zamawianiu HLTV |
na serwer z http://hltv.org | na serwer z http://hltv.org | ||
− | sv_minrate | + | ==sv_minrate== |
− | kontroluje mininamlna | + | kontroluje mininamlna wartość rate jaka wymaga serwer od graczy - powoduje zwiekszenie ruchu sieciowego, za wysoka warttosc dratycznie pogarsza gre wszstkim graczom. |
− | sv_minupdaterate | + | ==sv_minupdaterate== |
− | kontroluje mininamlna | + | kontroluje mininamlna wartość cl_updaterate , domyslnie 10 |
Przyklad: | Przyklad: | ||
Linia 323: | Linia 279: | ||
jego downloadem z netu. Ale trzeba pamietac ze serwer moze sam odrzucac zbyt czeste dane od klientow. | jego downloadem z netu. Ale trzeba pamietac ze serwer moze sam odrzucac zbyt czeste dane od klientow. | ||
− | + | =Zakonczenie= | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Przy pisaniu opieralem sie na: | Przy pisaniu opieralem sie na: | ||
Linia 338: | Linia 290: | ||
--------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ||
− | by _KaszpiR_ 20-04-2005 ver 0.7 | + | by _KaszpiR_ 20-04-2005 ver 0.7 |
--------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | =Linki= | ||
+ | *[http://ucguides.savagehelp.com/ UC Guides] - zestaw pomocy dla gier donetcode na silniku [[Quake 3]] . | ||
+ | *[http://alternatefire.planetquake.gamespy.com/unlagged_faq.html#IJGSAAC Quake 3 Unlag mod and Unlag system] - dla bardziej zainteresowanych tematem, po angielsku |
Aktualna wersja na dzień 12:04, 2 sty 2010
Spis treści |
Wstęp
Trochę stary artykuł, będę musiał go odkurzyć z debilizmów, więc się będzie zmieniał co jakiś czas.
--KaszpiR 15:52, 9 sie 2006 (CEST)
Ten artykuł jest niepełny i wymaga uzupełnienia. Jeżeli jesteś w stanie - postaraj się go uzupełnić.. Pamiętaj, że nawet najmniejsza zmiana jest cenna i pomocna :) |
Opis
Ustawienia sieciowe graczy CS
Turorial przyblizy wam jak lepiej ustawic wartosci takie jak cl_cmdbackup cl_rate, cl_updaterate , cl_cmdrate oraz rate aby lepiej wam sie gralo na serwerze.
Opis zmiennych
- Ramka oznacza 1 fragment informacji przeslany miedzy klientem a serwerem (niezaleznie w ktora strone).
- Ilosc ramek z serwra do klienta kontroluje cl_updaterate oraz rate.
- Ilosc ramek od gracza do serwera kontroluje cl_cmdrate i cl_rate.
cl_cmdrate
Jest to liczba ile razy na sekunde gracz informuje serwer o swoich poczynaniach, to jest - ruchach na mapie, strzelaniu, ruchach myszy.
Im wiecej robisz (im bardziej ostra akcja) tym wiecej danych wysylasz. Najlepiej, jeśli będzie wynosił maksimum fps jakie osiągasz w grze, jednakże bardzo często 60 juz wystarcza.
cl_updaterate
Jest to liczba ile razy na sekundę gracz otrzymuje z serwera dane o tym co się dookoła niego dzieje - oznacza to ze dostajesz info jak lecą granaty, kto gdzie się porusza i strzela, bryzgi krwi , dźwięki audio, efekty HUD, latające pociski, rykoszety itp.
Jak jesteś w miejscu gdzie mało się dzieje (np nie ma graczy albo niewiele robią) to otrzymujesz mało informacji, ale jak wbiegniesz w miejsce gdzie się strzelają 4 osoby i latają granaty to dostajesz tych informacji o wiele więcej.
cl_updaterate najlepiej mieć troszkę wyższe od ilości fps jakie osiągamy w grze, jednakże nie oznacza to, iż będziemy na pewno dostawać tyle uaktualnień, gdyż to wydajność serwera i zmienne jak sv_maxupdaterate definiują ile można wysłać z serwera do gracza.
cl_rate
Ustawia maksymalny limit bajtow wyslanych od ciebie do serwera na temat twoich poczynan i powinna byc ustawiona na maksymalna wartosc uploadu jaka mozesz wycisnac z łącza
rate
Ustawia maksymalny limit bajtów odebranych przez ciebie jaie przychodza do serwera.
Powinna byc ustawiona na 80% maksymalnej wartosci download jaki mozesz wycisnac ze swojego łącza.
cl_cmdbackup
ustawia ile ramek mozna przesylac ponownie jesli nam lacze nie wyrabia np jak ma sie wysokie lossy albo choke
Dla nie kumatych
cl_rate, cl_cmdrate Gracz -------------->-->--> Server
rate, cl_updaterate
Gracz <--<--<---------------- Server
Zakresy wartosci
Ilosc danych od gracza przewaznie jest mala, mniej wiecej 25 bajtow na ramke. natomiast serwer wysyla znacznie wiecej, jak sie nic nie dzieje jest to okolo 35bajtow na ramke, a jak jest ostra akcja to dochodzi nawet do 176 bajtow na ramke albo i wiecej.
Dosc latwo sie przekonac ile danych wchodzi i wychodzi patrzac na net_graph przyklad (oczywiscie u was moga byc inne wartosci)
77 fps 5ms in: 34 1.48 k/s out: 25 1.35 k/s loss: 0 choke: 0
Pierwsza linia
pierwsza liczba reprezentuje ilosc wyswietlanych FPS druga liczba oznacza czas jakim sie rozni to co widzimy od tego co dostajemy od serwera i co wysylamy do sewera (o tym nizej)
Druga linia
reprezentuje dane wejsciowe jakie otrzymujesz z serwera. Tu mamy wielkosc ramki 34 bajty, co przy danym cl_updaterate przelicza sie na 1.48 k/s downloadu.
Trzecia linia
reprezentuje dane wyjsciowe jakie wysylamy do serwera. Tutaj mamy rozmiar ramki 25 bajtow, a to sie przelicza przy tym cl_cmrdate na 1.35 k/s uploadu.
Nasze łącze
Najcześciej informacje o naszym łączu mamy podane w kilobitach. Najczęciej także podawane są nam informacje o naszym maksymalnym downloadzie,a rzadziej o naszym uploadzie, ktory czesto tez jest wazny.
Przeważnie upload mamy 4 albo 8 razy mniejszy niz download przy łączach ADSL (asynchroniczne) ADSL to na przykład sdi, neostrada, astercity, chello.. większosć dostępnych teraz łączy. Takie łącze jest przeznaczone właśnie dla graczy.
łącza które mają taki sam upload jak download są to przeważnie SDSL (synchroniczne) i są znaczie droższe niz asynchroniczne, ale takie łącze powinien właśnie posiadać serwer.
Pamietajmy ze 8kb = 1B (8 kilobitów równa sie 1 kilobajt) w przeliczeniu na szybko. (nie mam zamairu sie tu zaglebiac i dokladnie tego liczyc)
Powiedzmy ze masz modem 56k, weg specyfikaji oznacza to ze masz 56kbit downloadu i 33kbit uploadu. Oznacza to stan idealny gdy nic nie zakloca linii.
W rzeczywistosci jakies 10% łącza idzie na dane dodatkowe - korekcja błędów, kontrola połączenia więc wartości jakie masz podane nie są wartościami realnymi tylko wartościami teoretycznymi jakie mozesz osiągnąc - w rzeczywistosci osiągasz mniej bo wpływa na to sam ruch sieci, jakość kabli pogoda, zakłócenia elektromagnetyczne (komorki, radio) i wiele innych czynnikow.
Czyli mamy w rzeczywistosci 56/8 = 7kbajtow/s downloadu i 33/8 = niecale 5k/s downloadu.
Neostrada
jakies 768kbit downloadu i 128 kbit uploadu (kiedyś) teraz ma 196kbit uploadu (czyli 24k/s) Po przeliczeniu wychodzi jakies 96k/s downloadu oraz 16k/s uploadu
1mbit 1024/8 = 128k/s downloadu
2mbit 2048/8 = 256k/s downloadu
Reszte sobie sami przeliczcie.
Jak obliczyc wartosci
Najpierw sie zajmiemy wartosciami cl_rate i rate.
cl_rate
Bierzemy nasz upload w bitach, mnożymy razy 0.9 a następnie dzielimy przez 8. Wynik powinien byc wartoscia jaka powinnismy usawic sobie w cl_rate. Jak wychodzi liczba po przecinku to ją zaokrąglamy w dół.
Jednakże wartością maksymalną jaką mozemy wstawić jest 20 000, dlatego przy łączach które mają lepszy upload niż Neostrada (128kbit czyli 16k/s) powinnismy ustawic 20000 Przyklady
Nazwa | Upload | Rachunki | cl_rate ---------------------------------------------------------------------------------- modem 56k: | 56000 | ( 56000*0.9)/8 = 6300 Neostrada | 128000 | ( 128000*0.9)/8 = 14400
rate
Bierzemy nasz download maksymalny w bitach, mnożymy razy 0.9 a nastepnie dzielimy przez 8. Czyli analogicznie jak przy cl_rate. Wynik powinien byc wartoscia jaka powinnismy usawic sobie w rate. Jak wychodzi liczba po przecinku to ją zaokrąglamy w dół.
Jednakże wartością maksymalną jaką mozemy wstawić jest 20 000, dlatego przy łączach które mają lepszy download niż Neostrada (768kbit czyli 16k/s) powinnismy ustawic 20000. Przy Neostradzie podałem gwiazdki - powinno sie wec ustawic 20000.
Nazwa | Download | Rachunki | rate ---------------------------------------------------------------------------------- modem 56k: | 33600 | ( 33600*0.9)/8 = 3780 Neostrada | 768000 | ( 768000*0.9)/8 = 86400 *** -> 20000
cl_cmdrate
Najlepiej gdy wezmiemy nasz cl_rate i podzielimy przez 25 (bo przewaznie tyle bajtow ma ramka). Wtedy np dla Neostrady mamy: 14400 / 25 = 576 ale wartoscia maksymalna dla cmdrate jest 400 (wyzej nie ma co ustawiac, nie widac roznicy) wiec ustawiamy cl_cmdrate 400
W rzeczywistosci najlepiej ustawic cl_updaterate rowny sredniej liczbie naszych fps w grze. Jak ustawimy wiecej to mozliwe ze serwer bedzie dropowal pewne dane ale ni powinnismy sie tym przejmowac bo zostaja one wyslane kolejny raz.
cl_updaterate
Najlepiej gdy wezmiemy nasze rate i podzielimy przez 175 (bo tyle bajtow srednio ma ramka). Np dla Neostrady mamy 20000 / 175 = 114 ale wartoscia maksymalna jest 100 wiec mozna spokojnie ustawic 100
uwaga, teraz warto popatrzyc na net graph w pierwszej linii mamy dwie liczby jesli widzimy tylko pierwsza (tzn fps) to jest ok
jesli widzimy druga takze to znaczy ze mamy pewne opoznienia w grze maga byc one zwiazane z kilkoma rzeczami - m in. wydajnoscią naszego sprzętu liczba ta sie zwieksz ajak mamy np cl_updaterate i cl_cmdrate zbyt ekstremalne (zarowno za male jak i za duze) najlepieje tak zmieniac cl_updaterate i cl_cmdrate aby ta liczba byla jak najmiejsza (1 cyfrowa) i pokazywala sie bardzo rzadko.
ta liczba oznaczac moze tez ze na serwerze moze byc ustawione sv_maxupdaterate wtedy musimy u nas takze zmiejszac cl_updaterate i cl_cmdrate.
cl_cmdbdackup
Czasami ustawianie wartosci zmiennych cl_cmdrate i cl_updaterate powyzej ilosci fps serwera moze okazac sie zbyteczne bo serwer ich nie przyjmie bo nie wyrobi.
Serwer srednio powinien miec 60-70 fps, dobre serwery maja powyzej 100.
najlepiej jest ustawic cl_cmdbackup jako cl_cmdrate / fps serwera Serwery na LAN na mecze np ESL maja wysokie ustawienia (okolo 200fps) i dlatego daje sie cl_cmdrate 400 a cl_cmdbackup 2
Na necie cl_cmdbackup jest standardowo 6 i jest parametrem wystarczajacym. Jak ustawisz powyzej 60 to jest to bardzo duzo i prawdopodobnie mozesz zapchac sobie niepotrzebnie lacze rzeczami czasem juz nieaktualnymi (jak serwer ma 60 fps a probujesz przepchnac 60 ramek to znaczy ze chcesz czasem miec dane z calej osatniej sekundy)
Kiedys tlumaczylem ze cmdrate powinen byc 4x miejszy od updatrate - autor tekstu byl w bledzie bo nie wzial pod uwage faktu ze ramka jest mniejsza w cmdrate dlatego mzoa ustawic cmdrate 4 albo i wiecej razy wieksze niz updaterate.
Choke i Loss
Choke
Choke procent danych jakie serwer albo klient powtrzymuje przed wyslaniem bo nie pozwalaja mu na to ustawione parametry. Po prostu przekroczone zostaly mozliwosci łącza na przesył danych. Choke do wartosci 10 jest akceptowalny.
Najczesciej pojawia sie jak nasze rate jest zbyt niskie do podanego cl_updaterate. Podobnie jesli mamy zbyt male cl_rate do zadeklarowanego cl_cmdrate.
W tym przypdaku powiniesmy najpierw sprawdzic czy nie przesadzilismy z cl_updaterate i cl_cmdrate i je sukcesywnie zmiejszac podczas gry az choke zniknie podczas ostrych akcji.
Jesli to nie pomaga zmnijeszamy wartosci rate i cl_rate.
Na net graphie choke jest wyswietlany jako kolor żółty w zielonym grafie (ten górny).
Loss
Loss wskazuje ile procent danych nie dotarlo do celu - oznacza ze cos jest zle z naszym łączem pod względem technicznym. Powinnismy takze wpierw obnizyc parametry opisywane w tym artykule. Loss do wartosci 10 jest akceptowalny.
Na net graphie los jest wyswietlany jako kolor czerwony w zielonym grafie (ten górny).
Ex_Interp
ex_interp domyslnie ma wartosc 0.1 , i jego zmiana jest czesto blokowana przez takie dodatki jak wwcl albo hlguard wartosci powyzej 0.1 sa blokowane przez sama gre half-life
jak wpiszemu ex_interp 0 to powinno sie ex_interp saamo automatycznie obliczyc jako 1/cl_updaterate ale w rzeczywistosci modele beda wtedy skakac i lepiej obliczyc to samemu wg ponizszego wzoru ex_interp = (1/ cl_updaterate) +0.02
przy cl_updaterate 50, ex_interp powinien wiec wynosic jakies 0.04
patrząc na net_graph widzimy dolny pasek (niebiesko żółty) najepiej tak ustawic ex_interp az nam sie nie pokazują żółto-czerwone fragmentu w graphie i wtedy mamy tylko fioletowo niebieski wykres.
Serwer
Na serwerze admin moze ustawic zmienne aby forsowac pewne wartosci. Dlaczego? Aby na przyklad nie placic za łącze więcej niż go stac.
Ponizsze wartosci kontroluja wartosci jakie gracze moga u siebie maksymalnie ustawic. Oznacza to ze jesli gracz ma wartosc wieksza niz ta ktora jest dana w parametrze sv_ to nie bedzie on z niej korzystal, bo serwer bedzie wywyslal wartosci ze swoich usatwien.
sv_maxrate
kontroluje maksymalna wartosc rate, jaka gracz moze otrzymac od serwera.
sv_maxupdaterate
kontroluje maksymalna wartosc sv_updaterate, domyslnie 30
stosowanie ponizszych wartości nie jest zalecane sczególnie przy zamawianiu HLTV na serwer z http://hltv.org
sv_minrate
kontroluje mininamlna wartość rate jaka wymaga serwer od graczy - powoduje zwiekszenie ruchu sieciowego, za wysoka warttosc dratycznie pogarsza gre wszstkim graczom.
sv_minupdaterate
kontroluje mininamlna wartość cl_updaterate , domyslnie 10
Przyklad: cl_updaterate 100 sv_maxupdaterate 50 w efekcie gracz bedzie dostawal 50 update na sekudne a nie 100 jak sobie zadeklarowal - oznacza to ze serwer mu bedzie wysylal mniej danych niz on chcialby dostawac - co dla niego nie jest ustawieniem zadowalajacym. Wiec klient recznie musi sobie ustawic cl_updaterate 50.
Przy wysokim cl_updaterate i innych parametrach mozna zauwazyc ze mozna miec upload do serwera wiekszy lub rowny downloadowi z serwera. Przwaznie nie trzeba sie tym przejmowac, ale nalezy miec na uwadze ze serwer otrzymuje od innych graczy takze dane ale łącze na serwerze powinno dac sobie rade bo dla niego upload clientow jest jego downloadem z netu. Ale trzeba pamietac ze serwer moze sam odrzucac zbyt czeste dane od klientow.
Zakonczenie
Przy pisaniu opieralem sie na:
- CS 1.6 Netcode explained - CS Report (dla cs 1.3 wszakże ale pare rzeczy jest nadal aktualnych) - http://board.counter-strike.pl - http://forums.unitedadmins.com - wlasnych obserwacjach
by _KaszpiR_ 20-04-2005 ver 0.7
Linki
- UC Guides - zestaw pomocy dla gier donetcode na silniku Quake 3 .
- Quake 3 Unlag mod and Unlag system - dla bardziej zainteresowanych tematem, po angielsku