
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łanie
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 wywietlaniem 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 rozdzielczoci 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 kompatybilnociš na komputerach
różnych producentów - zarzucono prace nad nim. Główny programista
id Software, John Carmack, nie chciał wypucić 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
programici z Rendition, producenta akceleratora Verite 1000 do kart
graficznych 2D/3D. Bardzo szybko cztery inne firmy wypuciły karty na
nim oparte (Creative Labs 3DBlaster, Intergraph Reactor3D,
Sierra Screamin' 3D, Canopus Total 3D). Specjalnie dla tych kart
powstała w padzierniku 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 uprocił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
rozdzielczoci 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ć:
16-bitowy kolor (w przeciwieństwie do 8-bitowego w zwykłym Quake'u)
cienie wszystkich trójwymiarowych obiektów (postacie, bronie, zbroje, artyfakty) w czasie rzeczywistym (Rys. 1)
lustrzane, przezroczyste i półprzeroczyste powierzchnie (Rys. 2)
przeroczysta tafla wody (na specjalnie przygotowanych mapach) (Rys. 3)
teksturowanie powierzchni w czasie rzeczywistym
brak pikselizacji (Rys. 4)
polepszenie głębi ostroci i wrażenia perspektywy
| Quake 640x480 | GLQuake 640x480 |
![]() mapa Start. 16-bitowy kolor | ![]() polepszenie głębi ostroci i wrażenia perspektywy |
![]() mapa Start, witraż w hallu Easy | ![]() brak pikselizacji (bilinear filtering) |
![]() mapa Start, witraż w hallu Easy | ![]() lustrzane, przezroczyste i półprzezroczyste powierzchnie |
![]() mapa DM3 wersja TW (transparent water) | ![]() przezroczysta tafla wody |
![]() | ![]() |
![]() mapa Hipside firmy Ritual (dawniej Hipnotic) | ![]() cienie wszystkich trójwymiarowych obiektów |
Podsumowujšc: GLQuake w swojej maksymalnej rozdzielczoci 640x480
wyglšda dużo lepiej niż zwykły w 1024x768, a na dodatek łšczy to z
osišgami podobnymi do tych z rozdzielczoci 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 wydajnoci
operacji zmienno-przecinkowych. Oczywicie, 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 wywietlanie 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 przemyle 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). Ronie 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):
VooDooTweak (dla kart opartych na VooDoo)
GLQPlus (program manipulujšcy ustawieniami GLQuake'a)
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 dowiadczajš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żliwoci.
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: szybkoc. 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
rozdzielczoci 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:
uruchom GLQuake'a
wywołaj konsolę (klawisz ~)
napisz MAP
napisz VIEWSIZE 120
napisz TIMEDEMO DEMO2
poczekaj aż skończy się odtwarzać demo
zapisz wynik (iloć fps)
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 wydajnoci: overclocking, kontrolowany przez zmiennš grxclk. Jednak dla różnych kart sš inne maksymalne wartoci zalecane przez producentów. Np. dla Monstera zalecnš maksymalnš wartociš jest grxclk=57.
UWAGA: autor nie ponosi odpowiedzialnoci za uszkodzenie karty 3D
spowodowane przesadnym manipulowaniem parametrami kart (w szczególnoci
zmiennš grxclk)!
SŁOWNICZEK. (NIC Z TEGO NIE ROZUMIEM)
3D (3 dimensional) - trójwymiarowy. Termin używany głównie jako
okrelenie 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 okrelenie na gry typu
strzelanki". gatunek zapoczštkował Wolfenstein 3D a spopularyzował
Doom.
fps (frames per second) - iloć klatek wywietlanych na sekundę. Miara,
dzięki której można porównywać prędkoć odtwarzania ruchomych obrazów
na ekranie komputera. Za umownš granicę płynnoci 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 rozdzielczoci tekstur, w zależnoci
od odległoci w jakiej się znajdujš (tekstury na pierwszym planie bedš
większej rozdzielczoci). Polepsza głębię ostroci.
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 owietleniowe, oblekanie obiektów teksturami itp.). opracowany
przez firmę SGI (Silicon Graphics) pierwotnie dla wysokiej klasy UNIX'owych graficznych stacji roboczych.
ZDJĘCIA
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 rozdzielczoci sš możliwe dopiero na profesjonalnym
sprzęcie. 800x600 jest osišgalne na karcie 3DFx Obsidian Pro (12MB).
Wyższe rozdzielczoci to domena komputerów Silicon Graphics i pierwotnej
wersji GLQuake'a - SGI Quake, który może wywietlać w rozdzielczoci
1280x1024. Komputer zdolny przetworzyć takš iloć grafiki kosztuje co
najmniej 10000USD.