To Święty Graal obecnych komputerów do gier: 144 klatki na sekundę. Wykupiłeś świetny monitor do gier i sparowałeś go z najszybszym procesorem i jedną z najlepszych kart graficznych, jakie można kupić. To jest tak gładka, tak reaguje, a ty jesteś gotowy do zdominowania przeciwników z doskonałych umiejętności – lub przynajmniej wyższa częstotliwość odświeżania. Jest tylko jeden problem. Uzyskanie 144 klatek na sekundę (lub więcej) w wielu grach jest trudne, a czasem wręcz niemożliwe. Co się dzieje?
Zaczyna się od podstawowego projektu gry i jej funkcji. Nie chcę rzucać cieniem na konsole (cokolwiek, jestem całkowicie rzucając cień na konsolach), ale kiedy kilka z obecnej generacji platform do gier nie może wyjść na wyższym niż 60Hz, to naturalne, że gry na nich nie wychodzą z drogi, aby przekroczyć 60fps-lub nawet 30fps w niektórych przypadkach. Kiedy twórca gry zaczyna z takiej perspektywy, może być bardzo trudno to skorygować. Widzieliśmy, jak gry takie jak Fallout 4 wiążą fizykę, szybkość ruchu i inne elementy z framerate, często z niepożądanymi rezultatami.
Nie chodzi tylko o celowanie w 30 lub 60fps, jednakże. Złożoność gier wciąż rośnie, a złożoność oznacza wykonywanie większej ilości obliczeń. Gry dla jednego gracza są zazwyczaj innym doświadczeniem niż gry wieloosobowe. Te ostatnie są z natury bardziej konkurencyjne, co oznacza, że wyższe fps mogą być korzystniejsze dla najlepszych graczy, a ponadto często pomijają masę rzeczy, które mogą zwiększyć frametimes.
Pomyśl o grach takich jak Counter-Strike, Overwatch, PUBG i Fortnite na przykład. Tam jest bardzo mało logiki AI lub NPC, która musi się wydarzyć. Większość świata jest statyczna i to tylko gracze biegają dookoła, co oznacza dużo mniejszy narzut i ostatecznie potencjał dla wyższych framerate’ów.
Głównie gry dla jednego gracza to inna sprawa. Spójrz na środowiska w Assassin’s Creed Odyssey, Monster Hunter World i Hitman 2. Mogą tam być setki stworzeń, postaci niezależnych i innych jednostek, które trzeba przetworzyć, a każda z nich ma inne animacje, dźwięki i inne efekty. Może to zmusić do pracy nawet najszybsze procesory centralne, na których odbywa się większość przetwarzania.
Tak, CPU, a nie GPU. Podczas gdy procesor graficzny jest często uważany za wąskie gardło wydajności gier, chodzi głównie o wybór odpowiedniej rozdzielczości i jakości grafiki. Zmniejsz ustawienia i/lub rozdzielczość wystarczająco mocno, a CPU stanie się czynnikiem ograniczającym. A w złożonych grach ten limit CPU może łatwo spaść poniżej 144 klatek na sekundę. Podczas gdy szybka karta graficzna jest często niezbędna do osiągnięcia 144fps, równie szybki procesor może być również wymagany.
Assassin’s Creed Odyssey może prawie osiągnąć 144fps … z RTX 2080 Ti.
Hitman 2 wpada w wąskie gardło CPU, osiągając około 122 klatki na sekundę.
Monster Hunter World również ma problemy z przekroczeniem 120 klatek na sekundę.
Spójrz na benchmarki CPU w Assassin’s Creed, Monster Hunter i Hitman. Grając w 1080p i niskiej lub średniej jakości, mamy do czynienia z doskonałym skalowaniem pod względem wydajności CPU, ale 144 klatki na sekundę to wciąż trudna do pokonania przeszkoda. Co ważniejsze, skalowanie wynika głównie z taktowania zegara, a liczba rdzeni i wątków ma mniejsze znaczenie – zwłaszcza po przekroczeniu progu 6-rdzeniowych procesorów. To dlatego, że większość gier jest nadal rządzona przez pojedynczy wątek, który wykonuje większość pracy.
Odwróć rzeczy i pomyśl o każdej klatce w kategoriach milisekund. Dla stałych 60fps, każda klatka ma co najwyżej 16,7ms czasu na grafikę i przetwarzanie. Przeskocz do 144fps i każda klatka ma tylko 6.9ms, w których wszystko jest gotowe. Ale ile czasu tak naprawdę zajmuje każda część renderowania bieżącej klatki? Odpowiedź brzmi, że to się zmienia, a to prowadzi do dyskusji o Prawie Amdahla.
Sednem Prawa Amdahla jest to, że zawsze istnieją części kodu, które nie mogą być sparalelizowane. Wyobraźmy sobie hipotetyczną grę, w której pojedynczy rdzeń Intel 4.0GHz potrzebuje 50ms na wykonanie wszystkich obliczeń dla każdej klatki. Taka gra byłaby ograniczona do 20fps. Jeśli 75% kodu gry może być podzielone na podzadania, które działają współbieżnie, ale 25% wykonuje się na pojedynczym wątku, to niezależnie od tego ile rdzeni CPU jest dostępnych, najlepsza wydajność na procesorze Intel 4.0GHz nadal wynosiłaby tylko 80fps. Zrobiłem trochę szybkiej i brudnej matematyki serwetkowej, aby zilustrować:
Poprawienie kodu gry tak, aby tylko 12,5 procent wykonywało się na jednym wątku, może nawet 5 procent, może pomóc. Wtedy 160fps lub nawet 400fps jest możliwe, ale to wymaga czasu dewelopera, który może być lepiej wydany gdzie indziej – i oczywiście procesory nie mają nieskończonej liczby rdzeni i wątków. Chodzi o to, że istnieje ograniczona ilość czasu, w którym można przetworzyć wszystkie dane wejściowe użytkownika, stan gry, kod sieciowy, grafikę, dźwięk, AI, itd. i bardziej złożone gry z natury wymagają więcej czasu.
Nawet przy 4GHz i szybszych procesorach pracujących w tandemie z tysiącami rdzeni GPU, 6.9ms mija szybko, a jeśli patrzysz na 240Hz wyświetlacz uruchamiający gry przy 240fps, to tylko 4.2ms na każdą klatkę. Jeśli po drodze zdarzy się jakaś czkawka – np. gra musi wczytać jakieś obiekty lub tekstury z pamięci masowej, co może zająć od kilku milisekund na szybkim dysku SSD do kilkudziesięciu ms na dysku twardym – gra będzie się mocno zacinać. Taki jest świat, w którym żyjemy.
Ułóżmy to w inny sposób. Nowoczesne pecety mogą potencjalnie przeżuwać miliardy obliczeń na sekundę, ale każde z nich jest niezwykle proste: A + B na przykład. Obsługa aktualizacji logiki dla pojedynczego podmiotu może wymagać tysięcy lub dziesiątek tysięcy instrukcji, a wszystkie te aktualizacje AI i podmiotów to wciąż tylko niewielki ułamek tego, co musi się wydarzyć w każdej klatce. Twórcy gier muszą wszystko zbalansować, aby osiągnąć akceptowalny poziom wydajności, a na komputerach PC może to oznaczać możliwość działania na wszystkim, od starego 4-rdzeniowego Core 2 Quad lub Athlon X4 po nowoczesne procesory Ryzen lub 9th Gen Core, oraz układy GPU od zintegrowanych układów graficznych Intela po GeForce RTX 2080 Ti.
Możliwe jest tworzenie gier, które mogą działać przy ekstremalnie wysokim framerate. Wiemy o tym, ponieważ takie gry już istnieją. Ale te gry zazwyczaj nie są najnowocześniejsze pod względem grafiki, sztucznej inteligencji i innych elementów. Są one zasadniczo prostsze, czasami w nie tak oczywisty sposób. Nawet zmniejszając złożoność gry i grafiki, można zajść tylko tak daleko. Siedmioletni CS:GO w 1080p z podkręconym do 5 GHz Core i7-8700K osiąga około 300 klatek na sekundę (3,3 ms na klatkę), a stuttery obniżają minimalną liczbę klatek na sekundę o połowę. Możesz uruchomić CS:GO z prędkością 270-300 klatek na sekundę na wszystkim, od GTX 1050 po Titan RTX, ponieważ procesor jest głównym czynnikiem ograniczającym.
W skrócie, osiągnięcie 144 klatek na sekundę nie jest tylko kwestią sprzętu. To kwestia oprogramowania i projektowania gier, a czasem trzeba po prostu odpuścić. Jeśli masz serce nastawione na grę w 144fps, najlepszą radą jaką mogę dać jest pamiętanie, że framerates (lub frametimes, jeśli wolisz) to nie wszystko. Dla konkurencyjnego multiplayer, gdzie każda możliwa przewaga latency może pomóc, upuść ustawienia do minimum i zobaczyć, jak gra działa, i potencjalnie zwiększyć kilka ustawień, jeśli jest wiggle room.
Nawet jeśli nie można utrzymać 144fps lub więcej, 144Hz częstotliwości odświeżania są nadal niesamowite – mogę poczuć różnicę tylko interakcji z pulpitem Windows. Wyższej jakości wyświetlacze 144Hz obsługują także G-Sync i FreeSync, co może pomóc uniknąć zauważalnych zacięć i rozrywania obrazu, gdy spadniesz nieco poniżej 144fps. Idealnie płynne odświeżanie byłoby miłe, ale samo to nie sprawi, że gra będzie świetna. Więc rozsiądź się wygodnie i po prostu ciesz się jazdą, niezależnie od sprzętu czy framerate’u.
Częste wiadomości