Jak teraz optymalizuje się gry AAA?

Jak teraz optymalizuje się gry AAA?
HB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Mam takie wrażenie, jakby obecni twórcy gier wcale nie optymalizowali swoich gier. Zwłaszcza ci od Unreal Engine 5. PlayStation 2 posiadała 32 MB pamięci gdzie wszystkie elementy tworzące świat gry zajmowały ok. 130 MB, a przecież do tego dochodziły także inne dane. Więc wykorzystano technikę streamingu, dzieląc grę na tysiące małych sektorów i je ładować z osobna. Jak to teraz optymalizują w grach, czy w ogóle się tym nie przejmują przy pamięci konsoli 16 GB RAM?

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
8

Oj uwierz że optymalizacji w grach jest znacznie więcej niż kiedyś, a to o czym piszesz to must have które dostajesz w większości za darmo w każdym silniku, natomiast jakość tekstur efektów itp sprawia że danych do załadowania jest tysiące razy więcej. Nie ma sensu optymalizować pod przestrzeń dyskową bo ta jest tania i nie jest problemem i w ogóle nie ma sensu spędzać czasu na optymalizacji póki gra działa płynnie na współczesnym sprzęcie bo terminy gonią a gracze domagają się niezliczonej ilości kontentu. 130MB to teraz potrafią ważyć dwie tekstury. Gry ważą przeciętnie 150GB, a niektóre nawet po 400GB i nie zmieścisz tego na raz do swojego potężnego 16GB RAM+VRAM.

Za to najbardziej mnie mierzi co zrobiono od strony hardware'owej - kiedyś pipeline renderingu był prosty i w większości po stronie hardware'u, miałeś proste parulinijkowe pixel shadery, vertex shadery i w zasadzie tyle, chciałeś jakieś trudniejsze efekty to robiłeś drugi przebieg - od czasów wprowadzenia raytracingu wszystko jest kontrolowane software'owo, gry mają setki tysięcy shaderów i teraz najgorsza część - muszą być one każdorazowo kompilowane pod konkretny zestaw GPU + drivera!
Ja nie wiem jak w ogóle można było zaakceptować taki stan rzeczy - kiedyś instalowało się grę w 3 minuty, odpalało i grało, a teraz nie tylko po instalacji ale też po każdej aktualizacji sterownika karty graficznej musimy czekać kilka do kilkunastu a w skrajnych przypadkach nawet kilkudziesięciu minut aż gra się w zasadzie przekompiluje! I nie da się z tym za bardzo nic zrobić bo kombinacji prekompilowanych shaderów jest zbyt dużo żeby to dostarczać z grą, jedyne usprawnienie jakie zrobili to że shadery zainstalowanych gier się kompilują w tle po aktualizacji sterownika gdy komputer nie jest używany. Totalne szaleństwo i uwstecznienie.

Już nie mówię o tym że karty graficzne są tak ciężkie że potrzebują podpórek(!) a nowe PSU używają przekaźników i pstrykają przy załączaniu jak jakieś stare sprzęty. Już kiedy myślałem że nowe sprzęty stają się całkowicie bezgłośne mamy powrót do lat 90-tych, a ładowanie gier cofnęło się do lat 80-tych gdy trzeba było czekać aż gra załaduje się z kasety.

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7102
1

Jak włączyłem po raz pierwszy Orcs Must Die! Deathtrap, to mój gamingowy PC odpalił wszystkie wiatraki na maksa... (RTX4070)
I to w GUI - jakieś okno dialogowe, wpisywanie imienia gracza. Dopiero jak przez to przeszedłem, to mogłem w ustawieniach zmniejszyć rozdzielczość i detale - wszystko było ultra na dzień dobry...
Monitor 4K i jego rozdzielczość się przyczyniły do obciążenia.

Możliwość regulowania obciążenia to też jakaś forma optymalizacji.

Jeśli chodzi o objętość dyskową, to są takie gry, które zawierają dużo filmów, które po ukończeniu story mode tylko niepotrzebnie zajmują miejsce na dysku. Np. w MK11 to kilkadziesiąt GB. Kiedy chcemy sobie trzymać kilka takich gier do grania online, to uzbiera się sporo zbędnych danych. Na Steamie powinno się przy takich grach dodać selektywną instalację. Nawet w Hearthstone, który waży ok. 10GB, możemy nie instalować wszystkich trybów. Np. Ustawkę trzeba dociągnąć po instalacji podstawowej wersji gry.


Gry teraz mogą używać rozszerzonego formatu kolorów.
Drobna zmiana i wysyłamy do karty graficznej więcej danych.
8-bitowe kanały, 16-bitowe kanały, a nawet 32-bitowe kanały...

screenshot-20260514231236.png

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5269
0

@obscurity

Ja nie wiem jak w ogóle można było zaakceptować taki stan rzeczy - kiedyś instalowało się grę w 3 minuty, odpalało i grało, a teraz nie tylko po instalacji ale też po każdej aktualizacji sterownika karty graficznej musimy czekać kilka do kilkunastu a w skrajnych przypadkach nawet kilkudziesięciu minut aż gra się w zasadzie przekompiluje! I nie da się z tym za bardzo nic zrobić bo kombinacji prekompilowanych shaderów jest zbyt dużo żeby to dostarczać z grą, jedyne usprawnienie jakie zrobili to że shadery zainstalowanych gier się kompilują w tle po aktualizacji sterownika gdy komputer nie jest używany. Totalne szaleństwo i uwstecznienie.

https://devblogs.microsoft.com/directx/introducing-advanced-shader-delivery/

HB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Uważam że branża gier potrzebuje nowego bezpiecznego dla pamięci języka programowania ale z małym kompilatotrem bez tego wszystkiego z LLVM i GCC, gdzie LOC w kompilatorze przekracza ponad 40 milionów linii kodu.
Mam do wyboru Odin, Jai, D i Zig ale trzy z nich poza D korzystają z zpalecza LLVM, taki monolit nie jest bezpieczny i nigdy nie będzie.
Ludzie nie są w stanie ogarnąć takiego dużego monolita, czy są w nim jakieś backdoory czy inne luki. D i Go też posiadają mały kompilator tak jak do C może mieć Small-C.
Niestety D i Go posiada GC więc średnio się nadają do pisania gier AAA.

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5269
0

@hardened_bsd

Ludzie nie są w stanie ogarnąć takiego dużego monolita

LLVM Core nie jest aż tak duże, a każdy pass można przeanalizować 1-by-1

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.