Mateusz Ozimek | 16 września 2018, 14:01

Steam Play – test wydajności gier w systemie GNU/Linux

Rok Linuksa

SteamOS nie osiągnął oczekiwanej przez wielu popularności. Jednak to nie było ostatnie słowo Valve w kwestii uruchamiania gier w systemach GNU/Linux. Tym razem serca graczy ma podbić nowy projekt: Proton. Sprawdzamy wydajność wczesnej wersji tego oprogramowania.

Od pewnego czasu Valve intensywnie wspiera rozwój oprogramowania, które ma umożliwić uruchamianie gier z systemu Windows w systemach GNU/Linux. Firma wsparła rozwój Wine, a jej zmodyfikowana dystrybucja o nazwie Proton została niedawno udostępniona w wersji beta wszystkim użytkownikom Linuksa na Steamie. Oficjalnie obsługiwanych jest na razie jedynie 27 gier, lecz nic nie stoi na przeszkodzie, by próbować uruchomić również inne.

linux

Na forach internetowych wiele osób zaczęło sprawdzać kompatybilność gier ze swoich bibliotek. Efektem jest dokument z listą produkcji przetestowanych z użyciem Protona (uwaga: jest on bardzo obszerny, zawiera kilka tysięcy rekordów!). 

Steam Play

W nowej wersji rozwiązania Steam Play, które umożliwia uruchamianie gier z platformy Steam w GNU/Linux, pojawiło się nowe narzędzie, Proton. Zostało przygotowane na podstawie oprogramowania Wine przez firmę CodeWeavers. Można ją kojarzyć jako twórców komercyjnego programu CrossOver, umożliwiającego uruchamianie programów windowsowych w systemach GNU/Linux. W ramach tego projektu między innymi zaimplementowała Direct3D 12 (vkd3d) oraz Direct3D 11 (DXVK), które oparte są na bibliotekach Vulkan. To projekt open source, dostępny jako repozytorium git. Ma na celu zapewnienie kompatybilności gier dla systemu Windows z systemem GNU/Linux. Jest bardzo intensywnie rozwijany. Zdążył już nie tylko przejść z bety klienta Steam do jego normalnej wersji: od tego czasu udostępniono trzy jego wersje (w chwili gdy piszemy te słowa, najnowsza ma oznaczenie 3.7-5 Beta).

Jak uruchamiać gry w systemie GNU/Linux

Testy przeprowadziliśmy w jednej z najpopularniejszych dystrybucji GNU/Linux, Ubuntu, w najnowszej wersji 18.04.1 LTS. Założeniem testu było sprawdzenie, czy z wykorzystaniem najnowszego narzędzia udostępnionego na Steamie można w bezproblemowy sposób, bez skomplikowanej konfiguracji uruchomić najnowsze produkcje. Mamy świadomość, że istnieją inne sposoby uruchamiania gier w Linuksie, a domyślna konfiguracja systemu bądź Wine to dopiero początek drogi do komfortowego grania. W tym artykule skupiamy się jednak na teście samego narzędzia firmy Valve.

Karty Nvidii

W teście wykorzystaliśmy dwie karty graficzne z serii GeForce: GTX-a 1070 oraz GTX-a 1080. Świeżo po zainstalowaniu systemu mamy dostęp do otwartych sterowników nouveau, lecz w prosty sposób można zainstalować sterowniki własnościowe, które poprawiają wydajność w grach. Żeby móc je zainstalować, najpierw należy dodać odpowiednie repozytorium przez wpisanie w terminalu: 

sudo add-apt-repository ppa:graphics-drivers

…a następnie wykonanie polecenia:

sudo apt update
sudo apt upgrade

Następnie aktualizujemy system i instalujemy sterowniki poleceniem: 

sudo apt install nvidia-driver-numer_wersji_sterownika

Wybrać trzeba najwyższy numer, który oznacza najnowszą wersję sterownika. Można ją wyszukać poleceniem: 

apt-cache search nvidia-driver

Całą operację można wykonać również w trybie graficznym poprzez narzędzie Oprogramowanie i aktualizacje. W zakładce sterowniki do wyboru są dostępne wersje oprogramowania.

linux

AMD Vega

Płynność sprawdziliśmy również na karcie Radeon Vega 64, czyli najmocniejszej spośród konstrukcji z serii Vega przeznaczonych na rynek konsumencki. Posiadacze kart AMD w domyślnej instalacji Ubuntu dostają otwartoźródłowe sterowniki. Jednak podobnie jak w przypadku konkurencyjnych modeli są one przestarzałe i żeby wykorzystać nową wersję, należy dodać repozytorium:

sudo add-apt-repository ppa:ubuntu-x-swat/updates

Potem, po zakończeniu instalacji, trzeba zaktualizować system:

sudo apt-get dist-upgrade

Jednak to nie wystarczy, by można było uruchamiać gry poprzez Protona. W tym przypadku należy dodatkowo doinstalować obsługę API Vulkan poleceniem: 

sudo apt install mesa-vulkan-drivers

linux

Na stronie AMD można z kolei znaleźć sterowniki przygotowane przez firmę w dwóch wariantach: AMDGPU oraz AMDGPU-PRO. Te pierwsze są otwarte i stanowią podstawę zamkniętych sterowników w wersji PRO, które zawierają dodatkowe funkcje, m.in. obsługę OpenCL. W teście wykorzystaliśmy sterowniki open source w wersji wbudowanej w Ubuntu. Radzą sobie one w przypadku gier uruchamianych za pomocą narzędzi opartych na Wine lepiej niż sterowniki zamknięte.

Po zainstalowaniu Steam w domyślnej konfiguracji przechowuje swoje pliki w katalogu:

/home/$USER/.steam/

Zapisy gier są przechowywane na dwa sposoby. Jeśli gra w wersji Windows zapisuje stany rozgrywki w folderze userdata, to w systemie GNU/Linux znajdziemy je w folderze:

/home/$USER/.steam/userdata/id_konta/

Jeśli zaś zapisy znajdują się w innym folderze, wtedy linuksowa wersja Steama tworzy dla każdego tytułu drzewo katalogów odpowiadające katalogom w Windows. Znajduje się ono w następującej lokalizacji:

/home/$USER/.steam/steamapps/compatdata/steam_id_gry/pfx

W ten sposób przeniesienie odpowiednich plików do odpowiednich folderów pozwala przenieść zapisy stanów gier.

Procedura testowa

Obecnie w systemach linuksowych nie ma możliwości uruchomienia uniwersalnego narzędzia do mierzenia płynności w grach wideo. Do niedawna był dostępny GLXOSD, jednak w listopadzie ubiegłego roku projekt ten został porzucony. Innym problemem, który mógłby się pojawić, nawet gdyby takie narzędzie istniało, jest to, że część testowanych przez nas gier nie jest dostępna w wersji uruchamianej bezpośrednio w systemie GNU/Linux, lecz jest uruchamiana poprzez narzędzie działające z wykorzystaniem Wine. Istnieją co prawda narzędzia diagnostyczne WINEDEBUG, ale postanowiliśmy zmierzyć wydajność w sposób najbardziej uniwersalny i niezależny od narzędzia testowego. Wykorzystaliśmy w tym celu swoją platformę do przechwytywania obrazu. Jej dokładny opis możecie znaleźć w naszym artykule „Platforma do przechwytywania obrazu 4K w PCLab.pl”.

Platforma ta ma jedno ograniczenie: płynność nagrywanego obrazu nie może przekraczać 60 kl./s w rozdzielczości 4K. W związku z tym gry sprawdzaliśmy w działaniu w rozdzielczościach 2560 × 1440 i 4K w wysokich i bardzo wysokich ustawieniach jakości obrazu, tak żeby zmieścić się w ograniczeniach sprzętowych i móc pokazać różnicę w wydajności pomiędzy systemami Windows a GNU/Linux.