Płynność gry, czyli o czasie odświeżaniu ekranu, liczbie FPS
[CB]amz - 2008-12-17, 00:58
http://blog.ziaja.name/2008/12/plynnosc-gry.html
zapraszam :)
r4m1k* - 2008-12-17, 19:47
Płynność gry, czyli o czasie odświeżania ekranu, liczbie FPS i wysokości tickrate
Z uwagi na tendencje w prześciganiu się graczy z liczbą klatek na sekundę (FPS), postanowiłem napisać ten oto wpis, wyjaśniający ogółem o co chodzi w częstotliwości odświeżania, liczbie klatek na sekundę, a także dodatkowo o tickrate serwerów gier.
Tak więc do rzeczy, niski współczynnik klatek na sekundę powoduje u widza wrażenie "skakania" obrazu, z kolei wysoki zwiększa wrażenie płynności wyświetlania. Dzięki przenikaniu się ze sobą kolejnych klatek filmu nagranego kamerą takie wrażenie ma miejsce już przy ok. 15 fps, dla sekwencji złożonej z klatek niemających ze sobą nic wspólnego (np. w grach komputerowych) wymagany współczynnik wzrasta do 30-60 fps. Przy tej samej karcie graficznej częstotliwość odświeżania jest odwrotnie proporcjonalna do rozdzielczości, czyli im większa rozdzielczość tym mniejsza częstotliwość odświeżania.
Przejdźmy jednak do sedna sprawy, w dużym uproszczeniu pisząc (ponieważ m.in. wyświetlanie obrazu różni się trochę na LCD jak na CRT), jeśli w grze wyciągamy np. 120 fps, a nasz monitor ma częstotliwość odświeżania 60 Hz, wtedy do bufora karty podawane jest 120 fps, jednak karta graficzna jest w stanie do ekranu przekazać tylko 60 fps (odświeżanie obrazu 60 Hz), w wyniku czego na monitor tafia połowa klatek (w uproszczeniu), przez co tracimy płynność gry, dlatego też, żeby nie tracić owej płynności powinniśmy mieć ustawioną za pomocą odpowiedniej komendy taką samą maksymalną liczbę fps jak częstotliwość odświeżania monitora, czyli jeśli mamy 60 Hz ustawiamy maksymalną liczbę 60 fps (nie piszę już nawet, że kluczowe znaczenie ma tu stała liczba fps i że przykładowo lepiej się gra na stałych 50 fps jak zmiennej liczbie 50-250 fps). Aby sprawdzić jaką częstotliwość odświeżania ma nasz monitor klikamy prawym klawiszem myszki na pulpicie, następnie właściwości, ustawienia, zaawansowane, monitor.
Maksymalną liczę fps w grze ustawimy po przez komendę com_maxfps w grach z serii Call of Duty, komenda fps_max (tutaj istnieje wyjątek, zawsze ustawiamy +1 fps, czyli jeśli mamy 60 Hz odświeżanie to ustawiamy fps_max 61) w grach z serii Counter-Strike, jak i wszystkich innych na silniku Source (np. Insurgency). Jednak jeśli nasza karta jest w stanie wyciągnąć stałe 150 fps, a częstotliwość odświeżania to 60 Hz, to możemy poprawić wygląd grafiki w grze, żeby choćby nacieszyć oko, co więcej, w większości gier FPP poprawienie wyglądu grafiki znacznie poprawia jakość rozgrywki (widoczność cieni przeciwnika itd.).
Jeśli gramy online to istnieją jeszcze inne znaczące czynniki od których zależy płynność rozgrywki, takie jak ping (opóźnienie), czy tickrate, tickrate to liczba mówiąca o tym ile razy na sekundę serwer przetwarza informacje dotyczące zmian w grze (czyli pozycje graczy, przedmiotów itd.), tickrate powinien przyjmować wartości 33, 66 lub 100, przynajmniej z teoretycznego punktu widzenia, w praktyce jest jednak różnie (serwery odpalone są np. na tickrate 100 i nie wyrabiają w wyniku czego utrzymują tickrate rzędu 80-90). Im wyższy tickrate, tym większa dokładność dokonywanych obliczeń na serwerze i częstotliwość dostarczania informacji do gracza, na serwerach z większych tickrate (np. 100, najlepiej widać to w grach na silniku Source), można odnotować lepszą precyzję w strzelaniu oraz pełną płynność w grze, natomiast na serwerach o niższym tickrate (np. 33) zauważalne są lagi (serwer nie nadąża z liczeniem) oraz bardzo częste (co zauważalne jest głównie w Counter-Strike: Source) przypadkowe trafienia, kiedy to gracz np. w czasie odwracania się odda niekontrolowany strzał, a trafi prosto w przeciwnika (taki strzał w animacji poklatkowej nawet nie jest wymierzony w przeciwnika, więcej informacji tutaj).
Mam nadzieję, że mój wpis przybliżył trochę czemu większa liczba fps powyżej pewnej wartości nie prowadzi do niczego dobrego (ponieważ tracimy płynność gry), a także dodatkowo informacje na temat jakie znaczenie ma np. trickrate serwerów gier .
Źródła:
http://pl.wikipedia.org
http://developer.valvesoftware.com
Castiel - 2008-12-19, 08:27
Nie wiem skąd się wzięła ta teoria o częstotliwości odświeżania ekranu i max fps, ale u mnie nijak się to sprawdza w praktyce. Może sprawdza się to w innych grach, ale w cod 4 nie. Według tego co jest tutaj napisane, to przy monitorze z częstotliwością odświeżania ekranu 75Hz optymalna wartość max fps to 76. No więc spróbowałem przejść ze stałych 125 fps na 76 i różnica jest zauważalna, ale niestety niepozytywna... Oprócz tego, że bardzo utrudnia to część jump'ów, szybkość gry spada co za tym idzie nasz czas reakcji wzrasta (mimo że według tej teorii nie powinno się odczuwać różnicy). Obraz wyświetlany jest wolniej w porównaniu do stałych 125fps, jeszcze wolniej w porównaniu do 250, nie mówiąc już o 333fps. Ja osobiście wolę zachować szybkie tempo gry i szybszy czas reakcji niż zyskać tą płynność gry której w ogóle nie zauważyłem.
Poza tym ostatni argument jest taki, że ogromna część światowej sceny cod 4, właściwie to większość (o polskiej nie piszę, bo się nią nie interesuje...) gra na stałych 125 fps (lub więcej jeśli na LAN'ach zezwalają), mimo że grają na monitorach z mniejszą częstotliwością odświeżania ekranu. Jeśli ktoś ma wątpliwości wystarczy ściągnąć config pierwszego lepszego gracza z czołowych klanów takich jak np. Dignitas, Fnatic, ButtonBashers, SRS, eSuba, KC, VAE itp... czy choćby poszukać u naszych graczy z PGS, UFG, TM. Wszyscy mają wartość max fps większą od częstotliwości odświeżania ekranu.
Jaki sens miałoby kupowanie coraz to nowszych i wydajniejszych kart graficznych jeśli ograniczała by nas częstotliwość odświeżania ekranu gdzie w monitorach LCD najczęściej jest to 60-75Hz?
Wydaje mi się, że jeśli ktoś nie wie jak ustawić odpowiednie wartości dla niektórych komend w grze to lepiej ściągnąć config jakiegoś ogarniętego gracza który wszystko ma już ustawione i dopasowanie tylko niektórych opcji pod siebie i swój sprzęt albo zapoznanie się z artykułem zamieszczonym na tym portalu - LINK
DeV - 2008-12-19, 09:16
Jest kilka ważnych kwestii, które powinno się wiedzieć. Jak pewnie wiecie CoD4 to silnik Q3 zmodyfikowany ale jednak, i jak w większości grach na tym silniku naprawdę stałe fps'y to:
43, 76, 125, 250, 333.
Do czego są 43 (np.: w ET) był wykorzystywany do zmniejszenia recoila na snajpie (na smg nie działał) oczywiście trzeba było mieć scrypt do tego.
76 - powszechnie stosowany jakieś 6 lat temu ;p (lepsza płynność ale nadal jakby się zacinało)
125 - wyższe jumpy, optymalna płynność (w większości grach powoduje większą szybkostrzelność są to niezauważalne różnice im wyżej tym szybciej).
250 - nigdy nie używałem i nie widziałem by ktoś stosował.
333 - w Q3 i ET daje dłuższy bunny hopping, większą prędkość (nie nadaje się do jakiegokolwiek one4one to fps tylko do trickjumpów).
I to najważniejsze CRT ma odświeżanie owszem, ale LCD odświeżanie jest inne nie pamiętam jakie i niema żadnego znaczenia. Odświeżanie w CRT polega na podświetleniu jednej linii na monitorze (CRT) 60Hz oznacza że ta jedna linia będzie odświeżana 60 razy na sekundę. Nie jesteśmy w stanie tego dostrzec ale jak włączymy aparat lub kamerę można zobaczyć czarny pasek przelatujący przez monitor. W LCD tego nie ma bo jego mechanizm działa inaczej (nie pamiętam teraz jak to leciało Hmm albo to plazma niema odświeżania NIEWAŻNA W LCD odświeżanie jest tak ważna jak że twoja dziewczyna kupiła nową torebkę ... SUUUUUPER who cares ? ). Jeśli to was nie przekonuje popatrzcie na CRT 60Hz i LCD 60Hz od którego będą was boleć oczy ?
Możliwe że ta teoria przedstawiona przez amz'a sprawdza się na CRT nie wiem nie próbowałem. Ale moim zdaniem monitor niema tu nic do gadania. To co jest ważne to:
com_maxfps
snaps
rate
cl_maxpackets
Ale to już chyba wszyscy dawno wiedzą ... prawda ?
Maro969 - 2009-03-03, 20:44
w moim przypadku to sie sprawdza ... gdy mam częstotliwość 85 hz ni da rady wycisnąć więcej niż 85 FPS
Cra-Nick - 2009-03-06, 14:35
w moim przypadku to sie sprawdza ... gdy mam częstotliwość 85 hz ni da rady wycisnąć więcej niż 85 FPS
Bo masz włączoną synchronizacje pionową w opcjach grafiki
Gracz - 2009-03-24, 17:07
Włączcie synchronizacje pionową to wam nigdy fps nie wyjdą poza częstotliwość odświeżania ekranu. Jakie masz odświeżanie tyle twój monitor jest w stanie wyświetlić maksymalnie fps. A człowiek o ile się orientuje to jeszcze mniej widzi. Ale to nie zmienia faktu że lepiej grać 125 fps niż 75. Bo to gra przede wszystkim widzi różnice. Tak się zachowuje silnik CoD4 i już. Mimo że monitor nie wyświetla tyle fps to karta i tak to wszystko jednak liczy.zanotowane.pl doc.pisz.pl pdf.pisz.pl ilemaszlat.htw.pl
[CB]amz - 2008-12-17, 00:58
http://blog.ziaja.name/2008/12/plynnosc-gry.html
zapraszam :)
r4m1k* - 2008-12-17, 19:47
Płynność gry, czyli o czasie odświeżania ekranu, liczbie FPS i wysokości tickrate
Z uwagi na tendencje w prześciganiu się graczy z liczbą klatek na sekundę (FPS), postanowiłem napisać ten oto wpis, wyjaśniający ogółem o co chodzi w częstotliwości odświeżania, liczbie klatek na sekundę, a także dodatkowo o tickrate serwerów gier.
Tak więc do rzeczy, niski współczynnik klatek na sekundę powoduje u widza wrażenie "skakania" obrazu, z kolei wysoki zwiększa wrażenie płynności wyświetlania. Dzięki przenikaniu się ze sobą kolejnych klatek filmu nagranego kamerą takie wrażenie ma miejsce już przy ok. 15 fps, dla sekwencji złożonej z klatek niemających ze sobą nic wspólnego (np. w grach komputerowych) wymagany współczynnik wzrasta do 30-60 fps. Przy tej samej karcie graficznej częstotliwość odświeżania jest odwrotnie proporcjonalna do rozdzielczości, czyli im większa rozdzielczość tym mniejsza częstotliwość odświeżania.
Przejdźmy jednak do sedna sprawy, w dużym uproszczeniu pisząc (ponieważ m.in. wyświetlanie obrazu różni się trochę na LCD jak na CRT), jeśli w grze wyciągamy np. 120 fps, a nasz monitor ma częstotliwość odświeżania 60 Hz, wtedy do bufora karty podawane jest 120 fps, jednak karta graficzna jest w stanie do ekranu przekazać tylko 60 fps (odświeżanie obrazu 60 Hz), w wyniku czego na monitor tafia połowa klatek (w uproszczeniu), przez co tracimy płynność gry, dlatego też, żeby nie tracić owej płynności powinniśmy mieć ustawioną za pomocą odpowiedniej komendy taką samą maksymalną liczbę fps jak częstotliwość odświeżania monitora, czyli jeśli mamy 60 Hz ustawiamy maksymalną liczbę 60 fps (nie piszę już nawet, że kluczowe znaczenie ma tu stała liczba fps i że przykładowo lepiej się gra na stałych 50 fps jak zmiennej liczbie 50-250 fps). Aby sprawdzić jaką częstotliwość odświeżania ma nasz monitor klikamy prawym klawiszem myszki na pulpicie, następnie właściwości, ustawienia, zaawansowane, monitor.
Maksymalną liczę fps w grze ustawimy po przez komendę com_maxfps w grach z serii Call of Duty, komenda fps_max (tutaj istnieje wyjątek, zawsze ustawiamy +1 fps, czyli jeśli mamy 60 Hz odświeżanie to ustawiamy fps_max 61) w grach z serii Counter-Strike, jak i wszystkich innych na silniku Source (np. Insurgency). Jednak jeśli nasza karta jest w stanie wyciągnąć stałe 150 fps, a częstotliwość odświeżania to 60 Hz, to możemy poprawić wygląd grafiki w grze, żeby choćby nacieszyć oko, co więcej, w większości gier FPP poprawienie wyglądu grafiki znacznie poprawia jakość rozgrywki (widoczność cieni przeciwnika itd.).
Jeśli gramy online to istnieją jeszcze inne znaczące czynniki od których zależy płynność rozgrywki, takie jak ping (opóźnienie), czy tickrate, tickrate to liczba mówiąca o tym ile razy na sekundę serwer przetwarza informacje dotyczące zmian w grze (czyli pozycje graczy, przedmiotów itd.), tickrate powinien przyjmować wartości 33, 66 lub 100, przynajmniej z teoretycznego punktu widzenia, w praktyce jest jednak różnie (serwery odpalone są np. na tickrate 100 i nie wyrabiają w wyniku czego utrzymują tickrate rzędu 80-90). Im wyższy tickrate, tym większa dokładność dokonywanych obliczeń na serwerze i częstotliwość dostarczania informacji do gracza, na serwerach z większych tickrate (np. 100, najlepiej widać to w grach na silniku Source), można odnotować lepszą precyzję w strzelaniu oraz pełną płynność w grze, natomiast na serwerach o niższym tickrate (np. 33) zauważalne są lagi (serwer nie nadąża z liczeniem) oraz bardzo częste (co zauważalne jest głównie w Counter-Strike: Source) przypadkowe trafienia, kiedy to gracz np. w czasie odwracania się odda niekontrolowany strzał, a trafi prosto w przeciwnika (taki strzał w animacji poklatkowej nawet nie jest wymierzony w przeciwnika, więcej informacji tutaj).
Mam nadzieję, że mój wpis przybliżył trochę czemu większa liczba fps powyżej pewnej wartości nie prowadzi do niczego dobrego (ponieważ tracimy płynność gry), a także dodatkowo informacje na temat jakie znaczenie ma np. trickrate serwerów gier .
Źródła:
http://pl.wikipedia.org
http://developer.valvesoftware.com
Castiel - 2008-12-19, 08:27
Nie wiem skąd się wzięła ta teoria o częstotliwości odświeżania ekranu i max fps, ale u mnie nijak się to sprawdza w praktyce. Może sprawdza się to w innych grach, ale w cod 4 nie. Według tego co jest tutaj napisane, to przy monitorze z częstotliwością odświeżania ekranu 75Hz optymalna wartość max fps to 76. No więc spróbowałem przejść ze stałych 125 fps na 76 i różnica jest zauważalna, ale niestety niepozytywna... Oprócz tego, że bardzo utrudnia to część jump'ów, szybkość gry spada co za tym idzie nasz czas reakcji wzrasta (mimo że według tej teorii nie powinno się odczuwać różnicy). Obraz wyświetlany jest wolniej w porównaniu do stałych 125fps, jeszcze wolniej w porównaniu do 250, nie mówiąc już o 333fps. Ja osobiście wolę zachować szybkie tempo gry i szybszy czas reakcji niż zyskać tą płynność gry której w ogóle nie zauważyłem.
Poza tym ostatni argument jest taki, że ogromna część światowej sceny cod 4, właściwie to większość (o polskiej nie piszę, bo się nią nie interesuje...) gra na stałych 125 fps (lub więcej jeśli na LAN'ach zezwalają), mimo że grają na monitorach z mniejszą częstotliwością odświeżania ekranu. Jeśli ktoś ma wątpliwości wystarczy ściągnąć config pierwszego lepszego gracza z czołowych klanów takich jak np. Dignitas, Fnatic, ButtonBashers, SRS, eSuba, KC, VAE itp... czy choćby poszukać u naszych graczy z PGS, UFG, TM. Wszyscy mają wartość max fps większą od częstotliwości odświeżania ekranu.
Jaki sens miałoby kupowanie coraz to nowszych i wydajniejszych kart graficznych jeśli ograniczała by nas częstotliwość odświeżania ekranu gdzie w monitorach LCD najczęściej jest to 60-75Hz?
Wydaje mi się, że jeśli ktoś nie wie jak ustawić odpowiednie wartości dla niektórych komend w grze to lepiej ściągnąć config jakiegoś ogarniętego gracza który wszystko ma już ustawione i dopasowanie tylko niektórych opcji pod siebie i swój sprzęt albo zapoznanie się z artykułem zamieszczonym na tym portalu - LINK
DeV - 2008-12-19, 09:16
Jest kilka ważnych kwestii, które powinno się wiedzieć. Jak pewnie wiecie CoD4 to silnik Q3 zmodyfikowany ale jednak, i jak w większości grach na tym silniku naprawdę stałe fps'y to:
43, 76, 125, 250, 333.
Do czego są 43 (np.: w ET) był wykorzystywany do zmniejszenia recoila na snajpie (na smg nie działał) oczywiście trzeba było mieć scrypt do tego.
76 - powszechnie stosowany jakieś 6 lat temu ;p (lepsza płynność ale nadal jakby się zacinało)
125 - wyższe jumpy, optymalna płynność (w większości grach powoduje większą szybkostrzelność są to niezauważalne różnice im wyżej tym szybciej).
250 - nigdy nie używałem i nie widziałem by ktoś stosował.
333 - w Q3 i ET daje dłuższy bunny hopping, większą prędkość (nie nadaje się do jakiegokolwiek one4one to fps tylko do trickjumpów).
I to najważniejsze CRT ma odświeżanie owszem, ale LCD odświeżanie jest inne nie pamiętam jakie i niema żadnego znaczenia. Odświeżanie w CRT polega na podświetleniu jednej linii na monitorze (CRT) 60Hz oznacza że ta jedna linia będzie odświeżana 60 razy na sekundę. Nie jesteśmy w stanie tego dostrzec ale jak włączymy aparat lub kamerę można zobaczyć czarny pasek przelatujący przez monitor. W LCD tego nie ma bo jego mechanizm działa inaczej (nie pamiętam teraz jak to leciało Hmm albo to plazma niema odświeżania NIEWAŻNA W LCD odświeżanie jest tak ważna jak że twoja dziewczyna kupiła nową torebkę ... SUUUUUPER who cares ? ). Jeśli to was nie przekonuje popatrzcie na CRT 60Hz i LCD 60Hz od którego będą was boleć oczy ?
Możliwe że ta teoria przedstawiona przez amz'a sprawdza się na CRT nie wiem nie próbowałem. Ale moim zdaniem monitor niema tu nic do gadania. To co jest ważne to:
com_maxfps
snaps
rate
cl_maxpackets
Ale to już chyba wszyscy dawno wiedzą ... prawda ?
Maro969 - 2009-03-03, 20:44
w moim przypadku to sie sprawdza ... gdy mam częstotliwość 85 hz ni da rady wycisnąć więcej niż 85 FPS
Cra-Nick - 2009-03-06, 14:35
w moim przypadku to sie sprawdza ... gdy mam częstotliwość 85 hz ni da rady wycisnąć więcej niż 85 FPS
Bo masz włączoną synchronizacje pionową w opcjach grafiki
Gracz - 2009-03-24, 17:07
Włączcie synchronizacje pionową to wam nigdy fps nie wyjdą poza częstotliwość odświeżania ekranu. Jakie masz odświeżanie tyle twój monitor jest w stanie wyświetlić maksymalnie fps. A człowiek o ile się orientuje to jeszcze mniej widzi. Ale to nie zmienia faktu że lepiej grać 125 fps niż 75. Bo to gra przede wszystkim widzi różnice. Tak się zachowuje silnik CoD4 i już. Mimo że monitor nie wyświetla tyle fps to karta i tak to wszystko jednak liczy.