#050. Wydajność gier okiem pingwiniarza

Wydajność gier to temat rzeka w świecie graczy, w szczególności dla świata Linuxa, który od kilku lat jest małymi kroczkami wdrażany do świata wirtualnej rozrywki. Nie wiem czemu powoduje to tyle boleści wśród użytkowników innych platform – w końcu to tylko szansa dla jakiejś części społeczności, aby dołączyć do grona graczy eksplorujących fabułę kolejnej opowieści albo bezmyślnie tłuc co popadnie – zależy, co gra zakłada. “Specjaliści” zakładali i wciąż zakładają ile czasu zajmie Linuxowi upadek w świecie gier. W końcu rozgrywka ma około 5-15% spadek wydajności na pingwinowym systemie (porównując go do Windowsa).

Chciałbym dzisiaj wyjaśnić, co stoi za tym spadkiem klatek na sekundę, które w dwudziestym pierwszym wieku są wyznacznikiem dobrej zabawy, a dla bardziej hardkorowych odmian graczy synonimem wyższości.

1. Gry nie są robione na Linuxa, są portowane z Windowsa.

Oczywista sprawa dla kogoś, kto siedzi w temacie. W uproszczeniu: łatwiej i taniej jest stworzyć “program” (dokładniej nakładkę tłumaczeniową), który opiera się na tłumaczeniu Linuxowi, co robi gra (zasada działania przypomina WINE). Napisanie gry od podstaw, aby działała konkretnie pod dany system byłoby czasochłonne i pieniądzożerne, a jak wiadomo twórcom gier zależy na zyskach, a nie wolontariacie.

Sposób ten działa, a jego “koszt” minimalizuje się wraz z rozwojem firm przeportowujących gry.

W tą nakładkę wlicza się wszystko: grafika, audio, połączenie z siecią… Każdy z osobnych elementów może wpłynąć na wydajność gry, w szczególności, jeśli port jest kiepskiej jakości (takie rzeczy się, niestety, zdarzają).

2. Sterowniki graficzne.

Prawdą jest, że producenci kart graficznych wydają tzw. “game ready graphic card drivers”, które są specjalnie napisane, aby maksymalizować wydajność konkretnej gry. Linux może w obecnej chwili pomarzyć o czymś takim, w szczególności, że kod źródłowy jest zamknięty i społeczność nie może ich doskonalić na własną rękę (jak dzieje się to z innymi aplikacjami z otwartym kodem źródłowym). Chociaż tego typu rzeczy wydarzały się w przeszłości i mam cichą nadzieję, że producenci wrócą do wspierania wydajności pingwinowego systemu.

3. OpenGL a DirectX

OpenGL jest odpowiednikiem DirectX z zaznaczeniem, że OpenGL nie powstał z myślą o grach. Obie rzeczy odpowiadają za przerobienie linijek kodu na piękną (bądź nie) grafikę na ekranie.

Z racji faktu, że OpenGL nie powstał do gier tylko do renderowania grafiki 3D, powoduje to problemy programistów przy przeportowywaniu tytułów na Linuxa. Czasem coś trzeba programistycznie obejść, aby działało, co oznacza, że wydajność gry może spaść. W ostatnich czasach sporo pracy też zostało włożone w jego rozwój, aby stał się trochę bardziej przyjazny w stosunku do gier.

Na szczęście jego następcą jest Vulkan specjalizujący się między innymi w grach, co ma ułatwić i ujednolicić grafikę między różnymi systemami. Nie oznacza to jednak, że w przypadku przeportowania wszystko będzie idealnie dopasowane i port da się bezproblemowo wykonać bez dodatkowej pracy.

Podsumuję to w skrócie: Linux to nie Windows i każdy z systemów wymaga od gry innego działania. Nie jest to jednostronne. Gry przeportowane z Linuxa na Windowsa również gubiłyby ilość klatek na sekundę, ponieważ brak jednolitości w sferze programowania powoduje przestrzeń, gdzie liczy się kreatywność i umiejętności porterów, aby rozwiązać dany problem. Mimo tego, tak długo jak mogę pograć na moim pingwinie, jestem zadowolony. Koniec końców zachowana jest płynność gry przez co żadna strata nie wpływa na moje odczucia, a i bez tego mogę grać, jeśli tylko fabuła mnie wciągnie (wypowiem się o tym w innym wpisie).

Bonusowo: Odświeżanie monitora a ilość klatek na sekundę (fps).

Będę szczery – przeciętny monitor ma częstotliwość odświeżania mieszczącą się między 50-60 Hz (najczęściej jest to 60, Hz). Istnieją specjalne monitory, które mają wyższą częstotliwość. Numerki te przekładają się na to, ile nasze oko może dostrzec klatek na sekundę na danym ekranie. Mówiąc prościej: nie potrzeba mieć w grze 300 fps, gdzie nasze oko zobaczy tylko 60 na monitorze 60 Hz.Także oznacza to, że jeżeli nie mamy lepszego monitora, to duża ilość fps’ów nie zwiększa naszych wizualnych odczuć tak długo jak ilość klatek na sekundę utrzymuje się lub przekracza 60.

Dlaczego o tym piszę? Aby uświadomić Was, że wysoka wydajność niekoniecznie może przekładać się na większe odczucia wizualne. Jeśli zachowana jest płynność to co nam szkodzi skupić się na fabule? Nikt nie musi być lepszy/gorszy od drugiego tak długo jak mamy się po prostu dobrze bawić.

Mefisto

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s