Kulisy produkcji Uncharted: Drake's Fortune. Nathan Drake totalnie odmienił Naughty Dog
Nathan Drake miał twarz zwykłego faceta i wyjątkowy talent do pakowania się w kłopoty. Podobnie zresztą jak Naughty Dog, które podjęło się takiego projektu. Studio miało ogromne ambicje, a filmowe sceny sąsiadowały z problemami, których ekipa wcześniej nie znała. Historia Uncharted na PS3 jest przez to równie ciekawa z drugiej strony ekranu. Zwłaszcza gdy spod przyjemnej opowieści o skarbie wychodzą kryzys produkcji, ręcznie rzeźbione zmarszczki i walka o każdy megabajt.
Prace nad Uncharted: Drake’s Fortune, znanym początkowo pod roboczą nazwą Big, ruszyły pod koniec 2004 roku. Rok preprodukcji i dwa lata właściwego developmentu zamknęły się w grze zawierającej około dwóch milionów linii kodu, przy zespole liczącym 70 etatowych pracowników i sześciu kontraktorów. Początek był znacznie skromniejszy: Lemarchand, główny projektant gry, wspominał o zaledwie sześciu osobach, wliczając Amy Hennig i Evana Wellsa.
Kierunek też nie był od początku oczywisty. Josh Scherr, szef zespołu animacji, opowiadał o wcześniejszym pomyśle na umiejscowienie akcji w zaawansowanej stacji podwodnej. Zmiana kierunku rozwoju sprawiła niestety, że odeszła część zaufanych pracowników. Ostatecznie Naughty Dog wymyśliło sobie inspiracje takimi dziełami, jak Indiana Jones, Mumia, Skarb narodów, Robinson Crusoe, Wyspa skarbów, Doc Savage i Tintin - takie wzorce wymieniał Lemarchand. Z tego zestawu wyrosła opowieść z pościgami, zdradami i bohaterem, któremu każdy kolejny plan rozsypywał się w rękach. Przy eksploracji Amy Hennig (scenarzystka i reżyserka gry) wskazywała jeszcze Ico i Prince of Persia, z ich systemami rozwiązywania problemów i szukania trasy za sprawą choćby wspinaczki.
Koszulka narobiła mnóstwo problemów
Taki bohater wymagał jednak odpowiedniego wyglądu. Pierwsze projekty Drake’a miały bardziej komiczny charakter, a Johnny Knoxville (aktor i współtwórca Jackass) stanowił jeden z punktów odniesienia dla jego wyglądu. Prosta koszulka i dżinsy kierowały uwagę graczy na twarz oraz zachowanie. To dość ryzykowny wybór dla studia wychowanego na kreskówkowych postaciach: gracz znacznie łatwiej wyłapuje niezręczny ruch ramienia czy martwe spojrzenie człowieka niż osobliwości anatomii fantastycznego stworka. Zwyczajny strój podnosił więc poprzeczkę wszystkim, którzy tego człowieka składali.
Nolan North, odtwórca roli Nathana Drake’a, już na przesłuchaniu pokazał, że rozumie pomysł Naughty Dog na głównego bohatera. Improwizował i biegał z udawanym pistoletem, a twórcy oceniali jego głos, ruch oraz reakcje. Towarzyszyła mu Emily Rose, która początkowo tylko czytała kwestie z kandydatami. Wspólne sceny z Northem wypadły na tyle dobrze, że dostała rolę Eleny, choć wcześniej nie należała do grona kandydatek. Swoboda ich rozmów i wzajemne przekomarzanie stały się później ważną częścią relacji bohaterów.
Podczas nagrań w House of Moves obsada pracowała z Gordonem Huntem, reżyserem sesji motion capture. Aktorzy wspólnie odgrywali sceny, dzięki czemu wypowiadanym kwestiom od razu towarzyszyły gesty i reakcje partnerów. Animatorzy dopracowywali później przechwycony ruch, a mimikę tworzyli ręcznie na podstawie nagrań wideo. Przyglądali się drobnym grymasom, spojrzeniom i uśmiechom, które nadawały rozmowom charakter. Do gry trafiały również pomysły samej obsady. To North i Rose wymyślili podczas prób uderzenie, którym Elena odpłaca Drake’owi za pozostawienie jej w dokach - drobny gest, który świetnie pasował do ich burzliwej znajomości.
Rich Diamant, główny artysta postaci w Naughty Dog, rzeźbił modele i malował tekstury ręcznie, bez skanów czy powierzchni składanych ze zdjęć. Główni bohaterowie liczyli około 22-30 tysięcy wielokątów, a ich skompresowane tekstury zajmowały po 10-15 MB. Sporo pracy pochłaniały nawet drobne elementy wyglądu. Na samą fryzurę Eleny Diamant poświęcił niemal dwa dni, korzystając ze skryptu MEL, który zamieniał krzywe wyznaczające kształt włosów w geometrię modelu. Zbliżenia twarzy wymagały jednak szczegółów, których nie zapewniała sama liczba wielokątów. Diamant ustawiał model w określonej pozie, rzeźbił odpowiednie fałdy w Mudboxie, a następnie przenosił ich detale bezpośrednio do gry. Silnik odczytywał informacje o drobnych nierównościach podczas obliczania oświetlenia, dzięki czemu skóra wyglądała na bardziej szczegółową bez dodatkowej geometrii. Wyznaczone obszary działania map pozwalały dopasować zmarszczki do aktualnego wyrazu twarzy. Porównania pokazane na GDC dobrze ujawniają skuteczność tego rozwiązania: po wyłączeniu map znika znaczna część drobnych fałd, choć podstawowy model pozostaje ten sam.
Koncepcje i wygląd Nathana Drake'a zmieniały się regularnie. Tutaj widzicie trochę szkiców z wczesnych projektów
Równie starannie opracowywano ruch. Judd Simantov, odpowiedzialny za techniczną stronę pracy artystów, i Jeremy Yates, główny animator rozgrywki, pokazywali, jak studio łączyło motion capture z ręczną animacją. Nagrania dostarczały wiarygodnych ruchów człowieka, ale animatorzy dopasowywali je do tempa gry: usuwali zbędne pauzy, przyspieszali wybrane fragmenty i mocniej zaznaczali kluczowe pozycje ciała. Dzięki temu Drake zachowywał naturalność, a jednocześnie szybciej reagował na polecenia gracza. Ręczna animacja uzupełniała materiał choćby przy chwytaniu krawędzi i wyczynach trudnych do nagrania na planie. Cały ten proces oparto ostatecznie na własnych narzędziach w Mayi, po rezygnacji z planowanego wykorzystania MotionBuildera.
Gotowe animacje silnik łączył później w wiele nakładających się warstw. Richard Lemarchand, główny projektant gry, w lipcu 2007 roku opisywał nawet 15 takich warstw, obejmujących między innymi zachowanie przy osłonach, przeładowanie, potknięcia i mimikę. Christian Gyrling, programista sztucznej inteligencji i animacji postaci, wyjaśniał z kolei działanie animacji addytywnych, zapisujących różnicę względem ruchu bazowego. Zmęczenie mogło dzięki temu występować jako osobny dodatek nakładany na zwykły bieg lub chód. Animatorzy przygotowywali tę warstwę raz, a silnik wykorzystywał ją przy różnych rodzajach ruchu, zachowując ich podstawowy przebieg.
Produkcja utknęła we własnych narzędziach
Naughty Dog płaciło przy tym za nadmierne ambicje związane z własnymi narzędziami. Praca nad teaserem na E3 obnażyła ich problemy, a w czerwcu 2006 roku produkcja znalazła się w poważnym kryzysie. Nowe rozwiązania projektowano z myślą o niemal wszystkich trudnościach znanych z wcześniejszych gier, tymczasem sprawny proces budowania i uruchamiania poziomów powstał zbyt późno. Ekipa długo czekała więc na podstawy, od których zależały testy rozgrywki. Zespół uprościł część narzędzi i wrócił do metod sprawdzonych przy Jak and Daxter. Zrezygnowano również z systemu wymiennych części ciała i ubiorów przeciwników, którego rozwój opóźniał ich wdrożenie do gry.
Studio nagraniowe i realizacje różnych sesji
W porządkowaniu tego warsztatu pomógł Lucas Pope, programista i późniejszy autor Papers, Please oraz Return of the Obra Dinn. Do Naughty Dog dołączył około ośmiu miesięcy przed premierą Uncharted. Pracował nad Charterem, edytorem wykorzystywanym przez projektantów, a także menu, zapisem gry i narzędziami lokalizacji. Christophe Balestra, ówczesny współszef studia, wymieniał go później wśród osób, które uratowały sytuację z narzędziami. Pope dołożył więc do przygody Drake’a zarówno elementy widoczne dla gracza, jak i rozwiązania ułatwiające codzienną pracę reszcie zespołu. Zmienił się również sposób przygotowywania danych dla silnika. Po odejściu od GOAL-a, języka używanego przy Jaku, Dan Liebgold, programista Naughty Dog, stworzył Data Compiler w Scheme. Zachował w ten sposób elastyczność rozwiązań wywodzących się z Lispa, a deklaracje typów danych automatycznie przekładał na struktury C++. Przez narzędzie przechodziły między innymi dane dotyczące animacji, skryptów, parametrów broni, dźwięku i sekwencji wydarzeń. Projektanci zmieniali opisy oraz ustawienia poszczególnych elementów gry, a kompilator przygotowywał je w formacie wykorzystywanym przez silnik.
Przebudowa narzędzi skróciła drogę od poprawki do jej sprawdzenia w działającej grze. Obok programów obsługiwanych komendami pojawiły się edytory z graficznym interfejsem, wygodniejsze dla projektantów i artystów. Pope usprawnił też obsługę tysięcy plików tekstowych i nagrań dla około dwunastu wersji językowych - wcześniej zarządzała nimi jedna osoba przy użyciu arkusza Excela.
Zarządzanie zasobami Uncharted 1 - tutaj widzicie edytor, zależności i wykorzystane narzędzia
Uproszczono też współpracę sztucznej inteligencji z animacjami. AI wybierało czynność, na przykład przejście do osłony, a system animacji odpowiadał za jej wykonanie. Zestawy "animacji akcji" wiązały ruch postaci z konkretnymi osłonami, pojazdami i innymi obiektami, dzięki czemu animacja pasowała do ich położenia w świecie gry. Równie ważne było tempo sprawdzania poprawek. Gyrling podawał, że nowa animacja trafiała z Mayi do postaci działającej w grze w około minutę, a przebudowanie i ponowne wczytanie skryptów zajmowało około 30 sekund. Projektanci szybko widzieli więc efekt zmiany podczas rozgrywki i wracali do pracy nad kolejną wersją zachowania postaci.
Takich prób wymagało choćby strzelanie. Przez kilka miesięcy Naughty Dog eksperymentowało z automatycznym namierzaniem przeciwników i minigrami związanymi ze specjalnymi zabójstwami. Kiedy twórcy sprawdzili ręczne celowanie, już jego wstępna wersja dawała im więcej frajdy i wyznaczyła dalszy kierunek prac. Wzorów szukali przy tym w kilku różnych grach. Lemarchand wskazywał kill.switch jako ważny punkt odniesienia dla walki zza osłon, Resident Evil 4 przy wyborze ręcznego celowania, a Halo przy wspomaganiu namierzania. Gears of War pomagało z kolei w analizie problemów kamery trzecioosobowej. Osobnego dopracowania wymagały pozycja kamery i punkt, z którego startował pocisk - miejsce trafienia musiało zgadzać się z tym, co gracz wskazywał celownikiem. Wcześniej pracę spowalniało otwieranie wielu osobnych plików animacji, a rozbieżności między kluczowymi klatkami wymagały dodatkowych poprawek. Zebranie powiązanych ruchów w jednym pliku ułatwiło ich kontrolę, natomiast nowe narzędzia pozwalały przebudowywać i ponownie wczytywać zawartość bez restartowania gry, skracając przerwy między kolejnymi próbami.
Proces projektowania twarzy był wymagający, czasochłonny i wypełniony przeróżnymi sztuczkami
Przy projektowaniu poziomów korzystano ze szkiców na papierze, planów w Illustratorze i prostych brył przygotowanych w Mayi. Twórcy żałowali później, że przed opracowaniem ostatecznego wyglądu lokacji zabrakło czasu na więcej prób i poprawek ich układu. Testy ujawniały też problemy z samymi przeciwnikami. Wrogowie wyglądali jak ludzie, więc ich odporność na kolejne trafienia szybko zaczęła razić graczy. Zespół zmniejszał im wytrzymałość i dokładał następne fale, żeby starcia nadal stanowiły wyzwanie. Pod koniec produkcji pojawił się również stan zranienia, dzięki któremu trafienie w rękę lub nogę zmieniało animację przeciwnika. Wiarygodny wygląd wymagał odpowiednich reakcji na to, co działo się podczas walki.
Starcia regulował dodatkowo system dynamicznej trudności. Amy Hennig w wywiadzie z okresu premiery tłumaczyła jego działanie dopasowaniem wyzwania do różnych odbiorców. Benson Russell, jeden z projektantów rozgrywki, w 2026 roku przypomniał jednak o obawach dotyczących długości przygody: studio miało w rękach około pięciogodzinną grę za 60 dolarów, bez multiplayera. Według jego relacji system porównywał czas ukończenia starć ze średnimi uzyskanymi podczas testów. Gdy gracz pokonywał przeciwników szybciej, gra podnosiła trudność, spowalniając jego dalszy postęp. Z tych wspomnień wynika, że w pierwszym Uncharted system służył również wydłużeniu czasu spędzonego przy grze.
Cell odpowiadał także za generowanie grafiki
Cały ten zestaw rozwiązań musiał jeszcze działać w granicach możliwości PS3. Konsola oferowała 256 MB pamięci głównej XDR i osobne 256 MB pamięci graficznej GDDR3. Programiści pilnowali więc zarówno rozmiaru danych, jak i tego, którą z tych pul zajmowały. Modele bohaterów, tekstury, animacje, dźwięk i otoczenie potrzebowały miejsca równocześnie, a zwiększenie szczegółowości jednego elementu ograniczało budżet dostępny dla pozostałych. Przy przechodzeniu między lokacjami dochodziło jeszcze doczytywanie kolejnych zasobów, dlatego kontrola zajętej pamięci trwała przez całą rozgrywkę.
Równie ważne było sprawne rozdzielanie pracy procesora Cell. Pål-Kristian Engstad, główny programista odpowiedzialny za generowanie grafiki, opisywał system podziału zadań opracowany wspólnie przez zespół ICE w Naughty Dog i grupę technologiczną SCEE ATG. Zadania trafiały do dostępnych jednostek SPU zgodnie z ustalonymi priorytetami. Każda jednostka mogła wykonywać różne rodzaje obliczeń, zależnie od bieżących potrzeb gry. Dzięki temu obciążenie rozkładało się sprawniej, a silnik ograniczał sytuacje, w których część procesora pracowała intensywnie, podczas gdy pozostałe jednostki czekały bezczynnie.
Nigdy nie zapomnę, jak wielkie wrażenie zrobiło na mnie pierwsze Uncharted. Wtedy też przeskoczyłem na HDTV
SPU pomagały również w przygotowaniu obrazu. Rozpakowywały dane geometrii, odkształcały modele zgodnie z ruchem ich szkieletów i odrzucały trójkąty zwrócone tyłem do kamery. Układ graficzny RSX otrzymywał dzięki temu mniej pracy, ponieważ część obliczeń wykonywał wcześniej Cell. Jego jednostki zajmowały się także fizyką, wykrywaniem kolizji, ruchem cząsteczek, wodą oraz wyznaczaniem ścieżek dla postaci. Szczegółowa scena na ekranie powstawała więc przy współpracy głównego procesora z układem graficznym.
Część informacji potrzebnych silnikowi przygotowywano jeszcze przed uruchomieniem gry. Dla wybranych punktów poziomu określano potencjalnie widoczne fragmenty otoczenia, a wyniki tych obliczeń wykorzystywano później podczas rozgrywki. Dane o stałym oświetleniu zapisywano przy wierzchołkach modeli oraz w sondach przechowujących informacje o świetle w wybranych miejscach lokacji. Światła zmieniające się podczas gry grupowano według obszarów ekranu, przetwarzając do ośmiu źródeł w jednym obszarze na każdy przebieg obliczeń. Gdy efekty cząsteczkowe stawały się zbyt kosztowne, silnik rysował je w buforze o niższej rozdzielczości. Dym tracił wtedy trochę szczegółów, ale jego wyświetlanie mniej obciążało konsolę.
Ograniczenia pamięci wymuszały również ciągłe doczytywanie poziomów, animacji, tekstur, muzyki i dźwięków. Jednostki SPU na bieżąco rozpakowywały skompresowane dane, a dysk twardy służył jako pamięć podręczna dla zasobów, bez obowiązkowej pełnej instalacji gry. Za odczyt i zapis odpowiadał system FIOS, natomiast kompresję oparto na narzędziach Edge. Zasoby trafiały do plików .pak podzielonych na bloki, co ułatwiało zarządzanie ich miejscem w pamięci. System tekstur w każdej klatce porządkował dodatkowo zajmowany obszar, ograniczając rozrzucone luki między danymi. Kolejne fragmenty przygody docierały więc do pamięci w trakcie gry, zgodnie z potrzebami silnika.
Sceny filmowe przygotowywano wcześniej w silniku gry na PS3 i zapisywano jako gotowe nagrania. Balestra tłumaczył ten wybór łatwiejszym zarządzaniem pamięcią oraz przejściami między scenami bez ekranu ładowania. Filmy zachowywały wygląd Uncharted, ale podczas ich odtwarzania konsola nie obliczała na bieżąco wszystkich modeli, animacji i efektów oświetlenia widocznych w kadrze. Ułatwiało to gospodarowanie zasobami i przygotowanie danych potrzebnych po powrocie do rozgrywki.
Tylko spójrzcie na te arty, szkice i zdjęcia koncepcyjne, no przecież coś pięknego!
Tylko spójrzcie na te arty, szkice i zdjęcia koncepcyjne, no przecież coś pięknego!
Do przebiegu rozgrywki dopasowywano również muzykę Grega Edmonsona, kompozytora ścieżki dźwiękowej Uncharted. System opracowany wspólnie z zespołem SCEA odpowiedzialnym za dźwięk i muzykę korzystał z oddzielonych partii orkiestry, nagranych w Skywalker Sound. Ich udział zmieniał się zależnie od wydarzeń, dzięki czemu kompozycje otrzymywały różne warianty dla spokojnej eksploracji i bardziej intensywnych momentów. Muzyka reagowała więc na sytuację, w której znajdował się Drake, podkreślając zmianę tempa i narastające zagrożenie. Na dopracowanie wszystkich tych rozwiązań zespół potrzebował jednak czasu, którego pod koniec produkcji wyraźnie brakowało. Osiągnięcie etapu alfa przyspieszono o dwa tygodnie, ograniczając zakres końcowych poziomów i zostawiając więcej miejsca w harmonogramie na poprawki. Wersja beta była gotowa 14 września 2007 roku, a ostateczny materiał do produkcji płyt ukończono 19 października. Niektóre fragmenty przygody powstawały niemal do ostatniej chwili: według Scherra sekcję ze skuterem wodnym zaprojektowano i zbudowano w mniej niż miesiąc, już blisko końca prac. Finisz oznaczał więc zarówno szlifowanie istniejących poziomów, jak i kończenie zawartości, która dopiero trafiała do gry.
Pierwsze Uncharted zachowało część tych niedociągnięć. Bohaterowie i ich relacje należeli do najmocniejszych stron przygody, ale strzelaniny miejscami zbyt długo powtarzały ten sam schemat. Dla Naughty Dog była to jednak produkcja, przy której zmienił się niemal cały warsztat: od pracy z aktorami i ręcznego opracowywania mimiki po narzędzia projektantów oraz wykorzystanie procesora konsoli. Wiarygodny człowiek w zwykłej koszulce wymagał znacznie więcej pracy niż sam szczegółowy model. Jego gesty, reakcje i sposób poruszania się po świecie połączyły wysiłek aktorów, artystów, animatorów i programistów. Przygotowanie tej jednej przygody dało studiu mnóstwo doświadczenia. Do tego zagwarantowało technologię, która zbudowała potem kolejne, wybitne odsłony.
Przeczytaj również
Komentarze (7)
SORTUJ OD: Najnowszych / Najstarszych / Popularnych