Jak powstało Uncharted: Kolekcja Nathana Drake'a
Rozmowa z Bluepoint Games.
Jedna z największych premier Sony w końcówce tego roku to remaster, ale nie żadne zwykłe odświeżenie gry. Uncharted: Kolekcja Nathana Drake'a to świetne odtworzenie jednych z najlepszych tytułów na PlayStation 3, nie tylko w wyższej rozdzielczości i z większą liczbą klatek na sekundę, ale także poprawionymi modelami i grafiką. Zadbano nawet o dokładny przegląd samej rozgrywki.
Deweloperzy z Bluepoint Games chętnie podzielili się informacjami na temat prac. Marco Thrush - właściciel i człowiek odpowiedzialny w firmie za technologię - opowiada o procesie deweloperskim, mówiąc o samych usprawnieniach, a także zastosowanych rozwiązaniach i pomysłach.
Jest kilka niespodzianek. Dla przykładu, praca Naughty Dog nad The Last of Us Remastered przydała się tylko w pewnym stopniu, ponieważ ta produkcja bazowała w oryginale na silniku Uncharted 2, więc przygotowane w remasterze zmiany nie znalazły zastosowania przy odświeżaniu Uncharted 3. Dowiadujemy się też, jak udało się zmieścić dane z trzech płyt Blu-ray na jednym krążku.
Digital Foundry: Remaster czy remake? Nie wiemy, jak zaszufladkować Kolekcję Nathana Drake'a. Jakie jest twoje podejście?
Marco Thrush: Naszym celem na pewno było zremasterowanie tych gier, a więc usprawnienie wszystkiego, co możliwe, by zaoferować spójną i odświeżoną kolekcję. Nie zamierzaliśmy odtwarzać niczego od podstaw. Gry z serii Uncharted przesuwały granice tego, co było możliwe na PlayStation 3. Usprawniliśmy i przygotowaliśmy nowe obiekty, koncentrując się na grafice, technologii i zmianach w rozgrywce w ten sposób, by rozgrywka przypominała tę, którą pamiętamy.
Jak wyglądały ramy czasowe? To musiał być ogromny projekt, na równi z nową grą wysokobudżetową.
Zaczęliśmy w dniu premiery The Last of Us Remastered w czerwcu 2014 roku, co daje 15 miesięcy od początku do końca. To na pewno był nasz największy projekt - trzy pełne tytuły.
W jakim zakresie bazowaliście na materiałach otrzymanych od Naughty Dog?
Dostaliśmy obrazy dysków, dostęp do całego kodu źródłowego i wszystkich danych źródłowych, jakie się zachowały.
Jak wyglądała współpraca z Naughty Dog? Wprowadziliście nie tylko subtelne, ale też znaczne zmiany. Konsultowaliście takie modyfikacje, czy dano wam wolną rękę?
Współpracowaliśmy z Sony i Naughty Dog przez cały czas, chociażby z szefami różnych działów w ND, a zmiany w rozgrywce testowaliśmy razem i zmienialiśmy w oparciu o nasze własne wrażenia, pod kierunkiem Naughty Dog i zgodnie z opiniami Sony. Evan Wells pomógł nam nawet z rzucaniem granatami w Fortunie Drake'a! Wszystkie usprawnienia w muzyce pochodzą od wspaniałej grupy w Sony, która pracowała nad Uncharted.
Jak zorganizowaliście pracę? Wszystkie trzy gry usprawnialiście jednocześnie, a może pojedynczo? Jakie jest najlepsze podejście do takiego wyzwania?
Początkowo połączyliśmy wszystkie gry w jak największym stopniu, by móc jednocześnie zmieniać całość. Aby włączyć tytuły na PS4 zaczęliśmy od Uncharted 2, Uncharted 1 i na końcu Uncharted 3. Potem nadszedł czas na fazę poprawek. Skupiliśmy się na Uncharted 2, by potem przejść do Uncharted 1, z Uncharted 3 opracowywanym przez cały czas, równolegle. Ostatnie szlify trwały przy wszystkich grach aż do samego końca.
Jaki był rozmiar zespołu w różnych działach?
W szczytowym okresie mieliśmy 48 deweloperów: 13 inżynierów, 17 grafików, 4 projektantów/producentów, 9 wewnętrznych testerów i sporo innych, pomocnych dłoni.
Biorąc pod uwagę niesamowite przywiązanie do detali w ulepszonej grafice, w jakim stopniu zdaliście się na pomoc zewnętrznych firm?
Wszystkie prace związane z obiektami i materiałami przeprowadziliśmy własnymi siłami.
W zasadzie mówimy o trzech różnych grach, demonstrujących ewolucję Naughty Dog w ramach PS3. Jaki miało to wpływ na wasze prace? Czy bazowaliście na Uncharted 3?
Nie było łatwo. W kodzie źródłowym sporo się zmieniło pomiędzy U1 i U2. Naughty Dog zaczęło od podstaw w Uncharted 1 i bazowało na tej pracy w U2, ale zmieniając wiele systemów. U3 powstało na bazie U2, z większą liczbą udoskonaleń i całkiem nowych rzeczy. U1 miało własny system kolizji i fizyki, podczas gdy U2 i U3 to już Havok - to tylko jeden z przykładów.
Gry nie działają na tym samym silniku, więc nie można po prostu przełączyć U1 na Havok i oczekiwać, że nie zmieni to rozgrywki. Każda z odsłon ma swoja własną wersję silnika przeniesioną na PlayStation 4 i tylko część elementów (także wprowadzone dopiero przez nas) jest taka sama w trzech częściach.
Prezentacja Naughty Dog z GDC 2015 o przenoszeniu The Last of Us na PS4 poruszała temat dużych zmian w zarządzaniu zadaniami w procesorze, dzieląc obowiązki na rdzenie i wątki. W jakim stopniu prace nad The Last of Us Remastered pomogły wam w osiągnięciu 60 FPS w Kolekcji?
Kod źródłowy TLOU to rozbudowana wersja U2 (a nie U3), więc brakowało części funkcjonalności potrzebnych do włączenia U3 na PS4. Dostęp do kodu silnika TLOU pomógł jednak w dużym stopniu. Po konwersji tytułów na PS4 (i przy użyciu wiedzy z The Last of Us Remastered) zatrzymaliśmy się w okolicach 30 FPS. Ostatecznie wszystkie trzy tytuły działają na swoich własnych wersjach silnika i zostały indywidualnie zoptymalizowane, by osiągnąć 60 klatek na sekundę.
Pomiędzy Uncharted 1 oraz Uncharted 2 jest niemal generacyjny skok pod względem jakości. Wersja PS3 pierwszej gry znacznie odstaje od kontynuacji z technologicznego punktu widzenia. To zapewne tutaj potrzebne było najwięcej pracy.
Ogólnie staraliśmy się w jak największym stopniu wyrównać grafikę trzech tytułów. Nie chcieliśmy, by po przejściu do Uncharted 2 następowała rażąca zmiana jakości.
W jakim stopniu wszystkie trzy gry dzielą kod i systemy rozgrywki?
Zawsze chcemy, by gracze dostali grę, którą zapamiętali. Braliśmy to pod uwagę, gdy wprowadzaliśmy zmiany w celu uzyskania spójnych wrażeń w trzech tytułach. Dodanie opcji odrzucania granatów było teoretycznie możliwe, ale uznaliśmy, że za bardzo wpłynęłoby na rozgrywkę. W innych przypadkach, takich jak dynamiczne zmienianie poziomu trudności czy wytrzymałość wrogów, bazowaliśmy na doświadczeniach i opiniach tysięcy graczy, mogąc komfortowo wprowadzać modyfikacje.
Czy dramatyczne zmiany w Fortunie Drake'a to chęć zrobienia czegoś więcej w przypadku pierwszej odsłony, czy po prostu efekt zwykłych prac?
U1 na pewno wymagało najwięcej pracy, by dotrzeć do punktu „jaki pamiętamy” z czasów PS3. Naszym celem było, by pierwsza produkcja pasowała idealnie do reszty kolekcji. Dodatki w postaci cieniowania powierzchniowego SSAO i rozmycia obiektów zbliżały nas do tego celu. Zmiany w oświetleniu są takie same, jak te wprowadzone przez nas w U2. Graficy włożyli dużo więcej wysiłków w U1, odświeżając świat, tekstury postaci, detale powierzchni i obiektów czy efekty cząsteczkowe.
Fortuna Drake'a zmieniła się także pod względem rozgrywki w większym stopniu niż sequele. Jak trudne było to z technicznego punktu widzenia? Czy musieliście przez to zmieniać inne systemy?
Niektóre modyfikacje były trudne do dopracowania. Część fundamentalnych systemów jest w U1 inna niż w pozostałych grach, więc nie wystarczyło tylko skopiować kod z nowszych odsłona, by całość działała tak samo.
Ustaliliście sobie jakiś limit poprawek? Odrzuciliście jakieś pomysły?
Wiele pomysłów (jak możliwość odrzucania granatów) wycięto na wczesnym etapie, ponieważ wpływały na balans rozgrywki. Staraliśmy się unikać zmian, które w znacznym stopniu modyfikowały oryginał, chyba że Sony/ND tego chcieli. Poza tym chcieliśmy odwzorować to, co pamiętamy z grania na PS3, co nie zawsze jest równoznaczne z tym, jakie te gry były w rzeczywistości. Potem zajęliśmy się tym, by tytuły wyglądały równie dobrze, co współczesne produkcje.
Wprowadziliście dodatkowe tryby we wszystkich odsłonach, ale czy są jakieś bardziej subtelne zmiany w rozgrywce? Wydaje się nam, że inne jest celowanie w Uncharted 2.
Sporo pracy włożyliśmy w ujednolicenie trzech gier i poprawienie sterowania oraz celowania. Chcieliśmy zbliżyć U1 i U3 do U2 pod tym względem, ale są też ogólne poprawki, jak zmniejszona martwa strefa, lepsze celowanie analogowe i jego precyzja. Pozwalamy też graczom zwiększyć czułość ponad maksymalne wartości z PS3. Fortuna Drake'a doczekała się najbardziej dramatycznych modyfikacji, takich jak kontrola granatów.
Zajęliśmy się niemal każdym systemem z U1: od automatycznego celowania, chowania za osłonami, zmieniania broni, rzucania granatami, zwiększenia zasięgu podnoszenia przedmiotów, aż do dynamicznego zmieniania poziomu trudności i zwiększenia modelu kolizji na głowach wrogów, by trafienie w tę część ciała było bardziej satysfakcjonujące i sprawiedliwe. Subtelne zmiany w rozgrywce zajęły by kilka stron, ale ogólnie gracze mieli dostać tytuł, jaki zapamiętali, a nie taki, jaki był on w rzeczywistości pod względem funkcjonalnym. Celem było poprawienie systemów, zachowując zgodność z oryginałami.
Korzystacie z podwójnej synchronizacji pionowej w Kolekcji? Potrójne buferowanie miało wielki wpływ na jakość obrazu w Uncharted 2 i 3, ale rosło przez to opóźnienie kontrolera. Tymczasem w Kolekcji sterowanie i celowanie jest świetne.
Nie używamy podwójnej synchronizacji pionowej. Taka metoda zmniejszyłaby opóźnienia jeszcze bardziej, ale korzyści te są zdecydowanie mniejsze przy 60 klatkach na sekundę. Zła kolejność poleceń logicznych, jak przetwarzanie poleceń kontrolera po przetworzeniu logiki modelu postaci, czy też zmiana poruszania się w zależności od fizyki i inne mniej oczywiste rzeczy mogą w łatwy sposób dodać kilka klatek opóźnienia do reakcji na polecenia pada.
Grafika doczekała się sporej poprawy. Nawet najmniejsze detale, obecne na ekranie dosłownie przez kilka sekund, potrafią wyglądać teraz znacznie lepiej, z większą liczbą szczegółów czy rozmyciem w ruchu. Jak do tego podeszliście?
Dla U1 i U2 (U3 było jakością docelową) nasi graficy otworzyli każdy model, przyjrzeli się mu i poprawili te, które mogły na tym zyskać. Mieliśmy też cały zestaw porównawczych screenów dla przerywników na silniku gry. Klatka po klatce sprawdzaliśmy, gdzie chcemy coś poprawić.
Niewiele remasterów dotyka geometrii, czego nie obawiano się w przypadku Kolekcji. Poprawialiście wszystko ręcznie, czy w jakiś inny sposób?
Tak, wszystko zrobili własnoręcznie nasi graficy.
Jakie było podejście do poprawiania oświetlenia? Nawet w nowszych odsłonach niektóre zmiany są dość radykalne, choć ogólny wygląd pozostaje bardziej subtelny niż w oryginałach.
Wiele zmian pochodzi stąd, że wcześniejszy gry korzystały z „fałszywych” odbić. Zastąpiliśmy je całościowym podejściem w lokacjach, częściej stosowanym we współczesnych grach. Dopracowaliśmy też odbicia, by były bardziej zgodne z prawami fizyki. Następnie przygotowaliśmy nowe tekstury, by kontrolować te odbicia. Efektem są bardziej realistyczne sceny. Czasami odbić promieni jest więcej niż poprzednio, a czasami mniej - ponieważ wcześniej było ich zbyt dużo. Regularnie wykonywaliśmy porównawcze screenshoty i hamowaliśmy, gdy obrazy zaczynały zbytnio się różnić.
Jedną z największych zagadek przed premierą było zmieszczenie pre-renderowanych przerywników na jednym dysku Blu-ray. Oczywiście nie mogliście utracić jakości, ale jak to się udało?
Lepsza kompresja audio i wideo. Usunęliśmy też część zawartości: na przykład filmy S3D dla Uncharted 3, dodatki dla wszystkich gier, sekwencje z napisami (renderowane teraz w czasie rzeczywistym), a także elementy związane z trybami sieciowymi. Co więcej, wiele gier z doczytywaniem danych poprawia czasy ładowania poprzez duplikowanie obiektów i umieszczanie kopii w odpowiednich misjach na płytach Blu-ray. Po zainstalowaniu danych na dysku twardym (z dużo szybszymi czasami wyszukiwania obiektów) mogliśmy pozwolić sobie na posiadanie tylko jednej kopii danej tekstury i nadal uzyskać szybsze ładowanie (lepsze niż na PS3). Często widzimy pytanie, dlaczego nie renderować wszystkich przerywników w czasie rzeczywistym? Prawda jest taka, że wymagane do tego geometria i tekstury zajęłyby więcej miejsca niż sam film.
Używacie kodeku h.264? Jeśli tak, to przy jakim bitrate? Czy zmienny bitrate pozwala oszczędzić miejsce, czy przeszkodziłby w ładowaniu danych w tle?
Tak, korzystamy w kodeku h.264 ze zmiennym bitrate we wszystkich filmach.
Naughty Dog użyło całej sieci zestawów deweloperskich PS3 do wyrenderowania przerywników na silniku gry. Jak wy do tego podeszliście?
Proces był bardziej zoptymalizowany i zaimplementowany do naszej wersji PS4. Mieliśmy zestaw maszyn podłączonych do dedykowanego PS4, które renderowało docelowe klatki. Następnie zautomatyzowaliśmy proces kompozycji wszystkich przerywników, włączany tyle razy, ile było trzeba. Ostatecznie otrzymaliśmy około 20 wersji każdego przerywnika. Interesujące byłoby spojrzenie, jak zmieniały się wraz z kolejnymi wersjami.
W jakim momencie przygotowaliście te przerywniki? Weźmy Uncharted 2, gdzie filmy miały rozmycie w ruchu, czego nie ma już na PS4. Jednocześnie można włączyć rozmycie podczas rozgrywki.
Wykluczone było posiadanie kilku wersji filmu, więc postawiliśmy na przerywniki bez rozmycia, ponieważ tak domyślnie wygląda rozgrywka.
Naughty Dog wycisnęło wszystkie moce PS3 dzięki szerokiemu korzystaniu z układu PSU w procesorze Cell. Teraz generowanie efektów graficznych przesunęliście zapewne do GPU - jaka była strategia?
Nie stało się nic szczególnego i cała faza post-processingu odbywa się teraz w GPU. Zabawny fakt: efekty te są w implementacji inne w Uncharted 1 i w sequelach, co musieliśmy zachować podczas prac nad konwersją, by zachowywały się podobnie jak na PS3.
Jeśli mowa o CPU, to jakie były wyzwania związane z przeniesieniem kodu bazującego na SPU na standardowe rdzenie x86?
Zaczęliśmy od wersji działającej na PS4 i optymalizowaliśmy, gdzie było trzeba.
Możesz powiedzieć coś o wygładzaniu krawędzi? Wygląda lepiej niż typowe metody w post-processingu.
To względnie prosta metoda FXAA. Najlepszy sposób na uniknięcie poszarpanych krawędzi to upewnienie się, że obiekty ich nie tworzą!
Jak podeszliście do cieniowania powierzchniowego ambient occlusion?
Korzystamy z SSAO z metodą temporalną [porównującą dwie klatki obrazu - dop. red.]. Daje nam to gładszy efekt końcowy, oszczędzając przy tym moce przerobowe. W wersji 1.01 usunęliśmy kilka artefaktów, których nie zauważył chyba jeszcze nikt poza Bluepoint!
Filtrowanie tekstur wydaje się być dość problematyczne w tej generacji konsol. Czy da się wytłumaczyć brak wysokich ustawień filtrowania, skoro na PC nie mają one znaczącego wpływu na wydajność? Kolekcja radzi sobie pod tym względem całkiem dobrze.
Zakres filtrowania ma duży wpływ na wydajność pamięci. Na PC zazwyczaj dostępne są spore zasoby przepustowości pamięci, ponieważ jest ona całkowicie odizolowana od karty graficznej. Konsole stawiają na architekturę współdzielonej pamięci, gdzie tak nie jest, ale korzyści z wspólnej pamięci i tak znacznie przewyższają minusy.
Wyrównaliście jakość modeli postaci? W jakim stopniu mogliście skorzystać z wersji z przerywników?
Upewniliśmy się, że wygląd postaci jest na tyle wyrównany, na ile ma to sens. Graficy sprawdzili, czy detale wyglądają dobrze z bliska. Wyczyściliśmy sporo tekstur i przenieśliśmy szczegóły z nowych odsłon. Pre-renderowane przerywniki często miały już możliwie najwyższą jakość dostępną na PS3, więc wszystkie poprawki na PS4 pochodzą od naszych grafików.
Czy były jakieś sekwencje lub elementy, które sprawiły wam szczególnie dużo trudności?
Głównym wyzwaniem było pewnie przeniesienie sześciu lat dorobku Naughty Dog na PS4, jednoczesne poprawienie całości i dodanie czegoś nowego - czyli ogólna skala prac. Drugim kłopotem było ponowne wyrenderowanie przerywników na silniku gry (musieliśmy bazować na archiwalnych danych) i sprawić, by kompozycja wyglądała tak samo, jak na PS3.
Jak podeszliście do optymalizacji w Kolekcji? Przezroczystość wydaje się być powracającym wyzwaniem, jak było w The Last of Us Remastered.
Staramy się zawsze wiedzieć, gdzie w danym memencie kierowane są moce obliczeniowe i skutecznie lokalizować okazje do optymalizacji. Podczas tworzenia nowych systemów z góry wiemy, ile musimy przeznaczyć na nie czasu podczas renderowania. Potem to już tylko atakowanie pod koniec prac, gdy całość jest już bardziej stabilna (zwłaszcza z graficznego punktu widzenia) i dopracowanie szczegółów. Podczas zbliżania się do ostatecznej wersji zwalniamy i działamy nieco bezpieczniej, więc premierowa łatka to zawsze dobra okazja na zrobienie dodatkowych rzeczy, na które nie starczyło czasu.
Bluepoint pracowało na kodzie przygotowanym przez jednych z najbardziej utalentowanych deweloperów w branży gier. Ile czasu zajmuje zaznajomienie się z projektem?
Każdy projekt to unikatowy płatek śniegu. Czasami wszystko po prostu wskakuje na swoje miejsce, dostajemy kod i dane, kompilujemy i włączamy, z wersją PC do kompletu. Kiedy indziej potrzeba miesięcy, by grę skompilować i ponownie uruchomić. Zazwyczaj wynika to ze specyficznych warunków, w których powstawał tytuł, wymaganych dla kodu rozwijanego przez długi czas. Czasami nie ma po prostu odpowiednich archiwów i trzeba samemu wymyślić, skąd wziąć brakujące informacje czy kod. Wszyscy nasi pracownicy mają duże doświadczenie i nie raz musieli radzić sobie z takimi problemami, co na pewno pomaga.
Czy możliwe jest pozyskanie wiedzy, technik lub całych procesów technologicznych podczas współpracy z deweloperami z górnej półki?
Tak! Na pewno nie brakowało momentów, gdy nie mogłem się doczekać, by zobaczyć, co kryje się „pod maską” nowego projektu.
Kolekcja Nathana Drake'a skończona. Co dalej dla Bluepoint?
Wspaniale było obserwować ciepłe przyjęcie Kolekcji. Trzy gry to mnóstwo pracy i dopiero teraz możemy się zrelaksować z poczuciem dobrze wykonanego zadania. Teraz czas na krótki odpoczynek, ale jesteśmy bardzo podekscytowani następnym projektem. Tym razem to coś całkiem innego.