Epic pracuje nad przycinaniem gier na silniku Unreal Engine 5. Producent wyjaśnił, jakie mogą być powody problemu
Epic Games zabrało głos w sprawie problemów, jakie sprawia Unreal Engine 5. Firma zapewniła, że są prowadzone prace nad poprawą działania silnika graficznego.
W społeczności graczy Unreal Engine 5 nie cieszy się dobrą opinią ze względu na rozmaite problemy, np. z przycinaniem obrazu, co psuje komfort zabawy i firma Epic Games jest tego świadoma. W artykule na stronie Unreal Engine przedstawiono, skąd bierze się stuttering i jakie środki Epic chce podjąć, żeby temu przeciwdziałać.
Shadery sprawiają problemy
Już na wstępie Epic tłumaczy, dlaczego dochodzi do stutteringu w grach. Otóż zdarza się to wtedy, gdy silnik graficzny musi skompilować nowe shadery potrzebne do wyrenderowania nowego obiektu i proces gry zostaje zatrzymany do momentu, aż praca zostanie wykonana. Kłopot z poprawnym zoptymalizowaniem zadania leży już po stronie samych kart graficznych.
Dla przykładu plik skompilowany 10 lat temu dla architektury 64-bitowej będzie działał na współczesnych procesorach ze względu na dobrą kompatybilność wsteczną CPU Intela i AMD oraz wykorzystanie tych samych instrukcji do odczytu plików przez obu producentów. W przypadku kart graficznych, a one są wykorzystywane do shaderów, sytuacja jest bardziej skomplikowana.
Jak podaje Epic, kod skompilowany dla GPU AMD nie będzie działał na kartach Nvidii. Problemy mogą być nawet pomiędzy różnymi generacjami sprzętu od tego samego producenta. Dlatego deweloperzy tworzyli jedną bibliotekę shaderów i sterowniki tłumaczyły ją na kod, który odczytać mogła karta graficzna zamontowana w komputerze.
Ten proces jednak zaczął sprawiać problemy już w czasach DirectX 11. Tylko że wtedy shadery nie były duże, więc gracze tego nie odczuwali. Obecnie shadery są znacznie większe, dlatego ich kompilowanie przy włączeniu gier tyle trwa lub występuje przycinanie rozgrywki. Jako odpowiedź wprowadzono Pipeline State Object (PSO), które usprawniało proces i pozwalało przygotować shadery, zanim były one faktycznie potrzebne.
Rozwiązanie Epica
Gdy gry zaczęły robić się większe, również i PSO przestało wystarczać, co tyczy się zwłaszcza gier z otwartym światem. Już sama zmiana ustawień graficznych sprawia, że gra inaczej renderuje obiekty i wczytuje shadery. System musi wtedy odnaleźć odpowiednie PSO do wczytania, których według Epica mogą być miliony. Jeśli nie znajdzie go odpowiednio szybko, to gra zaczyna się przycinać.
Dlatego Epic w wersji Unreal Engine 5.2 wprowadził PSO precaching, które wyszukuje odpowiednie PSO podczas wczytywania gry. System sprawdza, jakie obiekty mają być załadowane (statyczne czy ruchome) i jakie ustawienia graficzne zostały wybrane. To wciąż nie jest najbardziej optymalny system, ale lepszy od poprzedniego. Dodatkowym rozwiązaniem jest zachowanie załadowanych już PSO, ale to zwiększa zużycie RAM-u o znaczne wartości.
Epic zwrócił uwagę, że po wprowadzenie PSO precaching przycinanie gier znacznie zmalało. Nie jest rozwiązaniem idealnym, ale producent UE5 pracuje, żeby usprawnić proces. Dlatego zaleca deweloperom korzystanie z najnowszej wersji silnika graficznego. Do tego Epic radzi, żeby między innymi czyścić pliki cache sterowników przed testami i wprowadzić monitorowanie działanie PSO jako standard podczas testów.
Jednocześnie Epic przypomina, że kompilacja PSO nie jest jedyną przyczyną zacinania gier. Warto obserwować, czy pojawiają się na przykład procesy powodujące skoki lub spadki klatkażu. Rady są przydatne, bo coraz więcej deweloperów decyduje się na UE5.