Szczera rozmowa o Xbox One i PS4 z dyrektorem technicznym Metro Redux
Digital Foundry kontra Oleś Sziszkowstow.
Gdy chodzi o wywiady techniczne, przed nami coś wyjątkowego. Dyrektor techniczny studia 4A Games - Oleś Sziszkowstow - nie kryje się z wyrażaniem poglądów na ważne dla niego tematy. A w obliczu przeniesienia się na nową generację konsol, na pewno tych istotnych tematów nie brakuje.
Sziszkowstow jest bezpośredni i szczery. Bez ogródek mówi o procesie deweloperskim na konsolach nowej generacji, poruszając nie tylko kwestię pojawiających się możliwości, ale także problemów. Potwierdza również informacje, o których wcześniej tylko spekulowano. Mowa tu głównie o trudnościach, przed jakimi stają twórcy na Xbox One oraz o sposobie, w jaki Microsoft pracuje nad poprawą swojego środowiska deweloperskiego.
Nie brakuje też innych szczegółów. Deweloper porusza kwestie różnic między PlayStation 4 i Xbox One, szczerze wypowiada się na temat pamięci ESRAM w urządzeniu Microsoftu czy współdzieleniu tych samych zasobów przez GPU i CPU. Wreszcie przedstawia opinię na temat sprzętu PC oraz DirectX 12. Jest też kilka nowości: Microsoft umożliwia obecnie deweloperom obejście biblioteki DirectX 11 i programowanie poleceń bezpośrednio dla sprzętu, na wzór API GNM w Sony. Dowiemy się także, jak duże zmiany wprowadziło udostępnienie mocy zarezerwowanych na Kinect.
*
Digital Foundry: Podczas naszej ostatniej rozmowy byłeś podekscytowany możliwościami oferowanymi przez sprzęt nowej generacji. Teraz wydaliście swój pierwszy tytuł na PlayStation 4 i Xbox One. Nadal jesteś podekscytowany?
Oleś Sziszkowstow: Biorąc pod uwagę, że mamy zaledwie cztery miesiące doświadczenia na zestawie deweloperskim Xbox One i sześć na PlayStation 4, uważam, że wykonaliśmy dobrą robotę (problemy z otrzymaniem zestawów deweloperskich w Kijowie są chyba dobrze znane).
Ale prawda jest taka, że nie zaczęliśmy jeszcze wykorzystywać wszystkich dostępnych mocy. Ze względu na brak czasu i postępu w rozwoju tej opcji, nie udało nam się na przykład zastosować obliczeń równoległych. Oznacza to, że nadal jest sporo mocy, która może przełożyć się na lepszą grafikę i rozgrywkę, jeśli lepiej zapoznamy się ze sprzętem.
„Nie zaczęliśmy jeszcze wykorzystywać wszystkich dostępnych mocy.”
Xbox 360 i PlayStation 3 mogły pochwalić się ambitną architekturą w latach 2006 i 2007. Xbox One i PS4 są dużo bardziej budżetowe. Czy wystarczą więc na równie długi czas?
Oczywiste jest, że w środku nie znajdziemy najbardziej zaawansowanych komponentów, które można kupić na PC (za szalone pieniądze). Są to jednak względnie dobrze zbalansowane urządzenia, bardziej wydajne niż sprzęt większości graczy. Nie zapominajmy też, że możliwość programowania z pominięciem bibliotek i sterowników może przełożyć się na dwukrotnie większą wydajność niż na PC o podobnych podzespołach. Ale potrzeba czasu na osiągnięcie takiej wydajności!
Odpowiadając na pytanie: mogą starczyć na równie długo. Gdy na rynku debiutowało PS3, Nvidia wypuściła też układ G80, w tamtym czasie niemal dwukrotnie mocniejszy niż RSX...
Na dobrą sprawę obserwujemy mądrze zintegrowane podzespoły z istniejących PC. Po raz pierwszy wszystkie platformy są niemal równorzędne. Czy to ważna kwestia?
Na pewno pod względem GPU. Nowoczesne rdzenie graficzne to bardzo skomplikowane urządzenia, z mało wyraźnymi granicami wydajności. Nie możemy już stwierdzić, że „tu blokują nas jednostki logiczne lub cieniujące, lub tekstury, lub filtrowanie”. Możemy być po części ograniczani przez wszystkie te elementy lub niektóre z nich. Osiągnięcie mistrzostwa w tych kwestiach wymaga czasu.
CPU nie ma tak dużego znaczenia, o ile wydajność jest odpowiednia. A dostępna pamięć RAM - jej hierarchia oraz wydajność - i tak są inne pomiędzy platformami.
Jak oceniliście, do czego zdolne są nowe konsole, gdy pierwszy raz mieliście z nimi styczność?
Przygotowaliśmy port gry i przeprowadziliśmy sporo testów!
Jeden mały przykład - Metro: Last Light na obu urządzeniach poprzedniej generacji miało sporo ręcznie optymalizowanych procesów generowania tekstur. Jeden z nich (największy) zajmuje 0,8 ms na PS3 i około 1,2 ms na X360 w jednym wątku procesora. Po pierwszych testach, już po dostosowaniu pod nowe procesory, na PS4 proces zajął ponad 2 ms! Nie wyglądało to zbyt dobrze w klatce generującej się w 16 ms. Ale jedynym zadaniem tego procesu było wyeliminowanie kilku cyklów w starszych GPU, co teraz jest już nieprzydatne. Usunęliśmy tę część kodu.
„Liczenie pikseli na ekranie nie jest raczej najlepszym sposobem na ocenianie różnic w wydajności.”
Mniejsze możliwości obliczeniowe Xbox One, przepustowość pamięci oraz ESRAM - te problemy są dobrze udokumentowane. Standardem są teraz różnice w rozdzielczości, często znaczne. Co myślisz o różnicach między PlayStation 4 i Xbox One?
Trochę sam sobie odpowiedziałeś na pytanie - PS4 jest nieco mocniejsze. Zapomniałeś o jednostkach renderujących, co także jest ważne. Nie zapominamy, że CPU i GPU korzystają z jednej przepustowości DRAM. Widziałem wiele przypadków, gdzie GPU w Xbox One radzi sobie dobrze, ale tylko, jeśli procesor niczym się nie zajmuje. Niestety, działa to także w drugą stronę, choć procesor powinien otrzymywać priorytetowy dostęp do pamięci. Dlatego też decyzja Microsoftu o podkręceniu zegarów tuż przed premierą była sensowna w przypadku ustalonej już architektury.
Liczenie pikseli na ekranie nie jest raczej najlepszym sposobem na ocenianie różnic w wydajności. Jest wiele innych i ważniejszych czynników wpływających na jakość obrazu, poza rozdzielczością. Może i PS4 wyświetli 40 procent więcej pikseli w klatce obrazu, ale nie jest od razu 40 procent lepsze... Nie wystarczą same oczy.
Czy ESRAM rzeczywiście jest tak trudny do programowania?
Problemem nie jest sam ESRAM, tylko jego mała ilość. Wydajność tej pamięci jest odpowiednia do GPU, zastosowanego w Xbox One. Prawdą jest, że teoretycznie maksymalna przepustowość - choć zbliżona do PS4 - jest rzadko osiągana (zazwyczaj dzięki jednoczesnym operacjom zapisu i odczytu). W praktyce widziałem jedynie kilka przykładów, gdy okazywało się to rzeczywistym ograniczeniem.
DirectX 11 vs GNMX vs GNM - jak oceniasz wady i zalety poszczególnych API na Xbox One i PlayStation 4? W okolicach premiery słyszeliśmy narzekania na temat sterowników Xbox One i dużych obciążeń CPU na GNMX.
Powiedzmy tak: widzieliśmy przypadki, w których cały rdzeń CPU na Xbox One był w pełni załadowany tylko przez polecenia rysowania obiektów na scenę i to w przypadku stosowania najszybszych poleceń i zoptymalizowanych sterowników. Równocześnie na PS4 nie mogliśmy nawet znaleźć tych samych poleceń na wykresie, ponieważ były tak szybko wykonywane.
Ogólnie rzecz biorąc, nie rozumiem, dlaczego wybrali DirectX 11 jako punkt startowy dla konsoli. To jest konsola! W PS4 większość komend GPU to kilka wartości DWORD wpisanych w buffer kontrolera, jak kilka cykli CPU. Na Xbox One może to zająć milion razy więcej czasu, ponieważ polecenie musi przebić się przez API.
Ale Microsoft nie śpi. Każda nowa wersja środowiska deweloperskiego przed i po premierze przyśpiesza proces rysowania obiektów. Dodali mnóstwo nowych opcji przeznaczonych do omijania ograniczeń DX11. Dodali nawet głęboko konfigurowalne API w stylu DX12/GNM, choć nie skorzystaliśmy z niego w przypadku Metro Redux ze względu na ograniczenia czasowe.
„W następnym, nieogłoszonym jeszcze projekcie, projektanci chcą więcej wszystkiego, więc prawdopodobnie postawimy na 30 FPS.”
Gry z serii Metro słyną z oprawy graficznej, ale nawet na mocnych PC ciężko utrzymać 60 klatek na sekundę. Tymczasem na PlayStation 4 i Xbox One nie ma z tym problemów. Bez wątpienia zmodyfikowano lub usunięto część opcji z PC, ale obecnie nawet Naughty Dog nie radzi sobie ze stabilnym 1080p60 na PS4. W czym tkwi wasz sekret?
Nie ma żadnego sekretu. Przystosowaliśmy się do docelowego sprzętu. Zadanie w procesorze out-of-order jest zbyt szybkie? Łączymy polecenia. Zbyt wolne polecenie? Prowadzimy je równolegle. Może GPU nie lubi zbyt dużej liczby pierwiastków w pętli? Ale dobrze radzi sobie z obliczeniami na liczbach całkowitych, więc takie zastosujemy. I tak dalej, i tak dalej.
To po prostu sztuka optymalizacji. Również wersja PC bezpośrednio korzysta z tej optymalizacji, zwłaszcza w warstwie obsługi procesora, ponieważ wszystkie platformy stosują procesory z możliwością wykonywania obliczeń poza kolejnością.
Łatwiejszym wyjściem byłoby zapewne postawienia na 1080p30 i skoncentrowanie się na zintegrowaniu dużej liczby opcji graficznych. Dlaczego 60 FPS, a nie 30?
Ponieważ możemy! Prawdę mówiąc, to w następnym, nieogłoszonym jeszcze projekcie, projektanci chcą więcej wszystkiego (jak zawsze), więc prawdopodobnie postawimy na 30 FPS.
Wydaliśmy solidną produkcję w 60 FPS, z jakością dokładnie między ustawieniami wysokimi i bardzo wysokimi z PC. Odrzućmy około 30 procent czasu renderowania na efekty post-processingu (to zazwyczaj stały koszt), otrzymujemy więc około 11 ms w przypadku obiektów na ekranie. Teraz wyobraźmy sobie, że celujemy w 30 FPS, co dałoby około 2,5 razy bogatszą, lepszą oprawę.
Metro Redux to nie tylko port, ale i liczne usprawnienia. W jaki sposób dokonaliście wyboru, które z nich wykonać? Czy architektura konsol wpłynęła na te wybory?
Od premiery Metro: Last Light zebraliśmy liczne sugestie od graczy, do uwzględnienia w Metro Redux. Moc nowych konsol pozwala nam usprawnić elementy kluczowe z punktu widzenia rozgrywki, zwłaszcza strzelanie i ogólne wrażenia. Dla przykładu: walka i przerywniki są teraz bardziej płynne, a sterowanie lepiej reaguje na polecenia. Nowa wersja Metro 2033 korzysta z wielu ulepszeń wprowadzonych w Metro: Last Light: nowe bronie i ich rozbudowa, lepsze skradanie i cicha eliminacja wrogów, lepsza sztuczna inteligencja z bardziej realistycznym zachowaniem, lepsza grafika i tak dalej.
Z jakiego elementu wersji Redux jesteście najbardziej zadowoleni?
Jesteśmy zadowoleni z ogólnego balansu. Gra się teraz lepiej, a oba tytuły działają szybciej i wyglądają świeżej. Cieszy także fakt, że udało się zgromadzić świat Metro w jednym pakiecie, z wszystkimi DLC, trybami i poziomami trudności.
„Moc nowych konsol pozwala nam usprawnić elementy kluczowe z punktu widzenia rozgrywki.”
Wśród graczy pojawiały się rozmowy, że deweloperzy powinni raczej skupić się na tworzeniu nowych gier, a nie przenosić istniejące tytuły na Xbox One i PS4. Jaka jest twoja odpowiedź?
Robimy obie te rzeczy. Pracujemy nad nowymi projektami, nie tylko nad Redux. Mieliśmy wolne moce przerobowe, podczas gdy nowy projekt był w fazie pre-produkcji, choć zespół Redux jest potrzebny przy nowym projekcie, ponieważ prace ruszają do przodu! Ale widziałeś już, że Metro Redux to nie port czy konwersja, ale całkiem nowe wrażenia z rozgrywki, zwłaszcza w Metro 2033!
Czy następna gra powstanie od podstaw, czy skorzystacie z doświadczeń zdobytych podczas prac nad Redux?
Na pewno skorzystamy.
Usprawniliście serię Metro, ale Redux to nadal te same gry. Ostatnio mówiłeś o przyszłości, zwłaszcza o animacji postaci bazującej na fizyce. Sprawdzaliście już sprzęt nowej generacji, możesz powiedzieć coś więcej?
W przypadku naszego nowego projektu projektanci postawili na bardziej sandboksowe podejście. Mniej liniowe, ale nadal oparte o fabułę. Nie chcę wdawać się w szczegóły, ale potrzebna będzie także praca programistów. Poprawiamy także grafikę w wielu istotnych aspektach, jak ostatnio zrobiliśmy z bazującym na fizyce, globalnym ambient occlusion [cieniowanie powierzchniowe - dop. red.], zamiast lokalnego SSAO. Nie chcę mówić o renderowaniu bazującym na fizyce, ponieważ jesteśmy w punkcie, w którym artyści dopiero zmieniają swoją mentalność w związku z tą technologią.
Wygląda na to, że niemal wszystkie większe gry nowej generacji posiadają oświetlenie bazujące na fizyce. Czy to także wasz wybór w nowym projekcie, powstającym z myślą o nowej generacji?
Czym jest renderowanie bazujące na fizyce [physically-based rendering, PBR - dop. red.] i dlaczego go użyć? Po pierwsze, oznacza to mniej dostosowywania obiektów, by wyglądały dobrze. Dzięki temu podejściu, jest to rozwiązanie cenione przez specjalistów od oświetlenia, jednocześnie nie cierpią z tego powodu także ludzie od tekstur. Z technicznego punktu widzenia w PBR chodzi głównie o odbicia na każdym pikselu. W Redux zastosowaliśmy oszczędne odbicia. To mały, ale ważny punkt PBR, choć świadomie zostawiliśmy artystom opcje modyfikacji wyglądu scen. Ale tak, w następnym projekcie stawiamy w pełni na PBR. Koniec z ręcznymi zmianami, przynajmniej na razie.
Jaka jest twoja opinia na temat Mantle i DX12? Czy chodzi o wprowadzenie podobnego procesu deweloperskiego na PC i konsolach?
Poza znacznie większymi możliwościami pracy bezpośrednio na sprzęcie, te biblioteki API stanowią zmianę myślenia, jeśli chodzi o projektowanie API. W DirectX 11 motto brzmiało: „Zrobię wszystko za ciebie”, tymczasem DX12 mówi: „To twoja odpowiedzialność”, więc warstwa może być dużo cieńsza. Tymczasem Mantle jest w mojej opinii prowizorycznym API.
Jak bardzo DX12 przyda się na Xbox One? Czy przypadkiem już teraz adresowanie GPU nie obciąża zbytnio CPU?
Nie, jest ważne. Śledzenie wszystkich zależności zabiera spory wycinek mocy w CPU. A jeśli mówimy o generowaniu grup poleceń w wielordzeniowym procesorze, to model z DX11 był klapą, podczas gdy DX12 powinien działać odpowiednio.
Udostępnienie mocy przerobowych zarezerwowanych na Kinect odbiło się głośnym echem w mediach. Rozumiem, że dzięki temu zmieniliście renderowaną rozdzielczość z 900p na 912p, co brzmi dość skromnie. Jak ważna była ta aktualizacja? Czy doniesienia były przesadzone?
Problem jest nieco bardziej skomplikowany. To nie tak, że nagle Microsoft daje nam 10 procent mocy, którą wcześniej ukradł. Wartość się waha, czasem wynosi 1,5 proc., czasem 7 proc., i tak dalej. Moglibyśmy celować w wyższą rozdzielczość, ale postawiliśmy tym razem w stu procentach na stały, zsynchronizowany poziom klatek na sekundę. Nie można jednak wykluczyć, że przy większych zasobach czasu udałoby się osiągnąć więcej. Jak mówiłem wcześniej, oprogramowanie deweloperskie XDK poprawia się co miesiąc.
Czy twórcy gier na PC nadal celują w wydajność na poziomie architektury Nehalem? Czy DX12/Mantle sugeruje, że celem jest wyciśnięcie więcej z tego poziomu wydajności, a nie zakładanie, że gracze kupią szybsze procesory?
Wydajność CPU na dobrą sprawę stanęła w miejscu z kilku przyczyn. Jedną z nich jest ekonomia. Uważam, że twórcy gier na PC powinni celować w konsolowe CPU.
Konsolowe trendy deweloperskie wpływają na PC. Gdybyś budował teraz komputer osobisty z myślą o przyszłości, to co byś wybrał?
Trudno odpowiedzieć bez wdawania się w „wojenki fanów”. Kupiłbym najmocniejsze komponenty, na jakie pozwala budżet, z naciskiem na GPU.
Jakiś czas temu Nvidia ogłosiła prace nad ujednoliconą pamięcią dla PC. Czy to ważny krok w przyszłości tej platformy?
Problemem ujednoliconej pamięci jest jej wspólność. Nawet na konsolach, gdzie mamy zintegrowane systemy, nadal jest opcja adresowania pamięci „dla GPU”, „dla CPU” lub „wspólnie”. A pełna wspólność nie jest aż tak przydatna, ponieważ marnuje wydajność. Jeśli zaś mowa o tradycyjnych PC - przejście przez jeden zewnętrzny port do wychwycenia pakietów byłoby raczej wolne.
Jakieś opinie na temat SteamOS? Last Light działa na Linuksie na starszym OpenGL, ale rozumiem, że trwają prace nad bardziej zaawansowaną wersją?
Tak, oryginalne Metro: Last Light na Linuksa powstało w oparciu o OpenGL 3.2. Całość była stabilna, ale nie wspierała najbardziej zaawansowanych funkcji. W Redux na dobrą sprawę kopiujemy wersję DX11, z równolegle przenoszonymi opcjami.
Nvidia Tegra K1 oferuje sytuację, w której mamy CPU o rozsądnej mocy, połączone z GPU na równi z konsolami poprzedniej generacji oraz dostęp do pełnego API OpenGL. Czy widzisz sprzęt mobilny jako potencjalną przyszłą platformę dla waszych gier?
Absolutnie. K1 to jasna gwiazda w świecie mobilnym. Chciałbym, by na niebie było pełno takich gwiazd, żeby całość była dla nas opłacalna z ekonomicznego punktu widzenia!