Dziś po ponad tygodniu pora na dokończenie programistycznego punktu widzenia na ETS2, autorstwa Lookastdu.
...Pora omówić dynamiczne cieniowanie. Przypuszczam, że ETS2 będzie korzystał z mapy cieni (shadow map), czyli metody polegającej na wyrenderowaniu bardzo uproszczonej sceny z „punktu widzenia” źródła światła i zapisania jej w pamięci karty graficznej jako bitmapy w skali szarości. Następnie ta bitmapa jest odpowiednio przekształcana i uwzględniana w renderingu ostatecznej sceny z „punktu widzenia” gracza jako cień obiektów. Wadą tej techniki jest coś w rodzaju wymuszonego kompromisu, pomiędzy zużyciem pamięci karty graficznej, a jakością cienia. Żeby uzyskać wysoką jakość cienia musimy wyrenderować mapę cieni w wyższej rozdzielczości, np. 2048×2048 pikseli. Następnie musimy ją zapisać do pamięci karty graficznej (VRAM), powtarzając ten proces dla każdego źródła światła, co może nam „zapchać” VRAM. Z kolei mała rozdzielczość cienia, np. 512×512 pikseli, da nam efekt poszarpanego na krawędziach cienia (może być on nieco rozmyty, jednakże efekt poszarpania i tak będzie widoczny). Na szczęście dzisiejsze karty graficzne mają przynajmniej 256MB VRAM na pokładzie dzięki czemu technika ta staje się dość dobrym wyborem. Ponadto nie zawsze musimy liczyć cień dla każdego źródła światła, możemy tak zaprogramować silnik graficzny, by liczył tylko najważniejsze źródła światła, jak np. wirtualne Słońce.
Omówmy jeszcze małe „dodatki” do grafiki, czyli HDR i MLAA. HDR (High Dynamic Range), który pewnie znacie z innych gier. HDR to technika polegająca na uzyskaniu wyrenderowanej sceny w kilku wersjach z różną ekspozycją, a następnie, dzięki odpowiedniemu algorytmowi, uzyskaniu sceny końcowej. Początkowo niektórzy producenci gier przesadzali z jej użyciem, wskutek czego otrzymywali przesłodzoną grafikę lub nienaturalne kontrasty. HDR zaczął być wreszcie używany w sposób dający grafikę, bliższą realnym efektom. Ze screenów opublikowanych przez SCS wnioskuję, że nie otrzymamy przesłodzonej bądź też zanadto kontrastowej grafiki, lecz coś bliższego rzeczywistości. Mam nadzieję także, że po wyjeździe z tunelu będzie, przez moment, efekt oślepienia gracza – do takich rzeczy HDR się nadaje świetnie. MLAA (Morphological Anti-Aliasing) to natomiast algorytm wygładzania krawędzi. Nie będę się nad nim zbytnio rozpisywał, powiem tylko, że jest on szybszy niż „tradycyjny” FSAA/SSAA (Full Scene Anti-Aliasing/Super Sampling Anti-Aliasing) i prostszy w użyciu, wraz z deferred shadingiem. W pewnych sytuacjach nie daje on jednak dobrego efektu jak FSAA/SSAA. Cóż, coś za coś, choć chyba lepiej mieć MLAA i drobne pikselowatości, niż cierpieć z powodu kanciastego obrazu.
Na koniec chciałem podziękować za poświęcenie swojego czasu na przeczytanie moich „wypocin”. 😉 Zapewnie niektórzy zauważyli, że tworzenie gier to sztuka dokonywania kompromisów między jakością, możliwościami sprzętu i nakładami pieniężnymi. Doceńmy trud SCS, gdyż chłopaki się naprawdę starają. Jednocześnie chciałbym zaapelować do każdego, mając na względzie kawał roboty jaką trzeba zrobić przy wykonaniu chociażby samych efektów graficznych, by po premierze gry zaopatrzył się w legalną, oryginalną wersję Euro Truck Simulator 2. Czemu? Po to, by docenić i uszanować dzieło twórców gry. Jeżeli nawet mapa nie będzie za dobra, pamiętajcie, że każdy kto robi mapę jako modder, robi on ją na podstawie silnika graficznego, fizycznego, audio i kupy algorytmów, których zaimplementowanie wymaga poświęcenia setek godzin przez programistów. Chcielibyście pracować rok za darmochę? Ja nie. Jednocześnie, jeśli kupicie oryginalną wersję gry wspomagacie SCS Software pieniężnie i dajecie szansę na dalszy rozwój studia, a co za tym idzie, pieniądze na zatrudnienie dodatkowych programistów/artystów i rozwój kolejnych gier. Tym, którzy tak zrobią po premierze gry, zamiast „zasysać z neta” chcę już teraz podziękować. 🙂
KONIEC 🙂
Z dniem dzisiejszym zaczynamy nową akcję: “Goście piszą”. Postanowiliśmy udostępnić rubryki naszego bloga, kilku naszym znajomym, osobom mniej lub bardziej rozpoznawalnym na polskiej scenie symulatorów ciężarówek. Daliśmy im niemal całkowitą dowolność- sami określają o czym dokładniej chcą napisać i jak długi tekst chcą napisać.
Pierwszym, który podjął się wyzwania jest Łukasz – Lookastdu z ekipy projektu Polish – GTS, który zgodził się napisać nieco o stronie technicznej gry. Jeżeli chcecie pójść jego śladem, zapraszamy do nadsyłania propozycji tematów, albo gotowych tekstów na nasz adres mailowy :-). Tekst Łukasza jest na prawdę długi dlatego będzie opublikowany w co najmniej 2 częściach. Zapraszamy do lektury:
Cześć, jestem Łukasz, znany także jako lookastdu i chciałbym dziś napisać nieco o stronie technicznej gry. Od razu ostrzegam, że nie będę unikał czysto technicznego słownictwa, gdyż jestem programistą C++ (na razie jako amator), a także interesuję się po trochu wszystkim co związane z gamedevem (czyt. silniki fizyczne, graficzne, audio itp.). Jednocześnie postaram się by wszystko co napiszę było w miarę proste i zrozumiałe 😉
Nadchodzący Euro Truck Simulator 2 – jaki jest od środka? Przypuszczam, że silnik gry będzie nadal „stary, dobry” Prism3D. Muszę jednak powiedzieć, że na screenach, gameplayu i wg opisu twórców zapowiada się w nim mała rewolucja. Zacznijmy od modeli 3D. Pewnie już zauważyliście, że w ETS2 będziemy mogli doświadczyć trójwymiarowych drzew, oczywiście takich z dopasowaną do tego ilością polygonów. W praktyce, najprawdopodobniej oznacza to, że silnik graficzny został lepiej zoptymalizowany. Gdy robiłem stress-testy w German Truck Simulatorze, przy ilości około 3 mln nieoteksturowanych polygonów, ilość klatek na sekundę spadała poniżej 5, zaś w przypadku 1 mln polygonów gra „klatkowała” na poziomie 10-18 fps. Zakładając, że jedno drzewko może mieć minimalnie 2000 polygonów (SpeedTree 5 generuje modele z liczbą polygonów od 5 000 do 15 000 na drzewo), to licząc, że na scenie mamy 50 drzewek blisko gracza wychodzi nam minimalnie 100 000 polygonów. Ładna liczba, prawda? ;D Jest to ilość poly, jaką potrafi mieć model ciężarówki gracza. Dorzucając do tego polygony aut ruchu ulicznego, drogi, terenu obok drogi, ciężarówek, naczep i innych modeli 3D, dojdziemy do ok. 500 000 polygonów. Do tego nie zapominajmy o oteksturowaniu modeli „bazową” teksturą oraz odbiciami, przeliczeniu wszystkich vertex i pixel shaderów, cieniowania, etc. Jaki wniosek? Twórcy mając podwojony team programistów przyłożyli się do roboty i w efekcie musieli znacznie zoptymalizować naszego starego Prisma3D.
Kolejną dość istotną kwestią, wręcz małą rewolucją jest wprowadzenie do gry dynamicznego oświetlania oraz… deferred shadingu! 😀 Tym którzy nie wiedzą co to za licho już śpieszę z wyjaśnieniami. Otóż „standardowy” sposób oświetlania sceny i cieniowania był oparty na wielokrotnym rysowaniu geometrii sceny, przy czym każde dodatkowe światło oznaczało kolejne przerysowanie geometrii sceny. Istnieje więc zależność dane geometryczne do przeliczenia = geometria sceny * liczba świateł. Deferred shading „upraszcza” tą zależność do poziomu: dane geometryczne do przeliczenia = geometria sceny + liczba świateł. Jest to duży skok do przodu, gdyż jak dotąd z dobrodziejstw deferred shadingu korzystały tytuły sprzedawane setkach tysięcy egzemplarzy, takie jak: Grand Theft Auto IV, Halo Reach czy też Crysis 2. Teraz ta technologia trafi do Euro Truck Simulator 2. Po raz kolejny widać, że zwiększenie liczby programistów w SCS nie poszło na marne. Co zaś wykorzystanie tej techniki oznacza dla gracza? Na scenie każdy obiekt będzie emitował dynamicznie tworzone światło, nie tak jak w poprzednich częściach gier od SCS zwykłą teksturę. Da to odczucie dużo realniejszego światła. Nie napalajcie się jednak na efekty rodem z Crysisa 2 ustawionego na maksymalne wodotryski, gdyż deferred shading jest tylko jedną z części składowych całego silnika graficznego, a ponadto uzyskanie epickich efektów w grafice wymaga też poeksperymentowania, a na to potrzeba czasu.
Koniec cz1. Część druga w ciągu najbliższego tygodnia 🙂