W pogoni za kinem
-
- Jarosław Chrostowski,
- 01.09.2004
W ciągu ostatnich lat jakość obrazu w grach komputerowych znacznie się poprawiła, wciąż jednak daleko jej do fotorealizmu oglądanego w kinie. Najprawdopodobniej wkrótce się to zmieni.
W ciągu ostatnich lat jakość obrazu w grach komputerowych znacznie się poprawiła, wciąż jednak daleko jej do fotorealizmu oglądanego w kinie. Najprawdopodobniej wkrótce się to zmieni.
Obecnie granice między tradycyjnymi i nowymi mediami zacierają się. Serwisy internetowe oraz elektroniczne wersje czasopism, których papierowe pierwowzory są dystrybuowane z płytami CD i DVD, łączą elementy zarezerwowane dotychczas oddzielnie dla prasy, radia, telewizji i kina. Nie inaczej jest z grami komputerowymi: w ciągu ostatnich kilku lat urosły do roli kolejnego środka przekazu, coraz lepiej łączącego interaktywność wirtualnej rzeczywistości z książką, kinem i telewizją. Średni wiek amerykańskiego gracza to prawie 30 lat, a obroty całej branży gier wideo od kilku lat przekraczają wyniki osiągane przez przemysł filmowy, charakteryzując się przy tym wciąż niezłą dynamiką wzrostu. Nikt już nie traktuje graczy z przymrużeniem oka, a grania jako rozrywki dla małolatów. Gry stanowią obecnie duży i atrakcyjny rynek dla producentów zarówno sprzętu, jak i oprogramowania.

Przez długi czas postaci w grach były przedstawione jako dwuwymiarowe sprajty. Grafika z gry "Duke Nukem 3D".
Przy tej skali złożoności opieranie się na powszechnie dostępnych narzędziach w rodzaju bibliotek DirectX czy OpenGL nie wystarcza. Już w pierwszej połowie lat 90. pojawiły się pierwsze tzw. silniki gier. Termin ten oznacza zwykle zespół wyspecjalizowanych funkcji, bibliotek i narzędzi niezbędnych do zbudowania świata gry, a tworzących w istocie interfejs programowy znajdujący się ponad poziomem popularnych bibliotek w rodzaju DirectX czy OpenGL.

Pierwsza popularna gra 3D na pecety, "Wolfenstein 3D", zdecydowanie nie miała nic wspólnego z fotorealizmem.
Współcześnie termin "silnik gry" daleko wykracza poza zagadnienia graficzne. Nowoczesny silnik gry oferuje możliwość implementacji na wielu platformach sprzętowych pracujących pod kontrolą różnych systemów operacyjnych. Wbudowany język skryptowy z kompilatorem ułatwia pracę nad grą, pozwala także samym graczom na łatwe tworzenie rozszerzeń i modyfikacji, tzw. modów. W obszarze zastosowań graficznych musi zapewniać możliwość wymiany danych ze standardowymi pakietami graficznymi w rodzaju 3ds max czy Maya, często zawiera oprogramowanie animacyjne. Specjalistyczne, narzędzia edycyjne wysokiego poziomu pozwalają na szybkie konstruowanie map (zarówno obszarów zewnętrznych, jak i wnętrz). Za ostateczną formę wizualną odpowiada moduł renderujący, często mylnie utożsamiany z całym silnikiem, podczas gdy w rzeczywistości stanowi jedynie jego część. Coraz częściej w silniku można wyróżnić odrębne moduły odpowiedzialne za poszczególne efekty, np. systemy cząsteczkowe, symulowanie wody, generowanie roślinności czy relatywnie zaawansowane zjawiska fizyczne.
Edytor GUI ułatwia prace nad wyglądem interfejsu graficznego gry. W przypadku gier sieciowych nieodzownym elementem silnika jest kod sieciowy, zapewniający stabilną wymianę danych o wydarzeniach w świecie gry między serwerem a klientami podczas transmisji internetowej. Jest to szczególnie istotne w aspekcie detekcji kolizji, gdyż dyskretny charakter transmisji internetowej może prowadzić do tzw. tunelowania: różnica położenia szybko przemieszczającego się obiektu (pojazdu, pocisku) w dwóch kolejnych pakietach może być tak duża, że oprogramowanie nie zauważy innej bryły znajdującej się na drodze obiektu, np. ściany lub postaci, niezbędne są więc odpowiednie narzędzia interpolacyjne. Odrębną grupę stanowią funkcje i narzędzia odpowiedzialne za tzw. sztuczną inteligencję postaci kierowanych przez komputer (Non-Player Characters, NPC).
Naturalnie nie każdy silnik musi zawierać wszystkie wymienione wyżej elementy. Te, które koncentrują się głównie na zagadnieniach związanych z generowaniem scen 3D, takie jak Genesis3D (http://www.genesis3d.com/ ) czy Irrlicht (http://irrlicht.sourceforge.net/ ), nazywane są silnikami 3D. Natomiast w związku z coraz większą złożonością zagadnień, z jakimi musi uporać się silnik współczesnej gry, powstają nowego typu wyspecjalizowane silniki, niekiedy określane mianem middleware. Przykładami tego typu pakietów są omówiony dalej SpeedTree, odpowiedzialny za generowanie roślinności, oraz Havok, zajmujący się symulacjami fizycznymi. Przyjrzyjmy się zatem silnikom, które są lub wkrótce zostaną wprowadzone na rynek.
Torque

Torque w akcji - grafika z gry "Tribes 2". Obok przedstawiono niektóre z możliwości Torque Shader Engine: refrakcję liczoną dla pikseli, animowanie proceduralnych tekstur, odbicia i poświatę w czasie rzeczywistym.
Cechą charakterystyczną TSE jest możliwość generowania nieskończonych map, budowanych metodą powielania modułu zdefiniowanego przez grafika. Wersja TSE ma w stosunku do pierwowzoru całkowicie przerobiony moduł graficzny, obecnie zgodny z DirectX 9 oraz przygotowany do implementacji mających niebawem nastąpić zmian w OpenGL. Szadery są generowane proceduralnie, współpracując z takimi efektami, jak dynamiczne oświetlenie, mapy głębień, poświata, mgła, odblaski, refrakcja, animowane tekstury UV. System materiałów, pracujący z obiektami o dowolnym typie (teren, budynek, postać), dopasowuje szadery do sprzętu, pozwalając uzyskiwać materiały wieloprzebiegowe także na słabszych komputerach.