GLQuake

Poniższy artykuł ukazał się w magazynie Reset, numer Wrzesień 1997. Jednak (nie z mojej winy) ukazała się starsza wesja artykułu (przed ostatecznymi poprawkami). Zatem, czytelniku czytasz jego lepszš wersję! Dodałem też więcej obrazków, które nie dotarły na czas do redakcji. Miłej lektury...
Aha, pierwszy obrazek z artykułu został błędnie umieszczony dwa razy :(

Artykuł copyright © 1997 magazyn Reset
Piotr Marek, Jr.
yoonior@quake.org.pl



KWAK NA WSPAK - GLQUAKE.
Gram w Quake'a już przeszło rok i nie sšdziłem, że coœ mnie w nim jeszcze zaszokuje. Myliłem się i to bardzo! Zupełnie przez przypadek stałem się chwilowym posiadaczem karty Diamond Monster 3D i to właœnie dzięki niej trafiłem do Quake'owego nieba. Jedno słowo: GLQuake.

TROCHĘ (PRE)HISTORII.
Już Qtest1 (oficjalnie nazwany Quake Deathmatch Test), wypuszczony w lutym 1996 pokazał, że w kšt pójdš wszystkie 486 i powolne Pentium. Większoœć komputerów nie radziła sobie z płynnym wyœwietlaniem obrazów (zwykle na Pentium Pro 200 w 1280x1024 osišgano poniżej 10 fps). Wszystkim lubišcym płynnš grę (25-35 fps) pozostawało granie w podstawowej rozdzielczoœci 320x200, w której Quake nie wyglšda najpiękniej.

Pierwszym rozwišzaniem, które miało przyspieszyć Quake'a, był port (wersja) Direct3D. Z powodu problemów z kompatybilnoœciš na komputerach różnych producentów - zarzucono prace nad nim. Główny programista id Software, John Carmack, nie chciał wypuœcić produktu, który nie działałby poprawnie. Tym samym, Direct3D przewidziany przez Microsoft jako API dla gier pod Windows - został odrzucony.

Pierwszš udanš akcelerowanš wersję Quake'a - VQuake - opracowali programiœci z Rendition, producenta akceleratora Verite 1000 do kart graficznych 2D/3D. Bardzo szybko cztery inne firmy wypuœciły karty na nim oparte (Creative Labs 3DBlaster, Intergraph Reactor3D, Sierra Screamin' 3D, Canopus Total 3D). Specjalnie dla tych kart powstała w paŸdzierniku pierwsza wersja VQuake (jest ich w sumie siedem - ostatnia jest bardzo stabilna). Czym VQuake różnił się od zwykłego Quake'a? Jest w nim prawie wszystko to, co w wesji GLQuake (za wyjštkiem cieni obiektów trójwymiarowych oraz lustrzanych i półprzezroczystych powierzchni). Niestety karty oparte na Verite 1000 sš oficjalnie niedostępne na polskim rynku. Jeżeli dodać do tego niebagatelne osišgi (20-25 fps), nawet na P133, to można zrozumieć dlaczego GLQuake zdobył błyskawicznie wielkš popularnoœć w całym œwiecie.

GLQUAKE? CZY TO BOLI?
GLQuake to specjalna wersja Quake'a oparta na bibliotekach standardu OpenGL. Napisana dla potężnych komputerów firmy Silicon Graphics, opartych na systemie operacyjnym IRIX, doœć szybko została przeniesiona na platformę win32 (Windows NT i Windows 95). Dostępnoœć GLQuake'a stała się faktem dzięki firmie 3DFx, która stworzyła okrojonš wersję bibliotek OpenGL dla swojej karty, w której znajdujš się jednak procedury wykorzystywane tylko przez GLQuake'a (co uproœciło pracę, ale też GLQuake jest jednynš aplikacjš OpenGL wykorzystujšcš karty oparte na 3DFx).

JEST PIĘKNIE. NIE CHCĘ TERAZ UMIERAĆ.
Czym różni się GLQuake od zwykłej wersji Quake'a? Przede wszystkim - osišgami. Na całkiem zwyczajnym komputerze z procesorem P133 zaopatrzonym w kartę z akceleratorem firmy 3DFx, GLQuake w rozdzielczoœci 640x480 (z włšczonymi wszystkimi „bajerami") powinien osišgnšć 20-25 fps. Dla porównania, ten sam komputer z dowolnš kartš 2D wysokiej klasy (Mystique, Stealth 3000 Pro, Lightspeed 128) osišgnie 13-17 fps. Osišgi to jednak nie wszystko. GLQuake to także piękno, z jakim Quake powinien był się urodzić:

Quake 640x480GLQuake 640x480
Rys1 - Quake
mapa Start. 16-bitowy kolor
Rys1 - GLQuake
polepszenie głębi ostroœci i wrażenia perspektywy
Rys2 - Quake
mapa Start, witraż w hallu Easy
Rys2 - GLQuake
brak pikselizacji (bilinear filtering)
Rys3 - Quake
mapa Start, witraż w hallu Easy
Rys3 - GLQuake
lustrzane, przezroczyste i półprzezroczyste powierzchnie
Rys5 - Quake
mapa DM3 wersja TW (transparent water)
Rys5 - GLQuake
przezroczysta tafla wody
Rys4 - QuakeRys4 - GLQuake
Rys6 - Quake
mapa Hipside firmy Ritual (dawniej Hipnotic)
Rys6 - GLQuake
cienie wszystkich trójwymiarowych obiektów

Podsumowujšc: GLQuake w swojej maksymalnej rozdzielczoœci 640x480 wyglšda dużo lepiej niż zwykły w 1024x768, a na dodatek łšczy to z osišgami podobnymi do tych z rozdzielczoœci podstawowej 320x200.

SPRZĘT, CZYLI JAK OBRABOWAĆ BANK
Minimalny sprzęt niezbędny do uruchomienia GLQuake'a to komputer z procesorem P90, 16MB RAM (dla posiadaczy Mission Packs 1&2 minimum to 32MB). Zalecany jest P133 i 32 MB RAM. Nie zalecane sš komputery oparte na procesorach firm AMD i Cyrix z powodu bardzo małej wydajnoœci operacji zmienno-przecinkowych. Oczywiœcie, komputer musi być zaopatrzony w kartę 3D spełniajšcš wymogi standardu OpenGL, najlepiej jeżeli jest to karta oparta na chipsetach firmy 3DFx (obecnie sš to karty oparte na Voodoo - Diamond Monster 3D, Orchid Righteous 3D, RealVision Flash 3D, Conopus Pure 3D oraz Voodoo Rush - Hercules Stingray 128/3D i Intergraph Intense 3D Voodoo Rush). Rodzaj i osišgi karty graficznej 2D jest w przypadku kart 3D opartych na VooDoo nieistotna (choć wymagane jest przełšczenie w tryb 16-bitowy), ponieważ podczas pracy akcelerator 3D wyłšcza zwykłš kartę graficznš, przejmujšc całkowicie wyœwietlanie obrazu na monitorze komputera. Karty oparte na Voodoo Rush sš kartami 2D/3D, co w praktyce oznacza pozbycie się poprzedniej karty 2D.

OPROGRAMOWANIE, CZYLI WSZYSTKO ZA DARMO?
Do uruchomienia GLQuake'a lub GLQuakeWorld na domowym PC potrzebna jest pełna wersja Quake'a 1.06 (posiadacze wersji 1.01 mogš się zaopatrzyć w patch q101-106.zip dostępny na ftp Politechniki Krakowskiej). Oprócz tego (oraz driverów do karty 3D) niezbędne sš:

Wszystkie pliki niezbędne do uruchomienia GLQuake'a znajdujš się pod adresem ftp.pk.edu.pl/pub/games/id/quaketoys/glquake/. Specjalnie przygotowane mapy zawierajšce przezroczystš wodę sš pod adresem ftp.pk.edu.pl/pub/games/id/quaketoys/
levels/transparent_water/
.

PRZYSZŁOŒĆ - ŻYCIE NA INNEJ 3-D PLANECIE
Po raz kolejny okazało się, że Quake - gra firmy id Software - podobnie jak Wolfenstein3D i Doom ustanowiła kolejne standardy w przemyœle gier (i to nie tylko w grach typu FPP). Wszystkie zapowiadane gry z gatunku (Hexen 2, Quake 2, Unreal, Prey, HalfLife, SiN, DukeNukem Forever) będš miały wersje OpenGL, ze specjalnymi efektami graficznymi nie osišgalnymi w zwykłych wersjach, działajšce na kartach 3D.
Ponieważ zapowiadane jest licencjonowanie enginów gier typu Quake dla innych gatunków (RPG, symulatory itd.), należy się spodziewać olbrzymiego boomu akceleratorów 3D.
Cicha wojna trwa na innym froncie: pomiędzy „monopolistš" Microsoftem (i jego własnym standardem Direct3D) a twórcami gier (i profesjonalnym standardem OpenGL). Roœnie między nimi coraz większa przepaœć...

PORADY. TWOJE MAŁE PIEKŁO KONFIGURACJI.
Poniższe porady sš tylko fragmentaryczne. Więcej na temat konfiguracji kart 3D oraz ustawiania parametrów GLQuake'a znajdziesz na WWW pod adresami:

Obecnie dostępne sš dwa proste programy potrafišce ustawić parametry Monstera i samego GLQuake'a (ich działanie zastępuje ręczne konfiguracje):

Dla tych, którzy chcš samemu pobawić się ustawieniami lub nie majš dostępu do obu programów - dołšczam poniższe porady.

KONFIGUROWANIE KARTY
Do pliku AUTOEXEC.BAT dopisz linijki (poniższa konfiguracja dotyczy tylko i wyłšcznie kart opartych o chipset 3DFx VooDoo):

REM >>> karta 3DFx - ustawienia >>>
SET SST_SCREENREFRESH=60
SET FX_GLIDE_NO_SPLASH=1
SET SST_FASTMEM=1
SET SST_PCIRD=1
SET SST_FASTPCIRD=1
SET SST_SWAP_EN_WAIT_ON_VSYNC=0
SET FX_GLIDE_SWAPINTERVAL=0
SET SST_VIDEO_24BPP=1
SET SST_GAMMA=1.6
SET SST_GRXCLK=50

1. KONFIGURACJA GLQUAKE'a DLA ESTETY

Poniższa konfiguracja jest dobra dla każdego, kto chce jeszcze raz przejœć grę, ale doœwiadczajšc niezapomnianych wrażeń jakie daje GLQuake. Największš zaletš tej konfiguracji jest to, że GLQuake wyglšda najładniej. Wadš - mniejsza prędkoœć odtwarzania obrazów.
Do pliku AUTOEXEC.CFG (jeżeli takiego nie posiadasz, utwórz go w katalogu QUAKE\ID1\) dodaj linijki:

// GLQuake - ustawienia
gl_playermip 0
gl_flashblend 0
gl_polyblend 1
r_shadows 1
r_wateralpha 0.7
r_mirroralpha 0.3

2. KONFIGURACJA GLQUAKE'a DLA PRAWDZIWEGO GRACZA.
Konfiguracja umożliwia osišgnięcie prawie maksymalnych możliwoœci. Użyteczna wszędzie tam, gdzie iloœć fps jest jedynš miarš. Dobra dla każdego, kto gra po sieci (lokalnej lub w Internecie) w Quake'a lub QuakeWorld. Zaleta: szybkoœc. Wada mało „bajerów".
Do pliku AUTOEXEC.CFG dodaj linijki:

// GLQuake - ustawienia
r_shadows 0
r_wateralpha 1.0
r_novis 0
r_mirroralpha 1
gl_picmip 0
gl_playermip 4
gl_texturemode GL_LINEAR_MIPMAP_NEAREST
gl_flashblend 1
gl_polyblend 0
gl_ztrick 1
gl_keeptjunctions 0
gl_finish 0

Prostš metodš polepszenia osišgów GLQuake'a jest zmniejszenie rozdzielczoœci z 640x480 na 512x384. Różnica w wyglšdzie jest niewielka, a w zamian można liczyć nawet na 30-50% zwiększenie liczby fps. Wystarczy GLQuake'a uruchomić z parametrami -width 512 -height 384.
Np. glquake.exe -width 512 -height 384.

Jeżeli chcesz sprawdzić jakie masz osišgi GLQuake'a (i Quake'a w ogóle), zrób co następuje:

Jest to ogólnie przyjęta na œwiecie metoda uchodzšca za pomiar standardowy fps w Quake'u.

Dla porównania przytoczę moje domowe osišgi. Mój komputer ma procesor Intel P166 (2.5x66), płyta Asus T2P4, 16MB 60ns FPP RAM, Diamond Monster 3D Rev. B, GLIDE 2.4, driver 2.1, grxclk=50.

Rozdzielczoœć Konfiguracja 1. Konfiguracja 2. zwykły WinQuake
640x480 28.4 fps 32.6 fps 13.9 fps
512x384 39.8 fps 48.1 fps 17.8 fps

Producenci kart opartych na 3DFx przewidzieli jeszcze jednš metodę podnoszenia wydajnoœci: overclocking, kontrolowany przez zmiennš grxclk. Jednak dla różnych kart sš inne maksymalne wartoœci zalecane przez producentów. Np. dla Monstera zalecnš maksymalnš wartoœciš jest grxclk=57.

UWAGA: autor nie ponosi odpowiedzialnoœci za uszkodzenie karty 3D spowodowane przesadnym manipulowaniem parametrami kart (w szczególnoœci zmiennš grxclk)!

SŁOWNICZEK. (NIC Z TEGO NIE ROZUMIEM)
3D (3 dimensional) - trójwymiarowy. Termin używany głównie jako okreœlenie na trójwymiarowy œwiat tworzony przy pomocy komputera.

2D (2 dimensional) - dwuwymiarowy. Reszta - patrz wyżej.

akcelerator graficzny - układ elektroniczny na karcie graficznej, przejmujšcy od procesora całkowicie lub częœciowo obliczanie grafiki komputerowej.

anti-aliasing - wygładzanie postrzępionych krawędzi przy łšczeniu różnych tekstur za pomocš płynnych przejœć w kolorach

API (application programming interface) - sposób komunikacji programu i użytkownika.

bilinear filtering - wygładzanie tekstur, efektem jest pozbycie się widocznej pikselizacji.

chipset - zestaw układów elektronicznych, akcelerator może być jednym z jego elementów.

Direct3D - standard API firmy Microsoft do realizacji grafiki 3D na platformy MS Windows.

FPP (first person perspective) - potoczne okreœlenie na gry typu „strzelanki". gatunek zapoczštkował Wolfenstein 3D a spopularyzował Doom.

fps (frames per second) - iloœć klatek wyœwietlanych na sekundę. Miara, dzięki której można porównywać prędkoœć odtwarzania ruchomych obrazów na ekranie komputera. Za umownš granicę płynnoœci uważš się powszechnie 30 fps. dla porównania - obraz w kinie zmienia się 24 razy na sekundę (24 fps).

GLIDE - API opracowany przez firmę 3DFx, komunikujšcy karty oparte na chipsetach 3DFx z procedurami OpenGL w grach.

MIP mapping - skalowanie i zmiana rozdzielczoœci tekstur, w zależnoœci od odległoœci w jakiej się znajdujš (tekstury na pierwszym planie bedš większej rozdzielczoœci). Polepsza głębię ostroœci.

OpenGL (Open Graphics Library) - zestaw niezależnych systemowo bibliotek, zawierajšcy funkcje (procedury) pozwalajšce na tworzenie realistycznej grafiki 2D i 3D (rysowanie, cieniowanie, rendering, efekty oœwietleniowe, oblekanie obiektów teksturami itp.). opracowany przez firmę SGI (Silicon Graphics) pierwotnie dla wysokiej klasy UNIX'owych graficznych stacji roboczych.


ZDJĘCIA

Rys1 - GLQuake Hipnotic Mission Pack#1
Mission Pack #1, mapa Edge of Oblivion
Rys2 - GLQuake Hipnotic Mission Pack#1
Mission Pack #1, mapa Research Facility
Rys3 - GLQuake Hipnotic Mission Pack#1
Mission Pack #1, mapa Armagon's Lair
Rys1 - GLQuake Rogue Mission Pack#2
Mission Pack #2, mapa Blood Sacrifice
Rys2 - GLQuake Rogue Mission Pack#2
Mission Pack #2, mapa Division of Change
Rys3 - GLQuake Rogue Mission Pack#2
Mission Pack #2, mapa Course of Osiris

Podziękowania
Serdeczne podziękowania dla Adax'a (gracza z mojego rodzimego Krakowa), który wyjeżdżajšc na wakacje pożyczył mi swojego Monstera. Bez niego artykuł nigdy by nie powstał.

Dziękuję mojemu przyjacielowi Arturowi Handke za pomoc w opracowaniu częœci artykułu o VQuake'u oraz za pomoc i korektę merytorycznš dotyczšcš zagadnień grafiki 3D.

Uwagi
Większe rozdzielczoœci sš możliwe dopiero na profesjonalnym sprzęcie. 800x600 jest osišgalne na karcie 3DFx Obsidian Pro (12MB). Wyższe rozdzielczoœci to domena komputerów Silicon Graphics i pierwotnej wersji GLQuake'a - SGI Quake, który może wyœwietlać w rozdzielczoœci 1280x1024. Komputer zdolny przetworzyć takš iloœć grafiki kosztuje co najmniej 10000USD.