Tydzień z

Tydzień z Assassin's Creed III: AnvilNext - silnik przyszłej generacji na sprzęcie obecnej epoki

Małgorzata Trzyna, 02 listopada 2012 11:00 10

Wraz z grą Assassin's Creed III powstawał nowy silnik rozgrywki - AnvilNext, będący odpowiedzią na rosnące wymagania graczy i ekipy twórczej. Powstał z myślą o maksymalnym wykorzystaniu dostępnej mocy obliczeniowej konsol obecnej generacji i kompatybilnością z najnowszymi rozwiązaniami technologicznymi dla pecetów. W artykule przyjrzymy się bliżej możliwościom najnowszego dziecka programistów Ubisoftu i jego zastosowaniu w grze; poznacie szczegóły leżące za realizacją tak dużego przedsięwzięcia, jakim jest tworzenie tak złożonego oprogramowania praktycznie od podstaw.

Wraz z grą Assassin's Creed III powstawał nowy silnik rozgrywki - AnvilNext, będący odpowiedzią na rosnące wymagania graczy i ekipy twórczej. Powstał z myślą o maksymalnym wykorzystaniu dostępnej mocy obliczeniowej konsol obecnej generacji i kompatybilnością z najnowszymi rozwiązaniami technologicznymi dla pecetów. W artykule przyjrzymy się bliżej możliwościom najnowszego dziecka programistów Ubisoftu i jego zastosowaniu w grze; poznacie szczegóły leżące za realizacją tak dużego przedsięwzięcia, jakim jest tworzenie tak złożonego oprogramowania praktycznie od podstaw.

Czym w ogóle jest silnik gry? To zestaw funkcji i procedur, dedykowanych do stworzenia wirtualnej przestrzeni i umożliwienia graczowi interakcji z obiektami w niej umieszczonymi. Często zawiera gotowe metody pozwalające na manipulowanie światem rozgrywki i sprawiające, że jest on dynamiczny.

Do zadań takiego systemu należy przede wszystkim budowa siatki przestrzeni, w której znajduje się gracz. Siedząc przed monitorem widzimy kolejne klatki animacji, złożone z pikseli - lecz wszystkie obiekty zapisane są w formie równań matematycznych i reprezentowane siatką złożoną z trójkątów. Model każdej postaci, każdego drzewa i budynku należy najpierw przedstawić za pomocą takiej właśnie siatki (mesha), przy czym jej szczegółowość powinna z wystarczającą dokładnością odwzorowywać nasze modele. Nie można oczywiście przesadzić w druga stronę, ponieważ renderowanie każdego z takich trójkątów (poligonów) kosztuje odrobinę mocy obliczeniowej maszyny.

Każdy obiekt, jaki ma się w ostateczności znaleźć na ekranie, musi zostać wczytany jako mesh, przeskalowany, umieszczony w poprawnym miejscu, oteksturowany i ocieniowany - dopiero wtedy możliwe jest wyrenderowanie całej sceny, czyli tego, co trafia na nasz ekran. A to tylko jedna klatka, których na sekundę przeciętny gracz chciałby mieć zwykle nie mniej niż sześćdziesiąt.

Prince of Persia (2008)

Przed zadaniem stworzenia tak skomplikowanego systemu stanęli programiści Ubisoftu. Assassin's Creed 1 działał na silniku Scimitar, tym samym, co Prince of Persia z 2008 roku. Pamiętamy go za możliwość przedstawienia rozległych miast o skomplikowanej budowie i system wspinaczki, przez wielu określany jako rewolucyjny. Od tamtego czasu wymagania graczy zaostrzyły się, a rozwój narzędzi programistycznych i poświęcenie ekipy Ubisoftu pozwoliły dokonać technologicznego skoku do teraźniejszości. Czym teraz jest Scimitar? Altair? Przecież on nawet nie umie pływać, nie wspominając już o wspinaczce po drzewach.

Po Scimitarze, wraz z premierą Assassin's Creed II, nadszedł Anvil. Pozwalał on na wyświetlanie do paruset jednostek jednocześnie na ekranie, wprowadził cykl dnia i nocy wpływający nieznacznie na zachowania postaci niegrywalnych (tłumu). Ich inteligencja została poprawiona, zyskali mnóstwo nowych animacji, które mogły być odtwarzane w czasie gry. Woda zyskała odbicia, zakres rysowania obiektów na ekranie zwiększył się - mogliśmy sięgać wirtualnym wzrokiem dalej; miasta były jeszcze większe i bardziej zróżnicowane.

Assassin's Creed II

Ezio wreszcie mógł pływać, skakać ze spadochronem, rzucać bronią i oblatywać szalone machiny Leonardo. Anvil towarzyszył nam przez kolejne gry oparte na "dwójce" - Brotherhood i Revelations. Sterowanie stało się płynniejsze, otoczenie gracza bardziej zróżnicowane, co pozwoliło na konstrukcję ciekawszej fabuły i misji. Sam Animus okazał się doskonałym remedium na wszelkie problemy z czasem ładowania - miasta były budowane na oczach gracza, cieniowanie stosowane chwilę później. Zmiana pory dnia nie wymagała ekranu ładowania - wystarczyło przewinąć słońce i powiedzieć, że Animus to zrobił. Aktualizacja modeli? Nic trudnego, wystarczy nadać im otoczkę animusowych efektów i mogą swobodnie znikać z ekranu, by za chwilę pojawić się w przeładowanej wersji.

Tworzenie AnvilNext rozpoczęło się po wydaniu drugiej części gry, gdy dedykowany zespół projektantów podjął prace nad Asssassin's Creed III. Założenie było proste: zrobić wszystko od nowa. Wyrzucić zbędny balast z "dwójki", Brotherhooda i Revelations i dać graczom coś zupełnie nowego.

Zwierzęta w Assassin's Creed III

W ten sposób w grze znalazły się nowe animacje, przechwytywane metodą motion capture i nanoszone na modele mające trafić do świata gry. Nie wszystko dało się w ten sposób skopiować - ruchy zwierząt zostały utworzone metodą animacji szkieletowej. Ciężko byłoby okleić sarnę specjalnymi markerami i kazać jej przeskakiwać nad kłodą. Wprowadzono pory roku zmieniające się wraz z sekwencjami i poddający się deformacjom śnieg, w którym poruszając się, zostawiamy ślady. Nie tylko zresztą my - wszystkie stworzenia świata gry, których zbiór w trzeciej części został znacznie poszerzony. W "dwójce" i jej sequelach fauna praktycznie nie istniała (nie licząc paru orłów i szczurów), w Assassin's Creed III mamy jelenie, borsuki, wiewiórki, a nawet koty. Wszystkie te stworzenia posiadają własne, specyficzne zachowania i indywidualne animacje; AnvilNext pozwala im reagować na obecność gracza, a nawet innych przedstawicieli swoich gatunków oraz drapieżników.

System pogody stał się w pełni dynamiczny - w poprzednich częściach ten aspekt był przypisany do misji, a i tak rzadko korzystano z możliwości zmiany warunków atmosferycznych. Do gry trafiły dynamiczne obiekty - obozy wroga zmieniające położenie, poprawione losowe zdarzenia zarówno w Pograniczu, jak i w miastach.

Zima w Assassin's Creed III

Skala rozgrywki znacząco wzrosła - Pogranicze jest ogromne i żywe, zamieszkiwane przez dzikie stworzenia i porośnięte roślinnością, której możemy używać do poruszania się, ukrywania bądź tropienia zwierząt. Aby nie być gołosłownym, przywołajmy liczby: AnvilNext jest w stanie wyświetlić do 2500 jednostek na ekranie, jednocześnie - w Pograniczu, we mgle bądź obłokach dymu z broni czarnoprochowej, unoszącego się nad polem bitwy. Efekty cząsteczkowe nie są żadnym wyzwaniem dla nowego silnika.

Kilka słów należy się także całemu systemowi rozgrywki morskiej. Nie mogąc poradzić sobie z tak dużym natłokiem zadań w tak krótkim czasie, Ubisoft Montreal skierował do oddziału z Singapuru prośbę o stworzenie mechaniki pozwalającej prowadzić rozgrywkę na otwartym oceanie. W ten sposób do gry trafiła obsługa fizyki jednostek pływających, pozwalająca na symulację zachowań okrętów oraz warunków pogodowych na morzu - od spokojnych wód po szkwały i fale sięgające dziobu naszej łajby.

Bitwa morska w Assassin's Creed III

Na morzu zachowujemy pełnię kontroli nad bohaterem. Co prawda większość czasu spędzamy za sterem, lecz nic nie stoi na przeszkodzie, by wspinać się po olinowaniu. Okręt znajduje się cały czas w ruchu, a my razem z nim - jest samodzielnym obiektem, symulowanym w całości przez silnik gry, z uwzględnieniem warunków obecnie panujących na morzu. Zmieniają się one dynamicznie: siła wiatru wpływa na formowanie się fal i prędkość poruszania się naszej jednostki, mgła i deszcz ograniczają widoczność. Każda z tych rzeczy wpływa na nasze możliwości i możliwości jednostek przeciwnika, co musi być uwzględnione w obliczeniach zasięgu broni i trafień.

Zrealizowanie tego wszystkiego było możliwe dzięki zmniejszeniu liczby jednocześnie przeliczanych obiektów. Poza okrętem gracza i jednostkami sterowanymi przez sztuczną inteligencję, na mapie znajduje się parę nieskomplikowanych wysp i odległe modele portów. Połowa dostępnej mocy obliczeniowej przeznaczona jest na symulację zachowania wody i wpływu na poruszające się po niej obiekty. Statki kołyszą się i poddają falom o amplitudzie nierzadko przekraczającej kilka metrów.

Oczywiście, gra nie mogłaby nazywać się Assassin's Creed, gdyby nie istniał w niej system wspinaczki na wszystko, co się nie rusza. Również w tym aspekcie twórcy posunęli się dalej, umożliwiając graczom nie tylko wchodzenie na drzewa, ale także bieganie i skakanie po każdej powierzchni, niezależnie od jej kształtu. W poprzednich częściach gry poruszaliśmy się w większości po płaskich platformach, nie wymagających od gry rozwiązywania skomplikowanych modeli obliczeniowych, by prawidłowo pozycjonować stopy bohatera. W Assassin's Creed III wprowadzenie znacznie bardziej otwartego i zróżnicowanego środowiska wprowadziło potrzebę umożliwienia asasynom poruszania się po nieregularnym terenie. Dachy budynków stały się bardziej strome, Pogranicze nie mogło być płaskim kawałkiem mapy z drzewami jako wypełniaczem.

Deszcz w Assassin's Creed III

Z tego właśnie powodu projektanci rozgrywki stworzyli nowe solvery (ang. solve - rozwiązać) zajmujące się obliczaniem mechaniki wspinaczki. W czasie rzeczywistym przeliczają one położenie i kąty nachylenia par kinematycznych tworzących nogi i ręce sterowanej przez nas postaci. Wynik musi być taki, by kończyny nie tylko dopasowywały się do terenu, ale i by wyglądały naturalnie, nie przekraczając więzów nałożonych na model. Twórcy nie mogli sobie pozwolić, by postać miała możliwość wbiegania na niemal pionową ścianę - jak ma to miejsce w niektórych grach Bethesdy - lub wyginała kolana pod nienaturalnym kątem. Wszystko to musi dodatkowo być zrealizowane z uwzględnieniem geometrii świata gry otaczającego postać, więc w grę wchodzi również poprawne obliczenie przecięć i kolizji. Te wszystkie elementy musiały zostać zaprogramowane i umieszczone w grze, co stanowi nie lada dokonanie ze strony ekipy technicznej Ubisoftu.

Modele, na jakich operuje AnvilNext zostały opracowane w kilku różnych aplikacjach. Teren stworzono w 3D Studio Max, postacie - w ZBrush. Ten ostatni pozwala na modelowanie w sposób podobny do tradycyjnego rzeźbienia, informacje o obiektach trójwymiarowych przechowując w "piksolach", konstruktach podobnych do wekseli (trójwymiarowych pikseli). Każdy piksol, oprócz położenia w płaszczyźnie XY, zapisuje głębokość (położenie Z), kolor czy materiał, z jakiego jest wykonany. Ostateczny model jest zapisywany jako siatka wielokątów, których ZBrush może obsłużyć do miliona na raz.

Do modelowania animacji postaci użyto oprogramowania Autodesk HumanIK, z którego korzystano również przy takich tytułach, jak Wiedźmin 2, Borderlands 2 i Dragon Age o tym samym numerze. Jego zadanie sprowadza się do obliczania kinematyki prostej modeli, czyli do wyznaczania chwilowych prędkości punktów materialnych dla niego charakterystycznych, co przekłada się na tworzenie animacji. Nie trzeba wspominać, że wszystkie ograniczenia wynikające z budowy modelu i kolizje animowanego elementu z innymi muszą być tutaj również uwzględnione.

Prawdziwym testem silnika gry jest jednak dopiero pierwsza grywalna wersja. Testy w grayboksach pozwalają programistom rozgrywki upewnić się, czy animacje generowane są w prawidłowy sposób i czy fizyka gry nie zachowuje się nieprzewidywalnie. Gdy jest już co pokazać na ekranie, następuje łączenie wcześniej wymodelowanego świata rozgrywki z silnikiem, wprowadzanie postaci i określanie reguł, jakie będą ograniczały obiekty się w nim znajdujące. Daleka stąd droga do implementacji pierwszych sekwencji fabularnych, nie mówiąc już o kształtowaniu ostatecznej postaci artystycznej finalnego produktu, który po wielu godzinach testów i poprawek zostaje oddane w ręce graczy.

Tydzień z Assassin’s Creed III jest akcją promocyjną firm Ubisoft Polska i gram.pl.

najnowsze

Chwała Wodzowi! - recenzja Beholder 2

W Beholder 2 przenosimy się do totalitarnego państwa i zaczynamy karierę w Ministerstwie na samym dole urzędniczej drabiny - dokąd zajdziemy?