Witaj użytkowniku niezalgowany!
Zarejestruj się na forum uż dziś - nie będziesz widzieć żadnych reklam!

Nowość [League Of Legends] Blog developerski: Optymalizacja Summoner’s Rift

#1

[League Of Legends] Blog developerski: Optymalizacja Summoner’s Rift

[Obrazek: attachment.php?aid=719] Blog developerski: Optymalizacja Summoner’s Riftpo Riot Aeon

Gdy zaczęliśmy planować proces ulepszania Summoner’s Rift, wiedzieliśmy, że naszym głównym wyzwaniem będzie utrzymanie odpowiedniego poziomu wydajności. Nawet najbardziej wypasiona aktualizacja nie ma racji bytu, jeśli sprawia, że komputer eksploduje przy wczytywaniu mapy. Dlatego chcieliśmy mieć pewność, że nowa wersja Summoner’s Rift będzie działać równie sprawnie jak obecna. Od momentu ogłoszenia aktualizacji skupiliśmy się na optymalizacji. Teraz chcemy omówić szczegóły.

Inżynieria grafikiGdy gracz słyszy „wydajność”, zazwyczaj myśli wyłącznie o czysto technicznej stronie gry. W istocie jednak proces ten wymaga ścisłej współpracy pomiędzy grafikami i inżynierami, która umożliwi implementację nowej grafiki przy zachowaniu jak największej wydajności. W przypadku aktualizacji Summoner’s Rift nasi inżynierowie zapewnili grafikom wszelkie narzędzia i dane potrzebne do stworzenia otoczenia przyjemnego dla oka i zarazem przyjaznego dla sprzętu gracza.

Głównym celem naszych grafików było zwiększenie liczby detali, przy jednoczesnym zachowaniu poziomu wydajności z oryginalnej SR. Aby go zrealizować, musieli dysponować minimalnym zestawem wysoce zoptymalizowanych funkcji, które pozwoliłyby im stworzyć ręcznie malowaną mapę. W praktyce oznaczało to, że nasi inżynierowie musieli stworzyć całkiem nowy i bardzo wydajny program renderujący.

Program ten, w uproszczeniu, odpowiada za umieszczanie elementów geometrycznych gry na ekranie. Nasz nowy program renderujący upraszcza cały proces, tym samym zwiększając jego wydajność, zwłaszcza na starszych kartach graficznych. Pozwala on też lepiej dostosować sposób, w jaki dana karta graficzna generuje elementy otoczenia, i zoptymalizować prędkość. Program pozwolił nam także uzyskać większą kontrolę nad formatami tekstur zastosowanych na mapie, zmniejszając użycie pamięci.

Mniej znaczy więcejPomijając inżynieryjną stronę optymalizacji, nasi graficy szukali także innych sposobów na zwiększenie wydajności. Jedną z pierwszych rzeczy, które wzięli na warsztat, była liczba wielokątów, zwłaszcza w modelach stworów w dżungli. Większość z was wie, co mamy na myśli. Przypomnijmy jednak pokrótce, że wielokąt to zestaw punktów w przestrzeni, które współtworzą daną powierzchnię.

Skupiliśmy się na trójkątach, czyli najprostszych wielokątach. W grach używa się dużej liczby trójkątów, tworząc z nich bardziej złożone kształty. Ich dokładna liczba ma duże znaczenie dla wydajności gry na danej karcie graficznej. Słabsze maszyny dotkliwie odczuwają zwiększenie liczby trójkątów na ekranie. Dlatego przy okazji aktualizacji postanowiliśmy ograniczyć liczbę wielokątów, co bardzo przysłużyło się optymalizacji.

[Obrazek: attachment.php?aid=719]
[Obrazek: attachment.php?aid=719]
[Obrazek: attachment.php?aid=719]

[Obrazek: attachment.php?aid=719]
Zwróciliśmy także uwagę na liczbę „kości”, czyli elementów odpowiadających za przemieszczanie lub obracanie obiektów na ekranie. Każdy potwór w dżungli ma określoną liczbę wirtualnych kości, które pozwalają animować jego ruchy i ataki. Jak się zapewne domyślacie, im mniej takich kości, tym większa wydajność gry, więc przygotowując aktualizację staraliśmy się ograniczyć ich liczbę w ruchomych elementach otoczenia.

[Obrazek: attachment.php?aid=719]
Dwa powyższe zabiegi dały nam kolejną okazję do zwiększenia wydajności. Zauważyliśmy, że elementy mapy, takie jak wieże i stwory, kiepsko znoszą „deformację”, czyli przemieszczanie wielokątów w oparciu o ruchy kości. Nowa architektura zastosowana w aktualizacji pozwoliła nam zmniejszyć liczbę połączeń między poszczególnymi wielokątami i kośćmi, a co za tym idzie, jeszcze bardziej zwiększyliśmy wydajność.

Rozmiar ma znaczenieKolejnym krokiem na drodze do optymalizacji był proces zwany „atlasowaniem”, łączący „teksturowanie” (nakładanie skórki na model) i „mapowanie UV” (wyświetlanie tekstury na trójwymiarowym modelu) w bardziej wydajny sposób.

Przestrzeń UV określa sposób, w jaki dany model odczytuje teksturę i które jej części pojawią się na jego powierzchni. Zazwyczaj pomiędzy poszczególnymi UV występują przerwy, przez co model i jego tekstura wygląda mniej więcej tak:

[Obrazek: attachment.php?aid=719]Atlasowanie łączy większą liczbę tekstur w jedną, dużą, którą możemy kompresować lub powiększać, w zależności od docelowego poziomu detali. To prawdziwe zbawienie, gdy zależy ci na oszczędzaniu cennej pamięci. Dla przykładu, zamiast wczytywać pięć tekstur o rozdzielczości 1024x1024, możemy umieścić w grze jedną o rozdzielczości 2048x2048, zwiększając tym samym wydajność.

I wiele innych drobiazgówMamy nadzieję, że wyjaśniliśmy nieco techniczne aspekty nowego wyglądu Summoner’s Rift. Oczywiście zmiany mające na celu zwiększenie wydajności nie ograniczają się do ww. elementów − tu moglibyśmy wymienić jeszcze zmiany w tuszowaniu postaci, usprawnienia pola widzenia, upłynnienie siatki nawigacyjnej i rozmaite pomniejsze poprawki. Krótko mówiąc, wprowadzaliśmy usprawnienia wszędzie, gdzie się tylko dało. Optymalizacja pod kątem obecnie używanych maszyn była dla nas kwestią priorytetową i poświęcimy jej wielką uwagę także w dalszych fazach produkcji, zaczynając od otwartej wersji beta.



Odpowiedz


Podobne wątki
19.12.2014 20:02
Ostatni post: Argin
05.12.2014 09:45
Ostatni post: Argin
01.12.2014 22:54
Ostatni post: Argin
01.12.2014 22:52
Ostatni post: Argin
28.11.2014 19:06
Ostatni post: Argin
25.11.2014 21:59
Ostatni post: Argin
22.11.2014 23:01
Ostatni post: Argin
15.11.2014 11:59
Ostatni post: Argin
31.10.2014 21:54
Ostatni post: majtol12
29.10.2014 21:32
Ostatni post: Mefedroniczny



Użytkownicy przeglądający ten wątek:
1 gości

Theme © iAndrew 2017 Forum software by © MyBB .