Netgraph

Od HLDS.pl
Skocz do: nawigacji, wyszukiwania
Netgraph 00.gif

Spis treści

Wstęp

  • Net_Graph FAQ dla gier Steam i przed Steam.
  • Napisany dnia 05/16/2004 10:33:26 PM przez qUiCkSiLvEr
  • Tłumaczenie i poszerzenie informacji w nim zawartych - _KaszpiR_

Net_Graph czyli net graf (wykres ruchu sieciowego w grze) jest narzędziem wbudowanym w klienta gry Half-Life, i jest jednym z najlepszych narzędzi umożliwiających zrozumienie i polepszenie ustawień w grze.

Oczywiście przede wszystkim jest narzędziem diagnostycznym twojego połączenia internetowego z serwem gier, umożliwiającym zdiagnozowanie problemów z siecią oraz rozpoznanie czy problemy są w konfiguracji sieci, klienta czy serwera.

Większość graczy zna net graf, w artykule znajdziecie także wiadomości dla osób w ogóle nie obeznanych z niektórymi funkcjami gry - czytacie dalej :)

Jak włączyć net graf?

Najpierw musisz pójść do konsoli w grze. W Steam przeważnie nie ma problemu z uruchomieniem konsoli. Jeśli nie zmienialiście ustawień klawiszowych, to aktywacja konsoli jest pod znakiem tyldy (klawisz przed serią klawiszy 123456...), który przeważnie znajduje się pod klawiszem Escape.

W grach z przed ery team trzeba uruchomić grę (mod) z dodatkowym parametrem -console np jak miałeś hl.exe -game cstrike to trzeba uruchomić z hl.exe -game cstrike -console W grach z ery Steam trzeba wejśc w opcje i włączyć konsolę.

W grach Steam jesli nie możecie się doklikać do konsoli to trzeba w oknie My games najechać na pozycję z daną grą , nacisnąć Properties i w części Set lanch options wpisać -console.

Odpalamy konsolę. Wpisujemy:

net_graph 1

Pojawi się w rogu ekranu status. Jak wpiszecie net_graph 2 albo net_graph 3 to zmienicie wygląd netgrapha - będzie on pokazywał różne detale w zależności od trybu.

Netgraph 01.gif

Aby wyłączyć netgraph wpisz: net_graph 0

Extra Aby szybko wyświetlać netgraph i przełączać się między trybami można użyć takiego konfiga (wpisujesz w SteamSteamAppstwoj@mail<NAZWA_GRY><MOD>config.cfg czyli na przykład SteamSteamAppstwoj@mailCounter-Strikecstrikeconfig.cfg albo swoim konfigu prywatnym)

alias net net1
alias net1 "net_graph 1;wait;alias net net2"
alias net2 "net_graph 2;wait;alias net net3"
alias net3 "net_graph 3;wait;alias net net0"
alias net0 "net_graph 0;wait;alias net net1"
bind del net

W ostatniej linijce zamiast del możecie dać jakiś inny klawisz aby działał jako netgraph, np F12, oczywiście jeśli klawisz Delete wam nie odpowiada.

Konfigurowanie net grafu

Położenie

W tym celu używamy zmiennej net_graphpos 0, net_graphpos 1, net_graphpos 2. Odpowiednio ustawia na lewo, prawo, w centrum graf.

Szerokość

Rozmiar można kontrolować zmienną net_graphwidth 150, gdzie zamiast 150 można wstawić liczbę w pikselach (wartości ujemne raczej nic ciekawego nie dadzą).

Wysokość

Zmienna graphheigh 64, gdzie 64 definiuje domyślną wysokość grafu - można poeksperymentować aby wyeksportowac jakies napisy w inny fragment ekranu.


Netgraph 05.gif

Skala

net_scale 5 definuje skalę pakietów, domyślnie 1px to 5 bajtów danych. Zmiana na wartość 1 zwiększy rozmiar (bardziej rozciągnięty do góry), wartości większe od 5 spłaszczą wykres tylko dla net_graph 2.

Zauważcie jak jednak inaczej są umiesczeane teź inne elementy wykresu (np updaterate i cmdrate)


Kilka przykładów dla rozdzielczości 640 x 480

Standardowy

net_graphpos 1
net_graphwidth 150
graphheigh 64

Szeroki

net_graphpos 1
net_graphwidth 640
graphheigh 64

Wysoki

net_graphpos 1
net_graphwidth 200
graphheigh 200


Status koło radaru (na prawo)

Netgraph 06.gif
net_graph 2
net_graphpos 1
net_graphwidth 500
graphheigh 440



Status koło radaru (na dole)

Netgraph 07.jpg
net_graph 2
net_graphpos 1
net_graphwidth 640
graphheigh 320


Zachęcamy do eksperymentowania, szczególnie jeśli masz inną rozdzielczość. Zwracamy uwagę na net_graph 1 oraz 3

Odczytywanie net grafu

Jak pewnie zauważyliście na net grafie są pewne charakterystyczen pola.

Netgraph 08.gif


Pole 1

(net_graph 2), czyli część nad białymi kreseczkami po bokach Kolory oznaczają:

  • czerwony - dane gracza, to są twoje dane (zależne od tego ile ruchu wykonujesz)
  • żółty - dane gracza - inne (zależą od tego robisz oprócz ruchu - np celowanie, przeładowanie)
  • purpurowy - dane obiektów na mapie (np bronie na ziemi)
  • jasny niebieski - dane zdarzeń (np ktoś kogoś zabił)
  • ciemny niebieski - dane tymczasowych obiektów (np ktoś kogoś postrzelił w nogę: krew)
  • zielony - dane dźwięków na mapie
  • szary - dane zdefiniowane przez użytkownika
  • białe kropki na górze - rozmiar pakietu

Pole daje ogólną estymację rozmiaru pakietów jakie odbierasz od serwera. Domyślnie 1px to 5 bajtów danych.

Pole 2

Przedstawia numeryczne informacje o wydajności twojego komputera oraz jego połączenia sieciowego. Liczby przedstawiają odpowiednio, bazując na danym zrzucie ekranu

  • 23.3 - liczba fps (frames per second) czyli ile klatek na sekundę wyrabia maszyna i karta graficzna.
  • 78ms oznacza czas całkowity jaki jest potrzebny na przyjście pakietu od serwera w milisekundach (w tym czas na wypuszczenie pakietu w sieć przez serwer, normalny ping sieciowy oraz czas na przetworzenie pakietu do postaci wyświetlenia klatki obrazu), wartość nie wyświetlana raczej na serwerach listen (tworzonych przez New Game)

Wartość in podaje wielkość ostatniego odebranego pakietu od serwera, tutaj 32 bajtów oraz w ciągu ostatniej sekundy odebraliśmy w sumie 1.30 kilobajta danych (czyli 1.3k/s) Wartość out podaje wielkość ostatniego wysłanego pakietu do serwera, tutaj 25 bajtów oraz w wysłaliśmy w ciągu ostatniej sekundy 1.36k/s

Domyślacie się, że jeśli wasze łącze nie wyrabia w jedną lub drugą stronę (bo za bardzo wyżyłowaliście ustawienia) to nie dziwcie się, że gra wam się źle.

Pole 3

Znajduje się poniżej pola numerycznego i zawiera linie z zielonymi, żółtymi i czerwonymi kropkami oraz niebieskimi.

Zielone kropki (linia) oznacza jakie jest opóźnienie między graczem a serwerem dla każdego pakietu. Maksimum wynosi 1000ms (czyli jedna sekunda), na załączonym przykładzie mamy 78ms. Jednakże widzimy pewne problemy z siecią - wcześniej miał ostrego laga i pakiety zostały ograniczone (płasko ścięta górka pow. 1000ms z czerwonymi i niebieskimi fragmentami).

Czerwone kropki oznaczają pakiety utracone (dropped) - jest to najgorsze, co może nas spotkać gdyż nie uzyskujemy danych od serwera z powodu łącza (np nie wyrabia, routery odrzuciły z przeciążenia albo ważniejszego przychodzącego przekazu czy kolizji)

Żółte kropki oznaczają choke - to znaczy, że serwer powstrzymuje sie przed wysłaniem do ciebie zbyt wielu danych, gdyż tak ustawiłeś parametry, iż twoje łącze nie jest w stanie ich odebrać. Najczęściej zdarzają się w chwili restartu rundy czy śmierci jak serwer zalewa nas informacjami (np pojawienie sie graczy w miejscach, czy statystyki kto kogo zabił)

// nie sprawdzone Niebieskie kropki oznaczają, że nie przesłano żadnych danych od serwera - zdarza się przy problemach ze sprzętem, albo przy nagłym obciążeniu sprzętu, karty sieciowej (np jeśli jakiś proces

Pole 4

Wykres Pole jest związane z prędkością z jaką klient wyświetla obrazy na ekranie (fps) oraz związanym z tym ruchem sieciowym. Dla każdej wyświetlonej klatki obrazu, graf wskazuje w jakim stopniu wykorzystano funkcję interpolacji przy rysowaniu elementów na mapie. Interpolacja to nic innego tylko obliczenie miejsca gdzie się znajduje przedmiot wiedząc w jakich miejscach był - bazując na danych otrzymywanych od serwera. Jeśli dostajemy pakiety z odpowiednią prędkością bo nasze łącze wyrabia, nie ustawiliśmy ekstremalnych wartości oraz serwer nie ogranicza danych, to będziemy widzieli ciemnoniebieskie kropki (przy niskim updaterate wykres piłowy)

Jeśli nie dostajesz wystarczającej ilości update od serwera (jak twoje realne updaterate spada poniżej 10) w wyniku problemów z siecią (dropowanie pakietów, czyli packet loss) i ustawień sieciowych (np masz cl_updaterate 10 i jeszcze masz packet loss), wtedy klient nie jest w stanie interpolować położenia przedmiotów - musi ekstrapolować, czyli przewidywać gdzie obiekty się znajdują. Przykładem realnym i ekstremalnym są momenty kiedy nagle dostajemy laga - gra przycina, strzelamy i czekamy na reakcje serwera.

W takiej sytuacji zauważymy, że kropki zaczną tworzyć wyższe trójkąty, mające górną część oznaczoną na żółto, pomarańczowo i czerwono. Im większa ekstrapolacja tym bardziej czerwony kolor - i gorzej dla nas.

Pole 5

Liczba podaje wartość cl_updaterate czyli liczbę aktualizacji otaczającego nas świata jakie żądamy od serwera. Domyślnie wynosi ona 20 na sekundę. Wiele osób zmienia tę wartość aby polepszyć reakcje podczas gry. Uwaga, serwer może wymusić aby nie można było wycisnąć z niego więcej niż na to pozwala - sv_maxupdaterate, domyślnie 30. Wprowadzono to w celu oszczędzenia zużycia procesora. Zwiększenie cl_updaterate zwiększa ilość danych jakie ściągamy od serwera, ta wartość nie powinna być większa niż 100, najlepiej jeśli wynosi ona około 50 albo ilość fps jakie osiąga serwer (przeważnie 50 przy starszych maszynkach, 64, 72, 100 na bardzo dobrych). Jeśli serwer nie wyrabia z ilością fps albo ogranicza ich wysyłanie to my nie mamy co ustawiać więcej - prawdę mówiąc będzie sie nam grało gorzej niż lepiej.

Dodatkowo - ilość updaterate zależy od jakości twojego łącza (może po prostu nie wyrabiać).

Pole 6

Liczba reprezentuje maksymalną ilość pakietów jakie wychodzą od ciebie do serwera na sekundę - czyli wartość cl_cmdrate Domyślnie wynosi ona 30. Najlepiej jeśli jednak ustawisz ją na średnią liczbę fps jakie wyrabia twój komputer, ale spowoduje to zwiększenie ruchu sieciowego. Jeśli nie używasz opcji developer 1 to maksymalna ilość cmdrate to 100. Dla ekranów LCD wartości powyżej częstotliwości odświeżania, to jest około 75 są zbędne – niepotrzebne marnowanie łącza.

Dodatkowo, z każdym przesłaniem pakietu, wysyłamy pakiety z poprzednich akcji - dodajemy nadmiarowe dane w razie gdyby poprzednie pakiety nie doszły z powodu pomniejszych problemów sieciowych (małe skoki pinga, małe utraty pakietów). Kontrolujemy ilość tych zapasowych ramek zmienną cl_cmdbackup, która domyślnie ma wartość 2. Jeśli doświadczasz dużej ilości packet loss (dropowanie, wiele czerwonych kropek i poszarpany wykres w polu 4) to zwiększ tę wartość. Możesz wysłać powyżej 8 zapasowych komend, ale zauważ, że drastycznie zwiększa to twoje zużycie ruchu sieciowego od ciebie do serwera - z jednej strony lepiej nie przesadzać bo twoje łącze nie wyrobi. Radze nie przekraczać wartości 6.

Pole 7

To jest fragment na samym dole wykresu w polu 4. są tam jasnoniebieskiej czasem czerwone kropki, linie. Określają one twoją ilość fps wyświetlanych i generowanych przez kartę grafiki w stosunku do cl_cmdrate. Dla każdego pakietu jaki jest wysyłany rysowana jest jasnoniebieska kropka. Jeśli dane są gotowe do wysłania przed następnym pakietem (bo klient obliczył co może się zdarzyć) to pojawi się czerwona kropka.

Innymi słowy czerwona kropka pojawia się gdy twoje fps jest wyższe niż cl_cmdrate. Często oznacza to, że twoje cl_cmdrate może być zwiększone aż czerwone kropki znikną albo będą bardzo małe i będą sie pokazywać rzadko - twoja maszyna jest na tyle dobra, że mogła by częściej wysyłać update - lepiej byś czuł broń - nie skakał by celownik, chodziłby płynniej, reakcje miałbyś szybsze.

Pewna uwaga, ustawianie zbyt wysokiego cl_cnmdrate będzie znowu marnowaniem łącza - a można to wykorzystać też na inne elementy gry jak rozmowa przez mikrofon czy inne proramy jak GG czy irc ;D

Kilka przykładów:

  • FPS = 60, cl_cmdrate = 30 --> czerwone kropki (nie jesteś w stanie przesłać juz przygotowanych danych, musisz zaczekać na następny pakiet)
  • FPS = 60, cl_cmdrate = 60 --> brak czerwonych kropek (wysyłanie optymalne - najlepsza celność)
  • FPS = 30, cl_cmdrate = 60 --> brak czerwonych kropek (wysyłanie ekstra zduplikowanych danych - marnacja łącza)

Uwaga - ilość fps zmienia się w zależności od otoczenia w jakim grasz - obiekty na mapie, ilość graczy itp - warto patrzeć jak zmieniają się twoje fps i nie ma co wstawiać za dużo.


Netgraph 17.gif

Zauważ, że tutaj mamy updaterate 10 i cmdrate 10. Widac niebieskie trójkąty na dole (to wina niskiego updaterate) oraz od mniejwięcej połowy wykresu w poziomie na samym dole widac wyraźne czerwone kropki - bo mamy cmdrate 10, a gra wyciąga o wiele więcej akurat w tej chwili - więc moglibyśmy ją zwiększyc az znikną.

Przykłady net grafów

Netgraph 07.jpg

Parę przykładów dobrych i złych net grafów, niektóre są podciągnięte kolorystycznie aby zwiększyć kontrast.


Ten net graf jest charakterystyczny dla gracza który stworzył na własnym komputerze serwer poprzen New Game. Wykresy są idealnie płaskie.


Netgraph 09.gif

Perfekcyjny net graf na lanie. Widzimy bardzo nałe zmiany w zielonym wykresie, podobnie w wykresie pod nim. FPS jest wystarczające do grania, cmdrate 101, updaterate optymalnie dobrane na ten serwer.


Netgraph 10.gif

Tutaj mamy specyficznie ustawione parametry ustawione na serwerze - otóż mamy sv_maxupdaterate 13. Zauważcie czerwone kropki na lewym dolnym fragmencie (od lewej do końca napisu Free Look ) - ponieważ cl_cmdrate było ustawione na 10.

Popatrzmy na zielony wykres - wygląda jak rozdzielony na 2 części. To jest efekt ustawienia na serwerze sv_updaterate 13. Serwer przetwarza ramkę i wysyła ją albo natychmiast do klienta, albo czeka aż będzie czas na następną ramkę. Przy natychmiastowym przekazaniu pakietu mamy dolne zielone kropki, a przy odczekaniu - górne kropki. Ważną rolę odgrywało połączenie modemowe.



Netgraph 11.gif


Typowe zlagowane momentami łącze.

W okolicy czerwonej 30 w lewym dolnym rogu widzimy, że zielone kropki układają się w pochyłe pionowe linie - pakiety przychodzą bardzo nieregularnie - ogólnie, mocno zlagowane łącze. Żądane dane nie przychodzą w określonym czasie do klienta. Dlatego w tym czasie (krechy czerwone na dole) klient musi mocno ekstrapolować położenie innych graczy na mapie, aby można było jako tako grać. Widać fioletowe linie (powinny być czerwone, no cóż..) a wykres przypomina włoski pochylone na prawo.

W okolicach broni (niebieskie tło) widzimy mniejsze zielone górki - często spowodowane procesami zachodzącymi na serwerze - np inny serwer gry właśnie zmienia mapę, albo cos się dzieje i zżera trochę procesor. Szczególnie odczuwalne, jak odpala sie jakiś proces z wyższym priorytetem niż serwer gry.


Netgraph 12.gif

Ten net graf jest totalną porażką sieciową :D Zielone pagórki ze ścięciami, na dole pod nimi niebieskie wykresy przechodzą w podobne pagórki ale z czerwonymi ścięciami.

Zauważcie w pewnym fragmencie grube niebieskie linie (mniejwięcej w połowie wykresu) - wygląda na to, że urządzenie sieciowe przestało odpowiadać (hmm, piorun? :D)



Netgraph 14.gif

Widzicie duże błękitne kropy na górze rysunku? - ddoałem je specjalnie, to jest czas kiedy byłem trupem w grze. Teraz zobaczcie jakw ygląda tam wykres. Zauważcie małą żółtą kropkę pod pierwszą kropą błękitną na lewo - to moment kiedy gracz zginął. Dodatkowow wszstko co się wydażyło na serwerze klient dostał później iz gdy grał normalnie - wskazuje na to płaska linia zielona podniesiona o jeden piksel do góry (w stosunku do lewej części wykresu) z paroma wstępami jeszcze bardziej wysuniętych ku górze.


Netgraph 15.gif

Od połowy wykresu wcisnąłem ex_interp 0 - klient automatycznie dostosował ex_interp do wartości 1/cl_updaterate. Zauważcie jak wiele jest ółtych i czerwonych kropek w dolnej części wykresu.



Netgraph 16.gif

Bardzo niska wartość cl_updaterate powoduje, że zwiększone sa czasy interpolacji - charakterystyczne trójkąty kiedy jest interpolowanie położenia graczy na mapie między nastepnym spodziewanym pakietem.



Netgraph 17.gif

Podobny jak poprzedni, ale dodatkowo bardzo niska wartośc cl_cmdrate - wykres rysuje na samym dole czerwone kropki dając do zrozuienia, że mógłby częściej wysyłac dane do serwera ale sie powstyrzumje z powodu ustawien. Takie ustawienie spowoduje, że przy strzelaniu celownik będzie wracał bardzo ślamazarnie na normalne miejsce, i nie będzie tego robił płynnie, tylko skokami.



Netgraph 18.gif

Wtyka wyjęta z gniazda sieciowego daje takie efekty :D



Netgraph 19.gif

To jest typowy wykres przy zmianie mapy, podobne wykresy można też uzyskać jak przełączamy sie z gry na inną aplikację - wtedy mamy nagle skok i poziomy równy wykres na zielonym grafie.

Jak masz wiele różnych równoległych linii na grafie to znaczy, że jakies procesy pożerają ci zasoby komputera i procesor i inne elemty muszą zastopowac grę na chwilę aby zrobic cos innego. Zły objaw. Pierwszy długi wykres to wtedy kiedy apliakcja była w tle, drugi niżej, i krócej, to czas kiedy system przywracał wygląd okna na keran. Słychac tez było opźnienie dzwięku, ale po ułamku sekundy wszstko wróciło do normy.


Polepszanie ustawień

Warto ustawić komendę rate jak i cl_rate na wartości jakie posiada twoje łącze. Rate odpowiada za transfer od serwera do ciebie (czyli z jaką maksymalną prędkością ściągasz pliki z netu (przeważnie). Cl_rate za to działa w drugą stronę - jaki jest transfer od ciebie do serwera - czyli upload. Uwaga - bardzo często ta wartość jest mała - w granicach 12k/s (czyli cl_rate 12000). Lepiej zaniżyć wartości i mieć troszkę mniejsze cmdrate i updaterate ale za to na stałym poziomie, niż ustawić zbyt wysokie i łącze nie będzie wyrabiać powodując skoki podczas strzelania seriami.

Dodatkowo trochę poprawiono protokół sieciowy w grach Steam - troch lepiej obliczają interpolacje itp - dzięki temu płynniej się gra niż kiedyś. Jedni nazywają to zaletą, inni wadą :D

Nie ma co wyciskać serwera na sys_ticrate 10000 czy 1000, kiedy 125 w zupełności starczy, dodatkowo fps_max 200 powinno być ok (nikt nie używa cl_updaterate powyżej 101 bo praktycznie sie nie da.

Dzięki temu zaoszczędzisz zasoby serwera w postaci użycia procesora - myślę że lepiej jest mieć 2 serwera po 200 albo 127 fps niż jeden na którym wszelkie fps powyżej 200 (np 500) idą tak naprawdę w ciepło radiatora na procesorze :)

Warto zaznajomić sie z poniższymi artykułami:

(te dwa powyższe artykuły powinny być połączone, ale nie chce mi się :D

Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia