Poprawiamy jakość połączenia (ping, loss i choke)
1.1 Opis wartości.
1.2 Zakres wartości.
1.3 net_graph.
1.4 Nasz internet.
1.5 Jak obliczyć wartości.
1.6 Loss i Choke.
1.7 Zakończenie.
1.1 Opis wartości.
W Counter strike'u za ustawienia odpowiadające za to jaki mamy ping do serwera odpowiedzialne są przede wszystkim te wartości jak: cl_cmdrate, cl_updaterate, cl_rate, rate, cl_cmdbackup.
Zacznę od małego objaśnienia na jakiej zasadzie funkcjonują te wartości i za co odpowiadają.
Jak wiemy pakiety krążą od serwera do gracza i odwrotnie. Paczki te zawierają informacje o położeniu gracza, każdym jego ruchu, oddanym strzale itd.
Komendy, które są odpowiedzialne za przesyłanie pakietów od gracza do serwera to: cl_rate, cl_cmdrate, natomiast od serwera do gracza rate i cl_updaterate. Komenda cl_cmdbackup ustawia ilość ramek, które można przesyłać ponownie jeśli łącze użytkownika jest zapchane np. jak się ma skoki loss albo choke (możemy się dowiedzieć jakie mamy loss albo choke wpisują w konsoli w CS'ie komendę net_graph "3"). Ramki (FPS - ramki na sekundę) o których wspomniałem wcześniej to informacje przesyłane między klientem a serwerem (w obie strony). Jeżeli np. serwer wysyła do nas 60 ramek na sekundę, to nasz klient nie będzie ich miał więcej.
1.2 Zakres wartości.
Ilość danych w ramce od gracza z reguły jest mała, gdyż mniej więcej wynosi 20-25 bajtów. Serwer natomiast wysyła znacznie więcej bajtowa do nas w ramkę (30-40 bajtów podczas, gdy się nic nie dzieje, lecz gdy zaczyna się coś dziać więcej (więcej strzałów, więcej graczy żywych itp.) dochodzi nawet do 180 bajtów na ramkę). Licząc, że mamy np. 60 FPS, to powinniśmy otrzymywać mniej więcej 60fps x 180bajtow = 10800 bajtów na sekundę (10KB/s) - czyli 20 osób na fy_snow robiących totalna rozpierduchę.
1.3 Net_graph.
Dzięki temu dodatkowi możemy się wiele dowiedzieć o dokładnym działaniu w danym momencie naszego łącza i połączenia z serwerem. Jak pisałem wcześniej wpisując w konsoli komendę net_graph "3" powinniśmy z reguły w dolnym prawym rogu naszej ukochanej gry ujrzeć coś takiego (nie będzie identyczne rzecz jasna, jeżeli chodzi o wartości)
wpisujac net_graph 3 zamiast tych kolorowych linii u dołu wyświetla nam się wartości;
loss i choke.
Objasniając:
W pieszej linijce naszego net_grapha widać, ile mamy w danym momencie klatek na sekundę (zwanych dalej i potocznie FPS'ami). Druga liczba tuz z prawej strony od napisu 'fps' mamy podany czas w milisekundach (ms), który dzieli nas od serwera (zwany potocznie "PING'iem") - oznacza ona dokładnie czas w jakim rożni się, to co widzimy od tego co dostajemy od serwera i to co wysyłamy do niego.
Druga linia pokazuje dane jakie otrzymujemy z serwera (34 - wielkość ramki w bajtach co przy danym cl_updaterate można przeliczyć na 1.48 k/s).
Trzecia linia ukazuje natomiast to samo co linia druga tylko ze w druga stronę, czyli od nas do serwera. Tutaj mamy wielkość ramki wynosząca 25 bajtów co w przeliczeniu przy danym cl_cmdrate wynosi 1.35 k/s.
Ostatnia linie opisze później.
1.4 Nasz internet.
Informacje o naszym łączu najczęściej przedstawione są w kilobitach. Upload z reguły mamy 2 albo 4 razy mniejszy od naszego downloadu, np. 512/256, co oznacza ze nasz internet jest w stanie ściągać informacje z szybkością 512 kilobitów na sekundę co daje maksymalnie 64 kilobajtów na sekundę - oblicza się, to tak ze dzielimy kilobity przez 8 i otrzymujemy wartość w kilobajtach. Są to łącza asynchroniczne. Natomiast łącza, które maja taka sama szybkość ściągania i wysyłania, to łącza synchroniczne. Na takim łączu powinien być postawiony serwer.
Przydatnym gadżetem, który umożliwia nam bardzo dokładne określenie parametrów naszego łącza jest strona poniżej:
Speakeasy - Speed Test
Pozwala ona sprawdzić nasze łącze z dużą dokładnością, ponieważ jest wiadome to, że jakaś cześć łącza zawsze jest wykorzystywana choćby do procesów sieciowych, wiec do wzorów opisanych w następnym podpunkcie nie powinniśmy podstawiać wartości, które podaje nam nasz provider internetu, lepiej użyć wartości otrzymanych podczas testu.
Podczas wykonywania testu podobno najlepiej wyłączyć wszystkie zbędne programy pobierające lub wysyłające coś do sieci.
1.5 Jak obliczyć wartości?
Zacznijmy od cl_rate i rate
* cl_rate
Wyliczamy wartość z następującego wzoru:
cl_rate = (x * 0,9) / 8
gdzie x to nasz upload w bitach na sekundę
Jeżeli wyjdzie nam liczba z przecinkiem to zaokrąglamy ją w dół.
przyklad:
ÄšÂ?Ă??cze 256/128. Bierzemy wartość 128, mnożymy ją przez 1000 i otrzymujemy wartość w bitach czyli 128000 i wg. wzoru powinno nam wyjść: (128000*0.9)/8 = 14400.
* rate
Wyliczamy wartość z następującego wzoru:
rate = (x * 0,9) / 8
gdzie x to download w bitach na sekundę
Jeżeli wyjdzie nam liczba z przecinkiem to zaokrąglamy ja w dol.
Jednakże wartością maksymalna dla rate jest 25000, wiec gdy wyjdzie nam wynik większy niż 25000 to wpisujemy i tak 25000.
W sumie mamy wszystko to samo co w cl_rate tylko, że bierzemy wartość naszego downloadu maksymalnego.
Zajmijmy się teraz cl_cmdrate i cl_updaterate.
* cl_cmdrate
Bierzemy nasz cl_rate, który obliczyliśmy wyżej i dzielimy przez 25. Dla powyższego przykładu z łączem 256/128 powinno nam wyjść 14400 / 25 = 576.
Jednakże wartością maksymalna dla cl_cmdrate jest 400, wiec w tym przykładzie ustawiamy 400 jako wartość dla cl_cmdrate.
W rzeczywistości wielu graczy uważa, że najlepiej ustawić tą wartość równą średniej liczbie naszych fpsow w grze (sugerowałbym właśnie użyć tej metody do ustawienia tej wartości).
* cl_updaterate
Bierzemy nasz rate, który obliczyliśmy wyżej i dzielimy przez 175. Dla powyższego przykładu z łączem 256/128 powinno nam wyjść 25000 / 175 = 142.
Jednakże wartością maksymalna dla cl_updaterate jest 100, wiec w tym przykładzie ustawiamy 100 jako wartość dla cl_cmdrate.
Zajmijmy się również wartością dla cl_cmdbdackup
* cl_cmdbdackup
Zwykle ta wartość domyślnie jest ustawiona na 2.
Czasami ustawianie wartości zmiennych cl_cmdrate i cl_updaterate powyżej ilości fps serwera może okazać się zbyteczne bo serwer ich nie przyjmie bo nie wyrobi.
Najlepiej jak ustawimy cl_cmdbdackup jako cl_cmdrate / fps serwera.
Ja osobiście ze swoich doświadczeń sugerowałbym ostawić ta wartość większa niż 2 i sprawdzać jakość gry sugerując się przede wszystkim net_graphem.
1.6 Loss i Choke.
* Loss
Loss mówi nam o tym ile danych, które zostały wysłane z serwera na którym gramy do nas i odwrotnie nie zostały przez nas odebrane/wysłane, co powoduje to ze ruchy przeciwników (strzały, ruch, pozycja celownika) są przez nas w pewnym momencie niewidoczne (postacie mogą eis 'teleportować' czyli przeskakiwać), a z naszej strony trudniej ich trafić, gdyż pakiety z danymi o informacjach z trajektoriami naszego strzału są źle albo wcale nie wysyłane.
Na lossie do wartości 8-10 da się grac, ale wiadomo ze im mniejszy loss tym nasza gra jest przyjemniejsza i ze swojego doświadczenia wiem, że dla bardziej obytych graczy przy lossie 4-5 gra jest 'niefajna'.
Więc, gdy nasz loss jest za duży musimy zmniejszyć wartości opisane w tym artykule, aż do momentu gdy uzyskamy satysfakcjonujący wynik.
* Choke
Choke, to dane jakie nasz klient albo serwer na którym gramy powstrzymuje od wysłania gdyż parametry, które ma ustawione serwer albo klient (czyli my) mu na to nie pozwalają. Pisząc jaśniej chodzi o to, że możliwości łącza nie pozwalają na to.
Na choke tak jak na lossie podobno do wartości 10 można grać, ale znów z własnego doświadczenie napisze, że to nieprawda, gdyż u mnie przy choke pow. 2 gra wygląda jak pokaz slajdów.
Choke pojawia kiedy nasze rate jest zbyt niskie do cl_updaterate, podobnie jest jeśli mamy za małe cl_rate w stosunku do naszego cl_cmdrate. Zatem w pierwszej kolejności obniżamy wartości cl_updaterate i cl_cmdrate, aż nasze diabelskie choke zniknie A jeżeli to nie pomoże, to zmniejszamy nieco nasz rate i cl_rate.
1.7 Zakończenie.
Mam nadzieje, że poradnik się przyda. Za wszystkie błędy z góry przepraszam.
Użytkownik ~Karol edytował ten post 19:17:45 - 11.01.2011






Do góry












