Wydajność w grach, czyli co to jest FPS, Frametime i opóźnienia

Wydajność w grach, czyli co to jest FPS, Frametime i opóźnienia

W swoich recenzjach i niektórych poradnikach bardzo często wspominam, że dana gra chodzi z takim i takim FPS, albo (głównie w przypadku gier emulowanych) z pełną prędkością. Dzisiaj postaram się wyjaśnić, o co dokładnie chodzi ze wszystkimi popularnymi określeniami dotyczącymi wydajności w grze i w jaki sposób Wy sami możecie kontrolować wydajność rozgrywki na swoim komputerze.

Co to jest FPS?

Zdecydowanie najpopularniejszym określeniem dotyczącym wydajności (znanym zresztą przez większość graczy) jest FPS (ang. Frames per Second = klatki na sekundę). Ta metryka jest używana nie tylko w grach, ale także w filmach, czy przy animacjach, a pokazuje ona, ile nowych klatek obrazowych jest generowanych/odtwarzanych w ciągu jednej sekundy (klatki, to statyczne obrazki, których wyświetlanie w szybkim tempie daje iluzję ruchu). W dużym uproszczeniu: im więcej FPS, tym obraz i wszystkie animacje na ekranie są płynniejsze i bardziej naturalne. Właśnie dlatego, gdy gra zacina się lub “laguje” to często mówimy o spadku FPS.

Przy założeniu, że nie ogranicza nas odświeżanie monitora ani inne metryki, większa liczba FPS zapewni nam obiektywnie lepsze wrażenia w klasycznie działających grach komputerowych. 

Gra Castle Crasher działająca w 144 FPS

Wyjątkiem od wspomnianej reguły są gry, w których FPS jest bezpośrednio powiązany z fizyką w grze (spotkamy się z tym między innymi przy emulacji retro konsol na PC, czy w niektórych grach konsolowych, np. takich jak Bloodborne). Przy takich tytułach wyłączenie limitu FPS i zwiększenie liczby klatek na sekundę oprócz polepszenia płynności doprowadzi też do równie dużego przyspieszenia gry (gdy gra oryginalnie chodziła w 30 FPS, a my uruchomimy ją w 60 FPS, to wszystko będzie dwa razy szybsze niż normalnie). Właśnie dlatego przy testowaniu emulacji, często zamiast podawania konkretnych liczb, mówi się, że coś chodzi z pełną/oryginalną prędkością. W natywnych grach na PC jest to spotykane bardzo rzadko, więc większość osób nie musi się tym przejmować.

Inną sytuacją, gdzie zwiększenie FPS “na siłę” mogłoby trochę zepsuć nam wrażenia, są sytuacje, gdzie deweloperzy specjalnie ograniczają liczbę klatek na sekundę, aby otrzymać jakiś określony zamysł artystyczny. Niedawno spotkałem się w tym w grze Sable, gdzie główna bohaterka biegała w 10-15 FPS, podczas gdy inne elementy świata chodziły z “prawidłową” płynnością. Dużo częściej niż w grach, ten zabieg spotyka się we wszelkiego rodzaju filmach i serialach animowanych (co czasem zostaje zepsute poprzez automatyczną interpolację, czyli sztuczne wygenerowanie nowych klatek, zaszyte w wielu dzisiejszych telewizorach).

Niektóre osoby uważają, że ludzkie oko jest w stanie zobaczyć tylko ograniczoną liczbę FPS (zazwyczaj takie szacunki, mieszcząca się w przedziale 30-60 FPS). Jest to jednak błędne myślenie, bo ludzki układ wzroku nie jest kamerą i nasz mózg przetwarza obrazy w trybie “ciągłym”, a nie dzieląc kolejne obrazy na klatki. Właśnie dlatego nie ma określonego limitu klatek na sekundę, które jest w stanie zobaczyć nasze oko. Większość osób jest w stanie z łatwością rozpoznać różnice pomiędzy grą chodząca w 30 FPS, 60 FPS, a 120 FPS. Trzeba jednak wiedzieć, że im te wartości stają się wyższe, tym rozpoznanie różnic w FPS staje się trudniejsze (przykładowo trudniej odróżnić 360 FPS od 480 FPS niż 60 FPS od 180 FPS).

FPS, a odświeżanie ekranu (Hz)

FPS bardzo często bywa mylony (nie tylko przez użytkowników, ale czasem też przez producentów) z odświeżaniem ekranu wyrażanym w Hercach (Hz). To drugie określa tylko, jak szybko odświeża się ekran, dając szansę na wyświetlenie nowych treści. Samo odświeżanie możemy więc traktować jako maksymalną liczbę FPS, którą nasz wyświetlacz jest w stanie w ogóle wyświetlić.

Oprócz tego odświeżanie ekranu ma jeszcze jedną relację z FPS: kiedy FPS nie jest odpowiednio zsynchronizowany (podzielny bez reszty) z odświeżaniem ekranu, to może dojść do powstawania efektu rozrywania/tearingu. Przykładowo: jeśli mamy wyświetlacz z odświeżaniem 60 Hz, to idealne podawanie kolejnych klatek zapewnią treści z 20 (⅓ odświeżenia), 30 (½ odświeżania), 60 (1x odświeżenie), czy 120 FPS (2x odświeżanie). Jeśli w takiej sytuacji będziemy grali np. z 40 lub 80 FPS, to klatki nie będą dostarczane równo, czego efektem będzie właśnie rozrywanie.

Tearing w grze
Tearing w grze; źródło: AMD

Właśnie po to, aby zapewnić regularne dostarczanie klatek do wyświetlacza oraz brak rozgrywania, europejskie wersje gier na konsole chodziły w 25/50 FPS’ach (stare telewizory analogowe miały odświeżanie 50 Hz).

W wielu nowoczesnych monitorach znajdziemy funkcję FreeSync/G-Sync/Adaptive Sync automatycznie synchronizującą odświeżanie monitora z FPS gry co eliminuje większość efektów rozrywania. Wspomniane funkcje działają zazwyczaj od około 40 FPS aż do Liczby klatek na sekundę odpowiadającej maksymalnemu odświeżaniu monitora (np. 144 Hz).

Frametime — każda klatka ma znaczenie

Sam FPS jest bardzo ważny, ale tak naprawdę nie pokazuje on nam dokładnie całej sytuacji dotyczącej wydajności. Wyobraźmy sobie że gra chodzi w 60 FPS, czyli klatkarzu, który teoretycznie powinien zapewnić nam bardzo dobrą płynność. Co jednak jeśli w tych 60 klatkach, 30 z nich jest renderowane w 8,3 Ms (poziom odpowiadający 120 FPS), a drugie 30 klatek jest renderowane w 25 Ms (poziom dla 40 FPS). Teoretycznie po uśrednieniu wciąż otrzymujemy 60 FPS, ale nasze doświadczenie będzie dalekie od ideału (przy tak dużych różnicach, mielibyśmy wrażenie, że animacje co chwile się rwą). Właśnie do mierzenia takich nieścisłości służy metryka o nazwie Frametime.

Frametime to statystyka pokazująca czas pomiędzy każdą pojedynczą klatką obrazową. Najczęściej jest ona prezentowana w postaci prostego grafu. Najlepsza sytuacja to taka, w której graf Frametime jest w miarę liniowy. Jeśli pojawiają się na nim duże skoki w górę i w dół, to będzie to odzwierciedlone w naszej grze, jako zacięcia oraz spowolnienia.

Opóźnienia — krytyczne w doświadczeniu gry

Ostatnią ważną częścią układanki zwanej wydajnością gier są opóźnienia. Opóźnienie to czas jakiego nasz zestaw potrzebuje od wywołania inputu (np. kliknięcia przycisku myszki) aż do zobaczenia wprowadzonej zmiany na ekranie. Im opóźnienie jest niższe tym szybciej zobaczymy zmiany na wyświetlaczu i gra będzie wydawała się bardziej responsywna.

Opóźnienie całkowite możemy podzielić na:

  • Opóźnienie peryferiów — Opóźnienie od naciśnięcia klawisza aż do dostarczenia informacji do komputera/konsoli. Na opóźnienie peryferiów wpływa wiele czynników, między innymi: typ użytego przycisku, jakość sensora, użyte medium (Bluetooth/kabel) czy Pooling Rate.
  • Opóźnienia systemu operacyjnego — Czas potrzebny na przetworzenie informacji przez system i dostarczenie ich do gry.
  • Opóźnienie gry — Czas potrzebny grze, procesorowi oraz sterownikom na przetwarzanie zapytań i przetłumaczenie ich na właściwą reakcję (np. rzucenie danego zaklęcia).
  • Opóźnienia Renderowania — Czas potrzebny na wyrenderowanie nowej klatki przez kartę graficzną.
  • Opóźnienia monitora — Czas potrzebny na monitorowi na wyświetlenie nowej klatki.
Schemat opóźnień
Schemat opóźnień systemowych; źródło: Nvidia

Opóźnienia mają bezpośrednią relację z liczbą klatek na sekundę/Frametime, bo im więcej klatek na sekundę, tym szybciej są one renderowane i dostarczane na ekran, w efekcie sprawiając że opóźnienia są niższe.

Popularni producenci kart graficznych stosują w swoich sterownikach (a czasem nawet grach partnerów) specjalne technologie służące redukcji opóźnienia. W przypadku kart graficznych jest to Reflex, a dla GPU od AMD Radeon Anti Lag.

Inne sposoby na zmniejszenie opóźnień to:

  • Zwiększenie pooling rate akcesoriów (możliwe w aplikacjach niektórych producentów peryferiów)
  • Stosowanie trybu pełnego ekranu zamiast pełnego ekranu w oknie w ustawieniach gry
  • Wyłączenie funkcji V-Sync (może doprowadzić do tearingu, tak jak wspomniałem nieco wyżej)
  • Zmiana ustawień monitora (ustawienie maksymalnego odświeżania, wyższy tryb override [za duży może doprowadzić do artefaktów])

Niestety całkowitego opóźnienia raczej nie będziemy mogli samodzielnie zmierzyć w domu, bo taka procedura wymaga specjalnych akcesoriów (np. NVIDIA Ldat oraz monitory z funkcją NVIDIA Reflex Analyzer).

Popularne sposoby na mierzenie wydajności w grach na PC

Jeżeli gramy na PC to mamy bardzo dużo sposobów na sprawdzenie FPS oraz Frametime w dowolnej grze. Poniżej opisane są te najpopularniejsze (i moim zdaniem najlepsze) metody.

Jeśli gramy na konsoli (np. na Xboxie, PlayStation 5, czy Nintendo Switch) to niestety w większości gier nie będziemy mogli w łatwy sposób sprawdzić FPS. Do takiej czynności potrzebna jest bowiem przerobiona konsola i odpowiedni program do wyświetlenia FPS lub capture card + specjalny program do analizy FPS w nagraniu (np. trdrop). Na szczęście, jeśli chodzi o konsole, to mamy o wiele mniej konfiguracji niż w przypadku PC. Sprawia to, że dana gra na jednym PlayStation 5 będzie chodziła praktycznie w taki sam sposób także na każdym innym PlayStation 5. Zamiast samodzielnie mierzyć FPS w grze na konsoli, możemy więc trochę się wyręczyć i sprawdzić jakie wyniki otrzymał ktoś inny. Od siebie, pod względem takich analiz, mogę z czystym sumieniem polecić kanał na Youtube o nazwie Digital Foundry.

Pasek gry w systemie Windows

W najnowszych wersjach systemu Windows 10/11 Microsoft zaimplementował funkcję o nazwie “pasek gry”. Po jej wywołaniu mamy możliwość szybkiego przypięcia licznika FPS w dowolnym miejscu. Aby to zrobić:

  1. Uruchamiamy dowolną grę.
  2. Klikamy na klawiaturze skrót klawiszowy Windows + G lub klikamy przycisk Xbox/PS/Menu na kontrolerze, jeśli mamy takowy podłączony. Po chwili powinna uruchomić się prosta nakładka.
  3. W wyświetlonej nakładce szukamy kafelka o nazwie “Wydajność”. Łapiemy go za jego górną krawędź i przesuwamy w wygodne dla nas miejsce (najlepiej takie, które nie będzie zasłaniało gry).
    Przypinanie kafelka wydajności
  4. Zaznaczamy rubrykę “KL/s” w celu wyświetlania większej ilości informacji o aktualnym FPS.
  5. Na sam koniec wybieramy pinezkę widoczną przy kafelku “Wydajność” i ponownie naciskamy Win + G/przycisk na padzie, by wyłączyć pasek gry. Jeśli wszystko zrobiliśmy poprawnie, to w ustalonym miejscu powinna być teraz widoczna rubryka z FPS i kilkoma innymi statystykami.
    FPS z paska gry Windows

W razie potrzeby możemy również modyfikować informacje zawarte w pasku wydajności oraz zmienić rozmiar samego kafelka. W tym celu należy ponownie nacisnąć Windows + G na klawiaturze wybrać “opcje wydajności” i odpowiednio dostosować widoczne tam opcje. Rozmiar nakładki zmienimy poprzez jej rozszerzenie (tak samo, jak każdego innego okna w systemie Windows) lub naciśnięcie przycisku “Zwiń wykres”.

Jeżeli pasek gry z jakiegoś powodu się nie uruchamia, to musimy otworzyć ustawienia systemu Windows (skrót klawiszowy Windows + I) wejść w “Granie > Game Bar” i upewnić się, że funkcja “włącz aplikację Game Bar” jest aktywna.

Licznik bezpośrednio w grze

Wiele gier integruje opcję pokazywania FPS bezpośrednio w swoich ustawieniach. W celu aktywacji takie opcji należy więc przejść do ustawień gry i znaleźć opcję zatytułowaną “Show FPS”/”Pokaż FPS”. Zazwyczaj można ją dostrzec w ustawieniach związanych z grafiką lub interfejsem.
Mały licznik FPS w lewym górnym rogu

Niektóre tytuły mają nieco mniej standardowe podejście do wyświetlania FPS i nieco chowają tę funkcję. Przykładowo w Minecrafcie dla pokazania FPS należy nacisnąć klawisz F3 na klawiaturze, a w starszych wersjach CS:GO oraz CS2 gracze wpisywali komendę cl_showfps 1 w konsoli otwieranej przy pomocy przycisku “~” (w najnowszych wersjach nie jest to już konieczne, bo Valve dodało opcję pokazywania FPS, a nawet czasu Frametime bezpośrednio w ustawieniach).

Licznik FPS w Minecraft

Włączenie licznika FPS na Steam

Uruchamiając grę przez Steam mamy opcję włączenia licznika FPS w opcjach wspomnianego launchera. Kiedy chcemy to zrobić:

  1. Uruchamiamy Steam.
  2. W pasku na samej górze zaznaczamy “Steam” > “Ustawienia”.
    Ustawienia Steam
  3. Po otwarciu nowego okna, przechodzimy do zakładki “W grze”.
  4. Upewniamy się, że pierwsza opcja “Włącz nakładkę Steam podczas gry” została włączona.
  5. Teraz klikamy na listę obok funkcji “Licznik FPS w grze” i zaznaczamy w jakim miejscu, chcemy umieścić nasz licznik.
    Licznik FPS w grze

Po wszystkim możemy zamknąć okno i uruchomić grę. Wtedy we wskazanej lokacji powinien pojawić się mały wskaźnik z liczbą klatek na sekundę. Jeśli jest on dla nas mało widoczny, to w zakładce “W grze” możemy zaznaczyć opcję “Kolor licznika FPS w grze o wysokim kontraście”. Powinno to nieco zwiększyć jego widoczność.

Skorzystanie z programu MSI Afterburner (Windows)

Wszystkie powyższe rozwiązania pokazywały tylko licznik FPS, a tak, jak wspomniałem już wyżej: równie ważny do mierzenia wydajności jest Frametime. Naprawia to kolejny sposób na sprawdzenie wydajności w grze, czyli program MSI Afterburner + Rivatuner Statistic Server (RTSS). 

MSI afterburner to szeroko znany program do podkręcania karty graficznej, który pozwala też na szczegółowe kontrolowanie wydajności gry. Kiedy chcemy go zainstalować i skonfigurować:

  1. Wchodzimy na stronę MSI.
  2. Klikamy zielony przycisk Final (kiedy chcemy pobrać wersję stabilną) albo beta (kiedy mamy zamiar pobrać najnowszą wersję testową).
    Pobieranie MSI Afterburner
  3. Teraz wchodzimy do folderu z pobranym plikiem i rozpakowujemy go (prawy przycisk myszy > “Wyodrębnij wszystkie” lub użycie narzędzia 7Zip, WinRar, etc.)
  4. Otwieramy rozpakowany folder i dwukrotnie klikamy na aplikację “MSIAfterburnerSetup.exe”.
  5. Przeprowadzamy klasyczną instalację programu poprzez potwierdzanie regulaminów i klikanie dalej. W czasie trwania tego procesu warto upewnić się, że opcja pobierania RTSS jest na pewno zaznaczona.
    RTSS pobieranie
  6. Po zakończeniu instalacji uruchamiamy program MSI Afterburner.
  7. Wchodzimy do ustawień aplikacji (ikonka koła zębatego).
    Ustawienia MSI Afterburner
  8. Przechodzimy do zakładki “Monitoring”. Znajdziemy tam wiele statystyk, które możemy monitorować. Zaznaczamy wybrane statystyki (w naszym przypadku zapewne Liczba klatek na sekundę oraz Frametime; praktycznie na samym dole listy), klikamy ptaszek przy jej nazwie i zaznaczamy opcję “pokaż na OSD”. Zapisujemy zmiany przyciskiem “Zastosuj”. UWAGA! Przy Frametime polecam zmienić sobie opcję “text” na “text + graph” w ten sposób otrzymamy reprezentację graficzną Frametime, a nie tylko mały napis z czasem renderowania klatki.
    Pokaż na OSD
  9. Otwieramy zakładkę “On-Screen Display”. Kolejno zaznaczamy tam opcję “Przełącz OSD”/”Pokaż OSD”/”Ukryj OSD” i przypisujemy do nich skróty klawiszowe. Klikamy “Zastosuj” w celu zapisania zmian.
  10. Po wszystkim wchodzimy do dowolnej gry i klikamy skróty klawiszowe odpowiadający funkcji “Pokaż OSD”. Po chwili w lewym górnym rogu powinniśmy zobaczyć licznik FPS oraz graf z Frametime.
    OSD MSI Afterburner

Oczywiście to nie koniec funkcji MSI Afterburner oraz RTSS. Dzięki temu programowi, oprócz samego wyświetlania statystyk możemy też łatwo zmienić ich położenia oraz rozmiar (bezpośrednio w aplikacji Riva Tuner Statistic Server), włączyć Autostart aplikacji, a nawet przeprowadzić Benchmark. Ta ostatnia opcja po kliknięciu ustalonego klawisza “nagrywa” wszystkie ważne aspekty wydajności (FPS, Frametime, etc), a po zakończeniu przenosi je wszystkie do dość czytelnego pliku tekstowego. Jeśli chcecie ustalić klawisze do rozpoczynania oraz kończenia benchmarku, to należy wejść w ustawienia aplikacji MSI Afterburner i do zakładki “Benchmark”.

UWAGA! Tak, jak wspomniałem nieco wyżej: główną funkcją MSI Afterburner jest podkręcanie karty graficznej. Jeśli nie znacie się na sprzęcie i chcieliście wykorzystać MSI Afterburner tylko do mierzenia wydajności, to nie polecam korzystać z tej opcji (może ona potencjalnie doprowadzić do problemów ze stabilnością działania komputera; samo sprawdzanie statystyk jest w pełni bezpieczne). 

Program CapFrameX (Windows)

Moją ulubioną aplikacją do mierzenia FPS/Frametime w grze jest obecnie CapFrameX. Aplikacja ta oprócz integracji RTSS (podobnej do tego, co widzieliśmy przy MSI Afterburner) oferuje też możliwość automatycznego tworzenia dokładnych wykresów związanych z przeprowadzonymi testami. Aby pobrać i skonfigurować CapFramX:

  1. Wchodzimy na stronę pobierania narzędzia CapFrameX i klikamy na link do pobierania wersji Installer lub Portable (ta pierwsza jest instalowana jako aplikacja w systemie, a drugą będziemy musieli uruchomić z folderu). Rozpocznie to pobieranie pliku Zip.
    Pobieranie CapFrameX
  2. Teraz otwieramy stronę guru3D i pobieramy program Riva Tuner Statistic Server poprzez zaznaczenie zielonego przycisku Download.
  3. Przechodzimy do folderu z pobraną zawartością, a następnie rozpakowujemy folder z CapFrameX.
  4. (Dodatkowy krok dla wersji installer) otwieramy katalog CapFrameX i klikamy dwukrotnie plik “CapFramXBootstrapper.exe”. Po tym przechodzimy przez proces instalacji (który wygląda identycznie, jak instalacja każdej innej aplikacji).
  5. Rozpakowujemy folder z RTSS i klikamy dwukrotnie na plik “Guru3D-RtSSSetup.exe”. Zaraz po tym przechodzimy przez całą instalację oprogramowania.
  6. Po zainstalowaniu wszystkich potrzebnych składników, wyszukujemy aplikację CapFrameX wśród aplikacji i uruchamiamy ją (wersja installer)/otwieramy folder CapFrameX, szukamy i dwukrotnie klikamy na plik “CapFrameX.exe”.
  7. Przechodzimy do zakładki “Overlay” w CapFrameX. Zaznaczamy tam statystyki, które chcemy wyświetlić podczas gry (Framerate = licznik FPS oraz Frametime powinny być domyślnie zaznaczone). Po wprowadzeniu zmian klikamy przycisk zapisu (ikonka dyskietki).
    Overlay Settings
  8. Pozostając w zakładce Overlay, zaznaczamy opcję “Toogle Overlay hotkey” i klikamy skrót klawiszowy, którym będziemy chcieli otwierać nakładkę w grze (domyślnie jest to Alt+O). Ponownie zapisujemy zmiany.

I… to już wszystko. Teraz po przejściu do gry i wywołaniu skrótu klawiszowego powinien pojawić się licznik FPS oraz Frametime.

Jeżeli oprócz wyświetlania FPS, chcemy też nagrywać statystyki do późniejszej analizy, to wszelkie opcje dotyczące tej funkcji znajdziemy w zakładce “Capture” aplikacji CapFrameX. Polecam tutaj zmienić Capture Key (klawisz do rozpoczęcia nagrywania; domyślnie F11) oraz Capture Time (czas trwania analizy; domyślnie 20 sekund). Po “nagraniu” danej analizy przechodzimy do zakładki “Analysis”, klikamy dwukrotnie na nazwę gry/testu po lewej stronie i już możemy patrzeć na ładne i czytelne grafy dotyczące wydajności.

MangoHud (Linux/Steam Deck)

MangoHud możemy traktować jako Linuxową alternatywę dla RTSS. Tak samo, jak program dostarczany w zestawie z MSI Afterburner, czy CapFrameX, MangoHud potrafi wyświetlić szczegółowe informacje o aktualnym FPS, Frametime i zachowaniu (np. temperaturze/traktowaniu) podzespołów. Jeśli chcecie zainstalować MangoHud dla swojej dystrybucji Linuxa to dokładną instrukcję pobierania/korzystania z narzędzia znajdziecie na oficjalnej stronie projektu na Githubie.

Jedna z najpopularniejszych “konsol” opartych na Linuxie — Steam Deck ma wersję MangoHud zintegrowaną bezpośrednio z systemem operacyjnym SteamOS. Aby włączyć MangoHud w danej grze, wystarczy tutaj nacisnąć przycisk z 3 kropkami, przejść do zakładki “wydajność” (ikonka baterii/pioruna) i ustawić nakładkę wydajności na poziom 1,2,3, lub 4 (w zależności od tego ile informacji potrzebujemy).

Nakładka wydajności na Steam Decku

Podsumowanie

Mam nadzieję, że ten artykuł nieco przybliżył Wam wszystkie pojęcia związane z wydajnością gry i wiecie też, jak sprawdzić aktualny FPS oraz Frametime w danym tytule. Jeśli macie jakieś dodatkowe pytania (lub coś jest nie do końca jasne), to zachęcam do skorzystania z sekcji komentarzy!

Źródło obrazka wyróżniającego: Onur Binay; unsplash.com

Podobał Ci się artykuł i chcesz wesprzeć tworzenie podobnych treści? Możesz postawić mi kawę/herbatę (zapewne to drugie) w serwisie buycoffee.to

Zaproszenie na kawę

Komentarz

Informacja: W celu wykluczenia z dyskusji botów komentarze są zatwierdzane ręcznie, dlatego może minąć kilka godzin, zanim pojawią się one na stronie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *