JAK OPTYMALIZOWAĆ GRY POD LINUXEM i MIERZYĆ WYDAJNOŚĆ?

hejto.pl

Artykuł trochę pisany pod siebie, bo słynę ze sklerozy w takich tematach, a potem muszę się przekopywać przez temat ponownie na nowych urządzeniach i tracić czas. Dzisiaj opiszę proces dodawania miernika do gier, głównie odpalanych przez Steam, wliczając w to te działające z pomocą Protona. Jak ktoś ma starszego laptopa i nawet stare gry potrafią - ciul wie czemu - działać jak pralka frania z wrzuconą cegłą do bębna, ten poradnik może wam się przydać. Użyjemy programu MangoHud, który przypomina te wszystkie mierniki obciążenia w grach, jak MSI Afterburner, ale ma coś, czego próżno szukać pod Windowsem, bez grzebania w ustawieniach karty graficznej. Ograniczanie maksymalnej liczby klatek na sekundę.


Gry - zwłaszcza stare, choć nowe indyki też - potrafią odpalać się z nierealną liczbą generowanych klatek, a nie wszędzie da się odpalić Vsync, czyli synchronizację z monitorem/wyświetlaczem. Sam miałem sporo problemów z tym, zwłaszcza używając Protona, czyli wbudowanej w Steam opcji na odpalanie tytułów windowsowych. MangoHud rozwiąże te problemy we w miarę prosty sposób.




Czego potrzebujesz?

  • Linuxa, w moim przypadku Mint, choć podobnie to działa na Ubuntu i pod Debianem. Inne dystrybucje mają własne instrukcje instalacji. Jak nie jesteś pewny, sprawdź konkretną instrukcję dla twojej dystrybucji TUTAJ.

  • nano - czyli w wielu dystrybucjach domyślnego edytora tekstu, który działa w terminalu. Jak nie macie go zainstalowanego, na pewnym etapie wyskoczy komunikat, że czegoś nie znaleziono w systemie. Można wtedy go zainstalować, użyć czegoś innego lub dodać plik konfiguracyjny ręcznie.

  • Steama, choć instrukcje da się też wrzucić w inne, pozasteamowe tytuły. Jak to się wrzuca w gry niesklepowe? Nie wiem. Może google wam pomoże.




[ 1 ] Zaczynamy od instalacji MangoHuda, w terminalu wpisujemy:

sudo apt install mangohud

i podajemy hasło administratora systemu [roota]. Gdy zostaniemy poproszeni o potwierdzenie. Wpisujemy zależnie od języka w terminalu Y lub T i klikamy ENTER. Gotowe, o ile nie wywaliło żadnych błędów, mamy nasz program. Jest gotowy do użycia, choć nie ma jeszcze naszych opcji wyświetlania, tylko domyślne, jak fps, obciążenie karty graficznej i procesora. Jeżeli potrzebujesz tylko tego, przeskocz do kroku 3.



[ 2 ] Tworzymy domyślny plik konfiguracji. W terminalu wpisz:

mkdir -p ~/.config/MangoHud

Następnie:

nano ~/.config/MangoHud/MangoHud.conf

To powinno wywołać edytor tekstu, który może trochę przytłoczyć, ale spokojnie.
Wpisujemy w nim dwa podstawowe mierniki, czyli fps i frametime, jak na obrazku niżej:W moim przypadku nazwa to nowy bufor, bo odpaliłem sam edytor, u was będziecie edytować plik MangoHud.conf.
Kombinacja CTRL + O zapisze taki plik, co powinniśmy zatwierdzić klawiszem ENTERPo wszystkim wychodzimy z nano kombinacją CTRL+X. Jeżeli zostaniecie zapytani, czy zapisać ten plik, pewnie coś w nim zmieniliście po ostatnim zapisaniu lub nie został poprawnie zapisany. Dobra pusty terminal, co teraz?



[ 3 ] Dodajemy w opcjach gry dodatkowy argument.

Wchodzimy do biblioteki Steam'a i szukamy naszej gry. Na jej karcie szukamy koła zębatego, gdzie wybieramy ostatnią opcję, czyli z moim przypadku "Properties", w waszym mogą być "Właściwości". Powinien nam się ukazać panel jak na screenie niżej.

Nas interesują zaawansowane opcje włączania, czyli pole tekstowe, które u was powinno być puste, na dole okienka ustawień ogólnych. Tak, jak w moim przypadku wrzucacie tam:

MANGOHUD=1 %command%

I zamykacie to okienko. Samo się zapisze. W innych aplikacjach powinno to działać podobnie.




[ 4 ] Testujemy czy program działa. Odpalamy grę przez zielony przycisk Steama i w lewym górnym rogu ekranu powinno się wyświetlić okienko z klatkami na sekundę i frametime. Gitarka, prawie gotowe. Zamykamy grę. Jak coś nie działa, musicie prześledzić czy wszystko zrobiliście według instrukcji. Jeżeli wasz Steam był instalowany przez Flatpacka, to musicie zainstalować MangoHuda też flatpackowego. Tam konfiguracja jest trochę inna, ale z pomocą przyjdzie program Goverlay. On graficznie zrobi wszystko to, co my robimy ręcznie.



[ 5 ] Dodajemy mój plik konfiguracyjny z większością potrzebnych opcji. Możemy to zrobić na dwa sposoby. Edytujemy plik tekstowy ponownie za pomocą nano, dosłownie wykonując tę samą kombinację jak wcześniej lub szukamy pliku konfiguracyjnego w plikach i edytujemy jak człowiek zwykłym edytorem tekstu. Ja wybieram opcję nr 2. Wasza wola co zrobicie wy.


Nasz plik zapisany jest w lokacji ./config/, a zobaczyć go możecie, wchodząc w folder domowy [ten główny], klikając na panelu górnym "Widok" i zaznaczyć "Wyświetlanie ukrytych plików". Wtedy wchodzimy w ./config/MangoHud/ i otwieramy w zwykłym edytorze tekstu plik MangoHud.conf . Wklejamy tam ten kod zamiast tego, co dodaliśmy wcześniej:

## USTAWIENIA MangoHuda by Kardynał Dziwisz

# Żeby coś wyłączyć, wystarczy zostawić # przed daną opcją. 
# np. # no_display sprawi, że panel będzie od początku widoczny
# bez potrzeby ręcznego wyświetlenia za pomocą kombinacji 
# prawego Shifta i F12

# LIMIT FPS i VSYNC
fps_limit=40
vsync=1
gl_vsync=1

# DOMYŚLNIE UKRYJ PANEL
no_display

# SKRÓT KLAWISZOWY DO WYŚWIETLANIA
toggle_hud=Shift_R+F12

# POZYCJA PANELU I WIELKOŚĆ CZCIONKI
# OPCJE: top-left (default), top-right, middle-left, middle-right, 
# bottom-left, bottom-right, top-center, bottom-center

position=top-left
font_size=16

# ZAOKRĄGLENIE TŁA
round_corners=10

# PRZEZROCZYSTOŚĆ PANELU [skala 0-1] 
alpha=0.7

# PODSTAWOWE KOLORY - TEKST i TŁO
text_color=ffffff
background_color=354f52

# KOLORY KOMPONENTÓW
cpu_color=cad2c5
gpu_color=cad2c5
vram_color=84a98c
ram_color=84a98c
frametime_color=52796f
engine_color=52796f
io_color=52796f
wine_color=52796f

# CO CHCEMY WYŚWIETLIĆ
# CZAS
time

# MIERNIKI
fps
frametime
histogram
cpu_temp
gpu_temp
cpu_stats
gpu_stats
ram
vram

Zapisujemy i odpalamy grę. Powinniście nie zobaczyć nic, bo od teraz panel wywoływany jest kombinacją PRAWY SHIFT + F12. Możecie tę kombinację zmienić według własnych potrzeb. W pliku jest też informacja gdzie sprawić, by panel był zawsze widoczny i gdzie zmieniamy opcje związane z klatkami na sekundę i vsync, który ma dwie opcje. Pod OpenGL i pod Vulkana [ten bez gl_ w nazwie]. Opcja ta nie jest idealna, bo najczęściej nadpisuje ją sama gra, ale można spróbować. Dodatkowo na githubie macie więcej opcji graficznych, ale mnie wystarczają takie.



Po odpaleniu panelu RSHIFT+F12 w grze zobaczymy to:

Kolory możecie sami edytować. Zostawiłem w kodzie informację, gdzie są. Sam brałem hexy z TEJ STRONY. Jak chcecie domyślnych MangoHuda, po prostu wywalcie tę część kodu.


Co zyskaliśmy? Od teraz nasz gruz nie generuje zbędnych 200 klatek, wykorzystując całą moc obliczeniową, mimo że wyświetlacz ma ograniczenie do 60. Czyli będzie ciszej i płynniej. Domyślnie Vsync będzie dobijał do maksymalnej wartości obsługiwanej przez monitor/wyświetlacz. W moim przypadku 60fps. Mój malutki komputerek [Beelink SER5] nawet przy Rizenie ma problem ze stabilnością i wahania były od 40 do 60 klatek. Skoki płynności. W taki sposób zawsze będzie tak samo, 40 klatek i nie muszę się wkurzać na dziwne przyspieszenia.



NA CO UWAŻAĆ?
Tak jak pisałem w punkcie 4, jeżeli macie program [STEAM/GOG/Cokolwiek co odpala gry] zainstalowany przez Flathuba, to MangoHud też musi być zainstalowany przez Flathuba. W takim wypadku konfigurację dokonuje się przez program Goverlay. Tu nie pomogę, bo bawiłem się nim chwilę, ale z moim Steamem nie działał.

Ile dystrybucji, tyle problemów. Jak coś nie pyknie, polecam szukać pomocy u ChataGPT. Wbrew pozorom jest do tego dobry, jak podacie mu wystarczająco dużo informacji. Zwłaszcza warto sobie sprawdzić, jak się to instaluje w jakiej dystrybucji. Ten poradnik na 100% powinien działać na najnowszym Mincie, Ubuntu i najprawdopodobniej Debianie. Z modyfikacjami na Fedorze, OpenSuse, Solusie i przez Flatpak.

Jak wybrać dobry limit FPS? Dużo zależy od waszego urządzenia i tego ile chcecie poświęcić, żeby było stabilnie. To też dobry sposób na dbanie o temperaturę procesora i karty. Jak chcecie niższej, bo wiatraki lecą na księżyc, warto spróbować niższych wartości. 30 to takie absolutne minimum, 60 to wartość raczej optymalna. Jak FPS skacze wam między 40, a 80, to może 50 będzie optymalne. Liczy się to, by nie było wielkiej różnicy między wartościami mimalnymi i maksymalnymi. Limit jest ważny tylko gdy chcecie zejść niżej, niż nominalna wartość obsługiwana przez monitor. Jak macie 60Hz, a klatki są na poziomie 80, to wystarczy odpalić Vsync=1 i gotowe. Bez zabawy w limity. Warto to zrobić, bo nadmiarowe klatki powodują lagi w obrazie.


Pisałem to kilka godzin, ale pewnie i tak wyjdzie ..., więc no, przepraszam. xD

Jest szansa, że zadziała na SteamDecku.


> #poradydziwena <

#linux #grykomputerowe #gry #poradnik #linuxmint #steam #linuxgaming


Nie jestem specem od linuxa. Po prostu z niego korzystam z doskokami od kilku lat. Nadal mam komputer z Windowsem 11, bo tam część gier po prostu działa, bez wazektomii jądra. xD

hejto.pl

Komentarze (20)

@Dziwen 

Mój malutki komputerek [Beelink SER5] nawet przy Rizenie ma problem ze stabilnością i wahania były od 40 do 60 klatek


kupił sobie PCta, żeby być konsolowym plebsem.


SIOSTRO, KAFTAN!

@eloyard to mój serwer. Miałem na nim np. Valheima jak grałem z innymi. Obecnie wygodniej mi z niego korzystać, niż z dużego kompa, zwłaszcza że te aktualne gry raczej ogrywam na PS5.

@Dziwen - nie gram w żadne gry na windzie już od lat - ba, windy używam tylko na laptopie pracowniczym.

Linux poszedł bardzo do przodu jeśli chodzi o codzienny użytek.

A jeśli nie gra się w gry z anticzitem to w ogóle nie spotkałem się by jakaś gra nie działała - przynajmniej z tych w które ja gram.

@koszotorobur pewne problemy są z anticzitem. Ja najmniej problemów mam ze Steamem i częściowo z Protonem. Jak instalowałem gry przez GOG'a, bo tam są też gry natywnie działające na linuxie, to miałem najwięcej problemów. Taki Neverwinter Nights daje czarne okienko na sekundę i znika.

Zapomniałem, jak ktoś ma SteamDecka i mu to zadziała [SteamOS jest chyba na bazie Ubuntu] to wielkość panelu zmieniamy najprościej edytując wielkość czcionki. U mnie jest font_size=16 u was może być 24. Jak chciecie, by panel był zawsze widoczny, dodajecie # do linijki no_display.

[SteamOS jest chyba na bazie Ubuntu]

SteamOS bazuje na Archu. Zasadniczo to jest po prostu immutable snapshot paczek Archa z danego momentu z kilkoma ręcznie dobranymi według potrzeb.

W ogóle jak ktoś ma SteamDecka to kompozytor wbudowany w system ma wszystkie te opcje o których mówisz i możesz sterować limitami nie tylko fps, vsync itp a nawet możesz sterować wydajnością GPU i CPU z poziomu nakładki Steama.

Nie mam SteamDecka więc dorzucę jakiś losowy screen z neta jak to wygląda.

d8a3b629-6849-4551-a5c1-737a70b476c1

@ErwinoRommelo możliwe, że działa, ale jest zawsze włączony i nie może nadpisywać opcji gry. Tu mamy limit klatek, vsync, inne opcje graficzne, sami decydujemy, co wyświetla i odpalamy go kombinacją klawiszy. Czyli można go po prostu mieć w tle cały czas.

@Dziwen Generalnie propsy za poradnik i że ci się chciało.

A teraz dla leniwych, jak chcecie sobie tylko wyświetlać statystyki zużycia podczas grania to Steam od jakiegoś czasu wspiera je natywnie. Wystarczy włączyć w ustawieniach i można je przełączać skrótem klawiszowym.

W ogóle pierwsze słyszę żeby ktoś używał MangoHuda do ograniczania liczby fps i zarządzania vsync. Wydaje mi się, że lepszą opcją do tego jest używanie ustawień z gry a jako drugie używanie kompozytora od Steama czyli gamescope. Ale może tak też się da, idk.

A po trzecie to polecam wszystkie launchery do gier instalować za pomocą Flatpaka nawet jeśli są dostępne natywnie dla waszego distro. Bo wtedy znikają wszystkie problemy z różnicą pomiędzy dystrybucjami i wszystko się instaluje tak samo. Oraz ma się lepszą wydajność bo wszystkie paczki są dobrane idealnie pod siebie. Sprawdzałem to i gry odpalane na natywnym Steamie na Kubuntu oraz Archu działaja u mnie zauważalnie wolniej niż na Steamie z Flatpaka. Czasem niewiele a czasem różnica to nawet 20%.

c6120b83-d582-4672-8e95-2ea165ccd1e8
f1e76116-9b5d-4eb2-b6d3-be89e68e2d0e

Zaloguj się aby komentować