Crytek i nowa generacja
Digital Foundry rozmawia z Cevatem Yerlim o CryEngine, PlayStation 4, Xbox One i Ryse.
Gdy w teście karty graficznej chcemy określić jej wydajność, zawsze sięgamy po Crysisa 3. Najnowsza gra studia Crytek to prawdziwe technologiczne zjawisko: jeden z niewielu tytułów, które powstawały z myślą o sprzętach nowej generacji, wyciskający siódme poty z najnowszych kart AMD, Nvidii i Intela. Ponieważ już niewiele dzieli nas od godziny zero nowych konsol, skontaktowaliśmy się z Crytekiem, by porozmawiać o technologii - o tym, jak przenieśli swój wieloplatformowy silnik na konsole nowej generacji, a także co firma sądzi o architekturze sprzętu Sony i Microsoftu. Dosłownie przy okazji zadaliśmy kilka pytań o Ryse.
To niezwykle interesujący i, zaryzykujemy stwierdzenie, kontrowersyjny temat. Graficznych purystów nie ucieszy raczej fakt, że kolejny deweloper wieści śmierć multisamplingu kosztem antyaliasingu czasowego i rozwiązań aplikowanych w postprocessingu. Z kolei liczne rzesze doświadczonych graczy zmartwi, że według Cryteka na konsolach rozgrywka może z powodzeniem toczyć się w 30 klatkach na sekundę. I tak, zgadza się, mamy tu pracującego na Xbox One dewelopera, który twierdzi, że gry wieloplatformowe wydane na obie konsole nie będą bardzo się od siebie różnić - dla niektórych to bardzo gorzka pigułka, której przełknięcie przychodzi im z trudnością.
Pośród całej palety różnorodnych pytań trafiły się i takie, które pozwoliły nam zdobyć nowe, fascynujące informacje - choćby jak przejście z architektury PowerPC na X86 odbija się na kodowaniu i optymalizacji gier, jak Crytek ocenia moc obliczeniową CPU w nowych konsolach, co firma sądzi o ESRAM-ie i systemie dźwiękowym w Xbox One. Ciekawe, że Crytek dąży do zrównania modeli liczonych w czasie rzeczywistym z poziomem znanym z animacją komputerową.
Zanim jednak przejdziemy do meritum, musimy wyjaśnić kilka spraw. Wywiad może przyjąć trzy formy: można go przeprowadzić twarzą w twarz, przez telefon albo drogą emailową. Dobra wiadomość jest taka, że na nasze pytania odpowiada sam Cevat Yerli - założyciel, dyrektor generalny i prezes Cryteka.
Nieco gorsza, że odpowiedzi nie wróciły do nas natychmiast - stąd pojawiają się pytania dotyczące CryEngine 3 i jego następcy, mimo że podczas Gamescomu ujawniono, że firma zrezygnowała z numerowania kolejnych odsłon silnika. Pytania wysłaliśmy zanim Microsoft ujawnił, że Ryse nie jest renderowane natywnie w 1080p i na długo przed prezentacją Yerliego podczas DICE 2013, gdzie przedstawił graficzne modyfikacje wprowadzone do startowego tytułu Xbox One. W efekcie na dodatkowe pytania - szczególnie o to, w jaki sposób Crytek obliczył różnicę wydajności między obiema konsolami nowej generacji na podstawie specyfikacji GPU - nie udało nam się otrzymać odpowiedzi, choć nawet na chwilę nie daliśmy mu z nimi spokoju.
Przypadek Ryse jest o tyle istotny, że jest to pierwsza gra wykorzystująca CryEngine na konsoli nowej generacji, ale w wywiadzie skupiamy się raczej na tym, jak Crytek poradził sobie z przeniesieniem jednego z najbardziej zaawansowanych silników wieloplatformowych na nowy sprzęt i czego w przyszłości możemy spodziewać się po ich technologii. A co z wymaksowaną trylogią Crysisa na konsole nowej generacji? Niestety, choć sami przyjęlibyśmy ją z otwartymi ramionami, to Crytek nie zamierza powiedzieć nawet słowa na ten temat.
„Biorąc pod uwagę, będące fundamentem naszego silnika, wsparcie dla DX11 i architektury 64-bitowej, mogę powiedzieć, że przejście na Xbox One i PlayStation 4 obyło się bez przeszkód, a nowe konsole spełniły pokładane w nich oczekiwania.”
-
Obie konsole wyposażono w GPU kompatybilne z DX 11.1 (i jego kolejne odsłony) i zapewniające pełne wsparcie dla jednostek obliczeniowych ogólnego zastosowania [compute shaders], co pozwala nam zastosować niedostępne wcześniej techniki renderingu. GPU świetnie radzą sobie z obliczeniami operacji, a CPU, w przeciwieństwie do poprzedniej architektury opartej na PowerPC, oferują typowe pecetowe opcje pokroju wykonywania poza kolejnością [out-of-order execution] i przewidywania instrukcji [branch prediction]. Dzięki temu odpada wymóg mikrooptymalizacji i możemy skoncentrować się na algorytmach wysokiego poziomu, co ma znacznie większy wpływ na deweloping.
Bardzo nas też ciekawi, co PlayStation 4 zaoferuje w kwestii obliczeń online. Z kolei strategia, jaką Microsoft obrał dla wsparcia chmury, niesie ze sobą interesujące pytanie: jak możliwości obliczeniowe przełożą się na gry nowej generacji. Sądzę, że Microsoft podjął właściwą decyzję, dołączając Kinecta do każdej konsoli - dzięki temu unikną rozwarstwienia rynku, a deweloperzy będą mogli uznać za pewnik, że zaimplementowane funkcje sensora trafią do grupy docelowej.
To ogromny skok w stosunku do niecałych 512MB dostępnych wcześniej. Taka ilość pamięci bardzo ułatwi nam życie. Ale chociaż usprawniliśmy system przesyłu danych, i tak szybko ją zapełniliśmy, co z kolei zmusiło nas do zoptymalizowania rozmiaru zasobów.
Biorąc pod uwagę, będące fundamentem naszego silnika, wsparcie dla DX11 i architektury 64-bitowej, mogę powiedzieć, że przejście na Xbox One i PlayStation 4 obyło się bez przeszkód, a nowe konsole spełniły pokładane w nich oczekiwania. Z tego, co się orientuję, Ryse było jedyną nextgenową grą na E3, którą opracowano z wykorzystaniem komercyjnego, licencjonowanego silnika. To wystarczające potwierdzenie naszego stanowiska sprzed kilku lat, gdy stwierdziliśmy, że CryEngine opracowano również z myślą o konsolach nowej generacji.
Przejście na nową generację odbywa się w bardzo płynny sposób i chociaż dopiero organizujemy sobie pracę i przygotowujemy narzędzia, to już osiągnęliśmy lepsze rezultaty niż w początkowym okresie istnienia poprzedniej generacji. Lepsza specyfikacja i znajome, pecetowe środowisko, to mile widziane usprawnienia z punktu widzenia deweloperów. Dzięki nim możemy więcej czasu poświęcić na wykorzystanie mocnych stron systemu.
Obie konsole mogą pochwalić się świetną specyfikacją techniczną, każda ma jakieś mocne strony, którymi góruje nad konkurentem. Ale ogólnie rzecz biorąc, na obu tytuły przygotowane z myślą o nowej generacji będą wyglądały mniej więcej tak samo. Optymalizacja pod kątem dzielących platformy różnic będzie podlegała prawu malejących przychodów. Ale nie wykluczam, że tytuły przygotowywane na wyłączność mogą wykorzystać mocniejsze strony danej platformy.
„GPU to przyszłość, co do tego nie ma cienia wątpliwości. W stosunku do poprzedniej generacji wydajność procesora uległa pewnej poprawie, ale to właśnie GPU decyduje o prawdziwym postępie.”
GPU to przyszłość, co do tego nie ma cienia wątpliwości. W stosunku do poprzedniej generacji wydajność procesora uległa pewnej poprawie, ale to właśnie GPU decyduje o prawdziwym postępie. Jeśli zlecimy GPU odpowiedni rodzaj obliczeń, wydajność wystrzeli pod sufit. Wiąże się to jednak z przesunięciem zasobów z tradycyjnego strumienia informacji graficznych - istnieje limit zadań, które można przerzucić na GPU. Co się tyczy pytania o deweloping gier multiplatformowych, to zapewnienie wsparcia dla obliczeń wykonywanych przez GPU nie nastręcza większych trudności niż analogiczne wsparcie multiplatformowego renderingu. Na pewno coraz częściej będziemy korzystać z tej funkcji.
Nieskończenie szybki, jednowątkowy CPU znacznie by wszystko uprościł. Ale te czasy mamy już za sobą, a silniki muszą się dobrze skalować na wiele rdzeni CPU, by gry chodziły szybko i prezentowały najwyższą jakość. Innymi słowy, muszą być w stanie wykonać kilka zadań jednocześnie, nie wywołując przy tym opóźnień i nie zakłócając synchronizacji. CE3 dobrze sobie radzi na tym polu, a podczas prac nad Ryse wprowadziliśmy dodatkowe usprawnienia. Z tego powodu niższa częstotliwość taktowania CPU nie odgrywa tak dużego znaczenia, o ile mamy do dyspozycji wystarczającą ilość rdzeni, między którymi możemy rozdysponować zadania.
Wkład AMD z pewnością odbije się na kompatybilności pecetowych wersji gier - optymalizacja tytułów konsolowych przyniesie duże korzyści pecetowej architekturze opartej na komponentach tej firmy. Ale jestem zdania, że ta kompatybilność będzie dość ograniczona.
Właściciele konsol nowej generacji dostaną w swoje ręce gry rodem z najwyższej klasy pecetów - z wyższą rozdzielczością, wykorzystujące bardziej złożone modele i bardziej zaawansowane techniki renderowania, a wszystko to razem wzięte przełoży się na bogatszą i bardziej wciągającą rozgrywkę. Kluczowe znaczenie ma tutaj fakt, że mając dostęp do konsol wykorzystujących DX11, zbudowanych na lepszych komponentach, możemy ustalić punkt wyjścia dla dewelopingu najwyższej klasy zawartości i odrzucić ograniczenia, z którymi borykaliśmy się na poprzedniej generacji. To wyjątkowo ekscytująca perspektywa.
U podstaw technologii nowej generacji leży wykorzystanie DX11 i 64-bitowej architektury. CryEngine oferuje wsparcie dla obu tych aspektów od czasów Crysisa 2. Dzięki temu bez większych problemów udało nam się opracować pierwszą wersję Ryse, którą mogliśmy odpalić na devkitach Xbox One po niecałym tygodniu wytężonej pracy. Powtórzę tutaj, że fakt, że Ryse było prawdopodobnie jedyną nextgenową grą na E3, którą opracowano z wykorzystaniem komercyjnego, licencjonowanego silnika - a to dowodzi tylko, jak łatwo można zaadaptować funkcje CryEngine na potrzeby tworzenia gier nowej generacji.
„MSAA szybko zaczyna oddziaływać na przepustowość i jego zastosowanie dużo kosztuje. Renderer oparty na deferred shadingu niebezpiecznie winduje wykorzystanie przepustowości.”
Deweloperzy zawsze muszą wybierać między 60 a 30 klatkami na sekundę - ma na to wpływ gatunek gry i złożoność projektu. W przypadku Ryse postawiliśmy na emocje, skomplikowane, wyraziste oświetlenie, szczegółowość otoczenia i złożone modele postaci i ich animacji. Dlatego zdecydowaliśmy się na 30 klatek na sekundę - i jestem przekonany, że większość deweloperów również wybierze bardziej złożone światy w 30 klatkach.
Osiągnięcie 60 klatek wymagałoby pójścia na pewne kompromisy, ponieważ utrzymanie animacji na takim poziomie wymaga dwa razy szybszych obliczeń przy renderingu. Te 30 klatek to standard, który stawia gry ponad produkcjami kinowymi. Nasze wczesne dema z płynniejszą animacją udowodniły, że gracze i osoby obserwujące rozgrywkę nie mają jednoznacznych opinii o jakości gry - mogę tu przywołać przykład filmów w 48 klatkach na sekundę. Nasza decyzja wynika zarówno ze świadomych wyborów podczas produkcji, jak i przeprowadzonych badań.
Najczęściej używane obiekty docelowe renderowania - na przykład G-buffera - umieszczamy w ESRAM-ie. Dzięki temu zapewniamy sobie szybki do nich dostęp. Co prawda, 32MB nie wystarczy, by w pełni wykorzystać MSAA, ale sprytne zarządzanie pamięcią pozwala uporać się z tym problemem.
Zaimplementowaliśmy w Ryse wiele nowych funkcji. Na płaszczyźnie renderingu skoncentrowaliśmy się przede wszystkim na modelach fizycznych, ale usprawniliśmy też animację i fizykę. Na przykład, ubrania i elementy zbroi poruszają się w dynamiczny sposób, ale możemy też z góry przygotować złożone symulacje, które następnie odtworzymy w czasie rzeczywistym.
Ogólnie rzecz biorąc, układ wykonuje obliczenia na plikach dźwiękowych, zajmuje się dekodowaniem dźwięku zakodowanego w XMA - Microsoftowego standardu opracowanego z myślą o grach - oraz kodowaniem/dekodowaniem algorytmu kompresującego. Wykorzystanie zoptymalizowanego procesora - o mocy dwukrotnie przewyższającej układ z 360-tki - pozwala nam odciążyć główne rdzenie. Dzięki temu możemy wykorzystać więcej ścieżek dialogowych, jednocześnie zagrać więcej dźwięków. Układ wykorzystuje też system dźwięku przestrzennego 7.1, co wyraźnie poprawia lokalizację dźwięku w 3D i wpływa na odbiór lokacji, które opracowaliśmy w Ryse.
Silniki przenoszenia danych udowodnił już swoją przydatność na Xbox One - dzięki niemu przyspieszyliśmy strumieniowanie danych tekstur itp. Nie sposób jeszcze powiedzieć, jakie korzyści przyniesie to w dłuższej perspektywie i jak move wypadnie na tle silników obliczeniowych PS4. Zapewne efekty będą uzależnione od typu gry, jaką będziemy chcieli stworzyć.
MSAA szybko zaczyna oddziaływać na przepustowość i jego zastosowanie dużo kosztuje. Renderer oparty na deferred shadingu niebezpiecznie winduje wykorzystanie przepustowości. Na potrzeby Ryse opracowaliśmy niestandardowy SMAA 1TX, swoiste połączenie morfologicznego AA z czasowym antyaliasingiem. To nowa, mocna i względnie wydajna technika, której szczegółami podzieliliśmy się podczas tegorocznego Siggraph. Nasze rozwiązanie analizuje zmiany danych wejściowych, wygładzając ewentualny shimmering podczas ruchu obiektów, maskując ghosting i, pospołu z aliasingiem shadingowym pozwala dostarczyć bardziej filmową jakość obrazu.
Wciśnij przycisk „Launch comparison tool”, aby uruchomić narzędzie porównawcze. Następnie kliknij w miniatury po lewej stronie, by przełączać poszczególne obrazki. Używaj wskaźnika myszki na obrazku po lewej, by powiększyć i porównać elementy graficzne:
Konsole nowej generacji to idealne platformy dla deweloperów mających doświadczenie w opracowywaniu gier na pecety z wyższej półki. Oczywiście, za kilka lat twórcy wydobędą z konsol nowe pokłady mocy, co powinno zaowocować wyraźnym skokiem w optymalizacji i lepszymi wrażeniami z rozgrywki. Sytuacja, z którą mamy do czynienia obecnie - gdy niektórzy z deweloperów opracowują porty konsolowe na podstawie wersji pecetowej - wynikła naszym zdaniem z tego, że pecety zapewniają stabilne środowisko. Przygotowanie tytułu startowego nowej konsoli niesie ze sobą nie lada wyzwanie - głównie dlatego, że specyfikacja konsoli zostaje dopięta w bardzo późnym stadium prac. Innymi słowy, większe znaczenie ma tutaj wydajność niż wygoda.
Jesteśmy przekonani, że premiera nowej generacji konsol pozytywnie wpłynie na zwiększenie atrakcyjności rynku pecetowego, który również my zawsze wspieraliśmy. Ze względu na typowo pecetową architekturę konsol, deweloperzy będą mogli zmaksymalizować swoje inwestycje. Multiplatformowe tytuły, które zobaczymy w przyszłości, powinien charakteryzować wyraźny skok jakościowy.
W idealnym świecie GPU i CPU miałyby dostęp i dzieliłyby całą przestrzeń adresową, co pozwoliłoby zniwelować różnice między pecetami a konsolami. Jednocześnie uprościłoby to wiele rozwiązań w grafice, obliczeniach i przyspieszyło operacje na dużych pakietach danych. Ale na pececie na przeszkodzie stoją standardy DX i OpenGL. Dopóki MS i OpenGL ARB [Architecture Review Board - zrzeszenie firm zajmujących się rozwojem OpenGL] nie zaktualizują tych standardów, deweloperzy będą musieli korzystać z tego, co będą mieli pod ręką.
OpenGL wyraźnie nabiera rozpędu, ale DX11 jest na pecetach zaniedbywane. Wydaje mi się, że głównie ze względu na premierę nowych konsol poświecono mu niedawno więcej uwagi. Wszyscy chcielibyśmy zobaczyć wspólną dla pecetów i konsol zunifikowaną architekturę, a do tego zunifikowane narzędzia deweloperskie albo, co byłoby jeszcze lepsze, zunifikowany dostęp poniżej warstwy abstrakcji sprzętowej.
Jak to miło, że ktoś wreszcie zauważył - dziękuję! Wiele komponentów renderingu fizycznego było obecne w CryEngine już od czasów Crysisa 2 - choćby image based lighting z mapami otoczenia i znormalizowane BRDF [Bidirectional Reflectance Distribution Function, „dwukierunkowa funkcja rozkładu odbicia”]. Podczas prac nad Ryse skupiliśmy się jednak na jednolitości tych funkcji i interakcjach między nimi w strumieniu instrukcji renderingu. Przebudowaliśmy też strumień instrukcji graficznych, by wymusić przekonujące odwzorowanie materiałów i rozwinęliśmy strumień instrukcji źródeł światła, by zachować spójność materiałów do momentu wyświetlenia ostatniej ramki.
„Ale przyszłość to nie tylko realizm, ale również nowe metody artystycznej ekspresji. Następnych kilka lat będzie wspaniałym okresem dla pecetowców i graczy konsolowych.”
W Ryse wykorzystujemy light probes [image based lighting], ponieważ dobrze współgrają z renderingiem fizycznym, a nasi artyści chcieli zachować pełną kontrolę nad „kinowym” przedstawieniem akcji - dlatego opracowaliśmy technikę refleksów [bounce lighting technique], którą ręcznie implementujemy w dowolnych punktach. Rozwinęliśmy również technologię ambient occlusion (to już nasza piąta generacja) i miejscowe refleksy przeliczane w czasie rzeczywistym. Ze względu na ograniczoną moc nowych konsol, 100% GI obliczane w czasie rzeczywistym stanowi pewne wyzwanie, ale uważamy, że jesteśmy w stanie mu podołać.
Ważniejsze pytanie brzmi, czy nasi dyrektorzy artystyczni będą skłonni zrezygnować z poziomu kontroli, jaki mieli do tej pory. Projektanci zaangażowani w pracę nad wysokiej klasy animacjami CG zazwyczaj sprawują pełną kontrolę nad systemem oświetlenia. Jeśli mają ochotę, mogą oświetlić daną scenę, nadając jej fotorealistyczny wygląd. Jeśli zależy ci na filmowym doświadczeniu/oświetleniu, to pełne GI niekoniecznie będzie najlepszym wyborem.
Nie wypowiadamy się na temat innych niż Ryse projektów na konsole nowej generacji.
Jak już ogłosiliśmy podczas Gamescomu, zrezygnowaliśmy z numerowania kolejnych odsłon CryEngine i przechodzimy na model, w którym silnik będzie traktowany jako często aktualizowana usługa dla deweloperów. CryEngine nie przestanie się rozwijać. Poza pełnym fizycznym renderingiem i shadingiem jest wiele dróg rozwoju, a na razie nie udało nam się osiągnąć filmowej czy też fotorealistycznej jakości, która pozwoliłaby zachować spójność na każdej płaszczyźnie. Przykładowo, techniki animacji postaci mają przed sobą jeszcze długą drogę, zanim staną się w pełni realistyczne i zaczną przynosić przekonujące rezultaty.
Ale przyszłość to nie tylko realizm, ale również nowe metody artystycznej ekspresji. Następnych kilka lat będzie wspaniałym okresem dla pecetowców i graczy konsolowych. Podczas wykładu z 2008 roku wspomniałem, że konsole nowej generacji trafią na rynek w 2012/2013 roku, i że udało nam się w grach osiągnąć poziom renderingu na poziomie CG. Te konsole dostarczają nie tylko nowego punktu wyjścia w pracach nad grami, ale też z czasem pozwolą nam go przekroczyć. Stopniowo zniwelujemy różnicę między animacją CG a grami w jakości CG.