You are on page 1of 22

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Pereki programowania
gier. Vademecum
profesjonalisty. Tom 3
Autor: Dante Treglia
Tumaczenie: Rafa Joca
ISBN: 83-7361-111-8
Tytu oryginau: Game Programming Gems 3
Format: B5, stron: stron: 728+8 stron kolorowej wkadki
To ju trzecia cz Pereek programowania gier. Vademecum profesjonalisty,
wspaniaego zbioru opisw rozmaitych technik programistycznych uywanych przez
profesjonalnych programistw gier. Twrcy gier i oprogramowania graficznego z firm
takich jak Nintendo, ATI, Electronic Arts, Sony Computer Entertainment, Intel, Creative
Labs, NVidia, Microsoft, IBM czy Westwood Studios najlepsi z najlepszych
przedstawiaj swoje ulubione algorytmy i sztuczki pozwalajce tworzy gry
na wiatowym poziomie.
Dla pocztkujcych niniejsza ksika to prawdziwy przewodnik po wyzwaniach, ktrym
musz stawi czoo programici gier. Na kocu kadego rozdziau znajduje si
bibliografia, ktra pozwala rozszerzy wiadomoci o prezentowanym temacie.
Jeli jeste zaawansowanym programist, dziki tej ksice zaoszczdzisz mnstwo
czasu. Autorzy spdzili cae miesice wymylajc, piszc kod i ilustrujc wybrane
zagadnienie, wic nie musimy by ekspertami w danym temacie, aby go zrozumie.
Wicej czasu pozostanie na tworzenie wspaniaych funkcji dla wasnych gier.
Ksika podzielona jest na 6 czci:
Programowanie oglne
Matematyka
Sztuczna inteligencja
Grafika
Sie i gry dla wielu graczy
Dwik

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Jeli marzysz o karierze w przemyle gier komputerowych, musisz mie t ksik.


Informacje z pierwszej rki s zawsze najcenniejsze, a tylko takie informacje znajdziesz
w tej ksice.

5RKUVTGEK


  

 
    

Cz I 
 

 
 !
Rozdzia 1.1

"

  # !
Koncepcje harmonogramowania ........................................................................................48
Prosty system harmonogramowania ...................................................................................51
Zwikszanie zoonoci ......................................................................................................53
Podsumowanie....................................................................................................................55
Bibliografia .........................................................................................................................56

Rozdzia 1.2

 $ %&'
 (   
Etapy tworzenia gry............................................................................................................57
Projekt szkieletu gry ...........................................................................................................59
Implementacja szkieletu gry ...............................................................................................62
Kod rdowy .....................................................................................................................65
Bibliografia .........................................................................................................................67

Rozdzia 1.3

)$ %* +,
Uwaga .................................................................................................................................69
Sztuczka 1. zamiana wylicze na tekst..........................................................................70
Sztuczka 2. stae z reprezentacji binarnych w trakcie kompilacji .................................71
Sztuczka 3. stosowanie opisowych komentarzy w asercjach ........................................72
Sztuczka 4. asercje w trakcie kompilacji.......................................................................72
Sztuczka 5. okrelanie liczby elementw tablicy ..........................................................73
Sztuczka 6. Zamiana __LINE__ na tekst ......................................................................73
Sztuczka 7. zabezpieczenie si przed ptlami nieskoczonymi ....................................74
Sztuczka 8. niewielkie, wyspecjalizowane jzyki .........................................................75
Sztuczka 9. upraszczanie interfejsu klasy......................................................................76
Podsumowanie....................................................................................................................79
Bibliografia .........................................................................................................................79

Rozdzia 1.4

-
&'

'%
 $ .
 $ /
Modo i wiedza................................................................................................................81
Sedno sprawy......................................................................................................................82
Szczegy............................................................................................................................83

Pereki programowania gier. Vademecum profesjonalisty. Tom 3

Skrypty................................................................................................................................85
Sie .....................................................................................................................................85
Podsumowanie....................................................................................................................86
Bibliografia .........................................................................................................................86

Rozdzia 1.5

0
 $

1
(%&' 
'2'2 /
Korzystanie z rozwizania..................................................................................................88
Uchwyt................................................................................................................................88
Inteligentny wskanik.........................................................................................................89
Podsumowanie....................................................................................................................91
Bibliografia .........................................................................................................................91

Rozdzia 1.6

3$45 ,6
Przykad ..............................................................................................................................93
Podstawy alokatorw..........................................................................................................94
Wymagania stawiane alokatorowi......................................................................................94
Domylny obiekt alokatora.................................................................................................98
Pisanie wasnego alokatora.................................................................................................99
Sposoby wykorzystania ....................................................................................................100
Dane stanu alokatora.........................................................................................................101
Zalecenia...........................................................................................................................101
Szczegy implementacji ..................................................................................................102
Podsumowanie..................................................................................................................102
Bibliografia .......................................................................................................................102

Rozdzia 1.7

) 
  7 86
Dlaczego to jest takie trudne?...........................................................................................103
Klasa SAVEMGR.............................................................................................................104
Klasa SAVEOBJ...............................................................................................................104
Typy danych i rozszerzenia ..............................................................................................105
Przysanianie domylnych funkcji....................................................................................106
Prosty przykad .................................................................................................................106
Podsumowanie..................................................................................................................107

Rozdzia 1.8

 ' % '


'2$ 8,
Implementacja...................................................................................................................109
Komentarz do implementacji............................................................................................111
Podsumowanie..................................................................................................................113

Rozdzia 1.9

9(%& $'(

  '
'2 
Dlaczego warto powodowa zawieszenia programu? ......................................................115
Czy nasz program obsuguje wyjtki liczb zmiennoprzecinkowych?..............................116
Rodzaje wyjtkw ............................................................................................................116
Kod ...................................................................................................................................117
Usuwanie bdw powodujcych wyjtki zmiennoprzecinkowe .....................................118
Podsumowanie..................................................................................................................118

Rozdzia 1.10

: 
  % 
 '&%;<5 ,
Gra to obiekty ...................................................................................................................119
Klasy poruszaj si jak skay........................................................................................122
Wsppraca i iteracja ........................................................................................................124
Zagadnienia implementacyjne ..........................................................................................126
Podsumowanie..................................................................................................................127
Bibliografia .......................................................................................................................128

Spis treci

Rozdzia 1.11

;.' 
5 =>''  
 $ 
'2 ,
Lex ....................................................................................................................................130
Yacc ..................................................................................................................................130
Zalety i wady ....................................................................................................................131
Wsppraca Yacca z Leksem............................................................................................131
Pliki danych w podsystemach gry ....................................................................................131
Integracja Leksa i Yacca z eksporterami danych .............................................................133
Przykad ............................................................................................................................134
Podsumowanie..................................................................................................................137
Dostpno narzdzi Flex i Bison.....................................................................................137
Bibliografia .......................................................................................................................137

Rozdzia 1.12

4
  $
?  6,
Potencja rynku .................................................................................................................139
Najwaniejsze s podstawy ekran i wejcie ................................................................140
Zbiory znakw ..................................................................................................................143
Zagadnienia zwizane z projektem i interfejsem..............................................................145
Lokalizacja........................................................................................................................148
Planowanie i projektowanie..............................................................................................150
Testowanie........................................................................................................................151
Podsumowanie..................................................................................................................154
Bibliografia .......................................................................................................................154

Rozdzia 1.13

 %?' 
  %.
' ' 
$ 6@ 
Implementacja interfejsu uytkownika.............................................................................157
Okrelanie elementw interfejsu uytkownika.................................................................158
Zagadnienia zwizane z lokalizacj..................................................................................160
System wejcia..................................................................................................................161
Mysz i joystick..................................................................................................................162
Rola interfejsu uytkownika w walce z opnieniami..........................................................162
Podsumowanie..................................................................................................................163
Bibliografia .......................................................................................................................164

Rozdzia 1.14

@( 
$
A %
  +
Projektowanie menu koowego.........................................................................................165
Ewolucja i badania menu koowego .................................................................................166
Stosowanie menu koowego .............................................................................................167
Kierunek rozwoju .............................................................................................................172
Poznajmy miasto SimCity ................................................................................................172
ycie w domu z The Sims ................................................................................................172
Podsumowanie..................................................................................................................175
Bibliografia .......................................................................................................................176

Rozdzia 1.15

: 

 #(%&' 


'2 
Opisy zasad.......................................................................................................................177
Znacznik testowania .........................................................................................................178
Plik konfiguracyjny ..........................................................................................................179
Konfigurowalne znaczniki................................................................................................179
Dzienniki zdarze .............................................................................................................179
Sposb uycia ...................................................................................................................182
Podsumowanie..................................................................................................................183
Bibliografia .......................................................................................................................183

Pereki programowania gier. Vademecum profesjonalisty. Tom 3

Rozdzia 1.16

;

  /
Zarzdzanie informacj ....................................................................................................185
Hierarchia systemu ...........................................................................................................186
Interfejs dziennika ............................................................................................................189
Budowanie usugi dziennika.............................................................................................191
Podsumowanie..................................................................................................................194
Bibliografia .......................................................................................................................194

Rozdzia 1.17

" '2'
  $%&'%&' ,
Drzewo profilowania ........................................................................................................196
Sposb uycia ...................................................................................................................196
Implementacja...................................................................................................................199
Podsumowanie..................................................................................................................201
Bibliografia .......................................................................................................................201

Cz II 
 
 
 8
Rozdzia 2.1

( 
'%   $$ 

 $'(  $'2 8
Logarytm przy podstawie 2 dla liczb cakowitych ...........................................................207
Maski bitw i generatory liczb losowych.........................................................................208
Sposb dziaania funkcji...................................................................................................209
Bibliografia .......................................................................................................................209

Rozdzia 2.2


   '2


%   
Problem.............................................................................................................................211
Rozwizanie uamki wektorowe..................................................................................215
Korzystanie z uamkw wektorowych..............................................................................216
Zakresy wartoci...............................................................................................................217
Szczegy implementacji ..................................................................................................218
Podsumowanie..................................................................................................................220
Bibliografia .......................................................................................................................220

Rozdzia 2.3

3 '%
'%
 '
'2 
Pomiar bdu.....................................................................................................................221
Sinus i cosinus ..................................................................................................................222
Aproksymacja wielomianami ...........................................................................................229
Uwagi na temat zbienoci ...............................................................................................234
Podsumowanie..................................................................................................................235
Bibliografia .......................................................................................................................235

Rozdzia 2.4

:  % 

 6
Kwaterniony .....................................................................................................................237
Metoda trzech najmniejszych ...........................................................................................237
Metoda biegunowa............................................................................................................238
Implementacja...................................................................................................................239
Wydajno ........................................................................................................................240
Podsumowanie..................................................................................................................241
Podzikowania..................................................................................................................241
Bibliografia .......................................................................................................................241

Spis treci

Rozdzia 2.5

9
'


B0:C !6
Hierarchia koci ................................................................................................................243
Cykliczne dochodzenie do wsprzdnych.......................................................................244
Ograniczanie obrotu..........................................................................................................246
Wykonanie obrotu i zastosowanie ogranicze .................................................................246
Podsumowanie..................................................................................................................249
Bibliografia .......................................................................................................................249

Rozdzia 2.6

< $
 ? '&   
Podstawy automatw komrkowych................................................................................252
Drzewo semkowe............................................................................................................255
Fizyka praktyczna.............................................................................................................255
Model rdzenia przetwarzania............................................................................................256
Powietrze ..........................................................................................................................257
Woda.................................................................................................................................257
Przepyw ...........................................................................................................................258
Ciepo................................................................................................................................259
Ogie.................................................................................................................................261
Dynamiczna czstotliwo aktualizacji ............................................................................263
Podsumowanie..................................................................................................................264
Bibliografia .......................................................................................................................264

Rozdzia 2.7

'2' $'%'2
'
'2 +
Tarcie ................................................................................................................................267
Metody numeryczne .........................................................................................................271
Wzory dla przestrzeni trjwymiarowej ............................................................................276
Zagadnienia geometryczne ...............................................................................................277
Podsumowanie..................................................................................................................278
Bibliografia .......................................................................................................................278

Cz III  


 
 /
Rozdzia 3.1

9 $'%'
 '& '2
-* /6
Omwienie architektury systemu GoCap.........................................................................283
Nauka prowadzenia samochodu .......................................................................................285
Uczenie zasad ...................................................................................................................289
Podsumowanie..................................................................................................................291
Bibliografia .......................................................................................................................291

Rozdzia 3.2

D'%(A 
 



%
 ,6
Zacz od starego podejcia .............................................................................................294
By uzyska nowe ..............................................................................................................295
Dziel i rzd......................................................................................................................298
Przechodzenie przez ciek.............................................................................................302
Rozszerzenie zagadnienia.................................................................................................306
Podsumowanie..................................................................................................................307
Bibliografia .......................................................................................................................308

Rozdzia 3.3

3
#'
'2
%&'1


'% 68,
Czym jest automat stanw? ..............................................................................................309
Implementacja automatu stanw ......................................................................................311

Pereki programowania gier. Vademecum profesjonalisty. Tom 3

Implementacja klasa CFSM.........................................................................................313


Korzystanie z klasy CFSM ...............................................................................................316
Podsumowanie..................................................................................................................319
Bibliografia .......................................................................................................................319

Rozdzia 3.4

3
$ 
'24A 6
Obszary .............................................................................................................................321
Wielokty wypuke...........................................................................................................326
Sia pudeka od zapaek ....................................................................................................329
Punkty przycigania..........................................................................................................332
Przeprowadzanie analizy terenu .......................................................................................336
Podsumowanie..................................................................................................................336
Bibliografia .......................................................................................................................336

Rozdzia 3.5

 $
  #$
 
'
%
 $
'%E(  # 66
Wprowadzenie do systemu wyzwalania...........................................................................337
System wyzwalania dla obiektw.....................................................................................338
Definiowanie warunkw...................................................................................................338
czenie warunkw logik boolowsk.............................................................................339
Definiowanie odpowiedzi.................................................................................................340
Obliczanie wyzwolenia.....................................................................................................341
Pojedyncze strzay i czas przeadowania..........................................................................342
czenie wyzwalania z licznikami i znacznikami............................................................342
Systemy wyzwalania a jzyki skryptowe .........................................................................343
Ograniczenia .....................................................................................................................344
Podsumowanie..................................................................................................................345
Bibliografia .......................................................................................................................345

Rozdzia 3.6

)
%
 
%( %  
 %'
 
$ 3F 6!
A*, ale bardziej ryzykownie .............................................................................................348
Poprawianie niedoskonaej cieki ...................................................................................350
Czas wystawienia i modelowanie wroga..........................................................................351
Zagroenia nie s statyczne ..............................................................................................353
Poprawa uzyskiwanych cieek........................................................................................353
Wydajno ........................................................................................................................354
Wydajne testy widzialnoci i ostrzau ..............................................................................354
Rozszerzone koszta A*.....................................................................................................356
Program ASE ....................................................................................................................357
Podsumowanie..................................................................................................................357
Bibliografia .......................................................................................................................357

Rozdzia 3.7

( ($' #$ 


'%
'2 6,
Przeszkody dynamiczne i statyczne..................................................................................359
Siatki nawigacyjne............................................................................................................360
Portale ...............................................................................................................................360
Budowanie tablicy ............................................................................................................363
Pozostae zagadnienia dotyczce portali ..........................................................................365
Reprezentacja postaci .......................................................................................................365
Przeszkody dynamiczne....................................................................................................366
Poruszanie si midzy przeszkodami statycznymi i dynamicznymi ................................369
Dodatkowe uwagi dotyczce siatek nawigacyjnych.........................................................369
Podsumowanie..................................................................................................................370

Spis treci

Rozdzia 3.8

( &
%
  
 6
Ruch pod kontrol zderze ...............................................................................................371
Model zderzeniowy dla znajdowania drogi......................................................................372
Podejcie 1. Sztuczna inteligencja z tolerancj bdu ...........................................................372
Podejcie 2. Znajdowanie drogi w podzbiorze niezajtej przestrzeni ..............................375
Podejcie 3. Korzystanie ze znajdowania drogi w zderzeniach postaci ...........................377
Implementacja ruchu wzdu cieki................................................................................378
Podsumowanie..................................................................................................................380
Bibliografia .......................................................................................................................381

Cz IV    
 
 6/
Rozdzia 4.1

G$
'% &' # 4  $'
   6/,
Eliminacja pocze typu T ..............................................................................................390
Ponowna triangulacja........................................................................................................391
Implementacja...................................................................................................................392
Podsumowanie..................................................................................................................393

Rozdzia 4.2

( ($'

$
'2$ $?' 6,
Normalne dla dowolnych siatek .......................................................................................395
Normalne pl wysokoci ..................................................................................................396
Podsumowanie..................................................................................................................399
Kod rdowy ...................................................................................................................399
Bibliografia .......................................................................................................................399

Rozdzia 4.3

( 
$
$ !8
Definicje ...........................................................................................................................401
Podejcia tradycyjne .........................................................................................................402
Inne rozwizania...............................................................................................................402
Prostszy sposb.................................................................................................................402
Inne zalety.........................................................................................................................403
Jak dokadno uzyskujemy?..........................................................................................403
Podsumowanie..................................................................................................................403
Bibliografia .......................................................................................................................404

Rozdzia 4.4

(   


 

 !8
Problem widzialnoci........................................................................................................405
Algorytm PLP...................................................................................................................406
Algorytm cPLP .................................................................................................................407
Zalety algorytmw............................................................................................................408
Wyniki eksperymentw ....................................................................................................408
Podsumowanie..................................................................................................................409
Bibliografia .......................................................................................................................410

Rozdzia 4.5

4
 E $'%
 
   %&  !
Paski trjktw .................................................................................................................411
Tworzenie paskw trjktw............................................................................................413
Optymalizacja ...................................................................................................................416
Rendering..........................................................................................................................417
Paski trjktw przyjazne dla pamici podrcznej...........................................................417
Paski dla cigych poziomw szczegowoci .................................................................417
Podsumowanie..................................................................................................................418
Bibliografia .......................................................................................................................418

10

Pereki programowania gier. Vademecum profesjonalisty. Tom 3

Rozdzia 4.6

9($'
  $
'2( '

$.
'2  
'2 ! ,
Poprzednie algorytmy.......................................................................................................419
Algorytm...........................................................................................................................420
Algorytm optymalizacji ....................................................................................................421
Bibliografia .......................................................................................................................423

Rozdzia 4.7

  '2



'% ' !
Sposoby podziau..............................................................................................................425
Hierarchia koci i bufor akumulacji wierzchokw..........................................................430
Optymalizacje ...................................................................................................................431
czymy wszystko............................................................................................................433
Kod rdowy ...................................................................................................................435
Podsumowanie..................................................................................................................435
Bibliografia .......................................................................................................................435

Rozdzia 4.8

;
$
 '%?' !6
To.....................................................................................................................................437
Proste metody ...................................................................................................................438
Dodawanie koci...............................................................................................................438
Zmiana wag ......................................................................................................................439
czymy wszystko i przyspieszamy dziaanie .................................................................443
Podsumowanie..................................................................................................................445
Bibliografia .......................................................................................................................445

Rozdzia 4.9

 #  $'


 
 '& !!
Problem przejcie do dowolnego celu .........................................................................448
Problem pynne przejcie midzy animacjami ............................................................449
Rdze nowego rozwizania lokalne modyfikatory
z niezalenymi stosunkami przej.................................................................................451
Zastosowanie ruch do dowolnego celu........................................................................452
Modyfikatory przemieszczenia.........................................................................................453
Zastosowanie przejcia ................................................................................................454
Dodatkowe informacje......................................................................................................455
Podsumowanie..................................................................................................................455
Bibliografia .......................................................................................................................455

Rozdzia 4.10

: $ $


2  '2  !
Programowalny shader wierzchokw..............................................................................457
Kompilator........................................................................................................................459
Skadniki kompilatora.......................................................................................................460
Podsumowanie..................................................................................................................464
Podzikowania..................................................................................................................464
Bibliografia .......................................................................................................................464

Rozdzia 4.11


 ($$(  !+
Macierze ...........................................................................................................................467
Wierzchoki.......................................................................................................................468
Mapowanie UV.................................................................................................................468
Podsumowanie..................................................................................................................470

Rozdzia 4.12

' %  '


'2
'2  !
Przejcie do trzeciego wymiaru ........................................................................................472
Podsumowanie..................................................................................................................477
Bibliografia .......................................................................................................................477

Spis treci

Rozdzia 4.13

11

$'%
 '& 
$
'2 !,
Mapy normalnych.............................................................................................................479
Opis procesu .....................................................................................................................480
Przygotowanie danych......................................................................................................481
Rzucanie promieni ............................................................................................................481
Uzyskiwanie szczegw..................................................................................................483
Przetwarzanie kocowe ....................................................................................................483
Czsto spotykane problemy..............................................................................................484
Inne podejcie ...................................................................................................................485
Podsumowanie..................................................................................................................485
Podzikowania..................................................................................................................485
Bibliografia .......................................................................................................................486

Rozdzia 4.14

< 
'
E $'
? $
 
 !/
To.....................................................................................................................................487
Taksonomia rozwiza .....................................................................................................489
wiato soneczne kt horyzontu, elipsy cienia i wielomianowe mapy tekstur...........489
wiato z nieba aty i aproksymacja metod radiosity.................................................492
Animowane cienie chmur .................................................................................................493
Rozwizanie bazujce na sekwencjach wideo..................................................................495
Obiekty, ktre nie s terenem ...........................................................................................496
Podsumowanie..................................................................................................................496
Bibliografia .......................................................................................................................496

Rozdzia 4.15

< ? $
.%&'  ?'

'2 !,,
Fizyczne waciwoci map szeciennych .........................................................................499
Jak pobra dane z mapy szeciennej lub umieci je na niej............................................500
Rendering map szeciennych............................................................................................501
Kodowanie pokrywy chmur .............................................................................................502
Kodowanie wiate na mapie szeciennej.........................................................................504
Kodowanie wiate rozmytych na mapach szeciennych .................................................504
Kodowanie cyklu dnia i nocy na mapie szeciennej ........................................................505
Podsumowanie..................................................................................................................505
Bibliografia .......................................................................................................................506

Rozdzia 4.16

4 
  ' $
8
Parametry i procedury.......................................................................................................507
Skupiamy si na grach ......................................................................................................508
Akceleracja sprztowa ......................................................................................................511
Podsumowanie..................................................................................................................511
Podzikowania..................................................................................................................512
Bibliografia .......................................................................................................................513

Rozdzia 4.17

;
$
   
Tekstury proceduralne ......................................................................................................515
Inteligentne buforowanie tekstur ......................................................................................516
Model cze.....................................................................................................................516
Mapowanie warstw i przeksztacenia ...............................................................................516
rda i filtry warstw ........................................................................................................517
Metody czenia................................................................................................................518
Wartoci sterujce.............................................................................................................518
Tekstury dynamiczne........................................................................................................519
Skalowalno ....................................................................................................................519
czenie wykonywane w procesorze czy karcie graficznej? ...........................................520
Demo.................................................................................................................................521

12

Pereki programowania gier. Vademecum profesjonalisty. Tom 3

Podsumowanie..................................................................................................................522
Bibliografia .......................................................................................................................522

Rozdzia 4.18

4 %($'   $&
($'
'2? $
$  $ 6
Owietlenie z rozbyskiem dla pikseli bez korzystania z mapy szeciennej
w celu normalizacji (mapowanie n.h/h.h).......................................................................523
Wykadnik rozbysku dla pikseli na podstawie mapy (n.h)k ............................................525
Opalizacja przesunicia kolorw......................................................................................528
wiata punktowe z poprawnym zanikiem oparte na pikselach .......................................529
wiata kierunkowe i reflektory z poprawnym zanikiem oparte na pikselach .................530
Podsumowanie..................................................................................................................531
Bibliografia .......................................................................................................................531

Rozdzia 4.19


 
%&''
 

 $ '

 66
Modele cieniowania..........................................................................................................533
Model cieniowania bazujcy na mikrofasetach................................................................534
Cieniowanie NDF .............................................................................................................535
Mapowanie nierwnoci w NDF ......................................................................................537
Rozszerzenia .....................................................................................................................538
Podsumowanie..................................................................................................................538
Bibliografia .......................................................................................................................538

Cz V 
!  "  
 #$
 
 !6
Rozdzia 5.1

<
$'% 1
 #'24 !
Blokowanie klatek a blokowanie zdarze ........................................................................545
Synchronizacja czasu........................................................................................................549
Podsumowanie..................................................................................................................551
Bibliografia .......................................................................................................................552

Rozdzia 5.2

  '$ ' '  6


Inne protokoy...................................................................................................................553
Nasz protok....................................................................................................................555
Udoskonalanie ..................................................................................................................557
Uyteczne moduy ............................................................................................................559
Puapki w grze StarTopia..................................................................................................560
Przykadowa gra ...............................................................................................................562
Podsumowanie..................................................................................................................562
Bibliografia .......................................................................................................................562

Rozdzia 5.3

G$'
'2 $'%$ 

&$'(&' +6
Opis architektury ..............................................................................................................563
Klasy pomocnicze.............................................................................................................564
Klasy podstawowe ............................................................................................................567
Zarzdcy i fabryki.............................................................................................................570
czymy wszystko............................................................................................................572
Podsumowanie..................................................................................................................574
Bibliografia .......................................................................................................................574

Spis treci

Rozdzia 5.4

13

$$
    ''2 
Strategie zapewniajce gr w peni fair ............................................................................577
Projektowanie skalowalnych serwerw............................................................................579
Rozkad obcienia...........................................................................................................584
Optymalizacja ...................................................................................................................587
Podsumowanie..................................................................................................................590
Bibliografia .......................................................................................................................590

Rozdzia 5.5

 $'%(  (%&'
($
'2 ,
Istniejce rozwizania.......................................................................................................591
Przenono ......................................................................................................................593
Klasa Serializer.................................................................................................................594
Moliwe rozszerzenia i optymalizacje..............................................................................599
Dalsze rozszerzanie moliwoci .......................................................................................601
Podsumowanie..................................................................................................................602
Bibliografia .......................................................................................................................602

Rozdzia 5.6

   '

 +86
Standard IPSec..................................................................................................................603
Zaoenia...........................................................................................................................604
Zwizki bezpieczestwa ...................................................................................................604
Format pakietu ..................................................................................................................605
Wysyanie danych.............................................................................................................607
Otrzymywanie danych ......................................................................................................608
Przykadowa implementacja.............................................................................................610
Interfejs CryptoAPI ..........................................................................................................611
Wydajno ........................................................................................................................612
Bezpieczestwo ................................................................................................................613
Podsumowanie..................................................................................................................613
Bibliografia .......................................................................................................................613

Rozdzia 5.7

D $'%

 ' + 
Interfejs .............................................................................................................................615
Monitoring sieci................................................................................................................616
Symulacja pocze TCP..................................................................................................617
Symulacja pocze UDP .................................................................................................617
Symulacja przepustowoci komputera .............................................................................618
Podsumowanie..................................................................................................................618

Rozdzia 5.8

4
  $ $'

 @ '$/ + ,
Architektura systemu DirectPlay......................................................................................619
Transmisja danych ............................................................................................................620
Wywoania zwrotne ..........................................................................................................624
Wysyanie gosu za pomoc DirectPlay ...........................................................................627
rda informacji ..............................................................................................................629

Rozdzia 5.9

- ''2(   '2

  ?HI<'G
+6
Charakterystyka sieci........................................................................................................632
rodowisko Java Micro Edition........................................................................................633
Obsuga sieci w J2ME ......................................................................................................633
Ograniczenia protokou HTTP .........................................................................................635
Optymalizacja pakietw ...................................................................................................636

14

Pereki programowania gier. Vademecum profesjonalisty. Tom 3

Pobieranie obrazw z serwera ..........................................................................................637


Podsumowanie..................................................................................................................638
Bibliografia .......................................................................................................................639

Cz VI %& '($
 
 +!6
Rozdzia 6.1

:  %1 .'9J( +!


Kompresja psychoakustyczna...........................................................................................645
Sposoby stosowania kompresji.........................................................................................647
Przykady kodu korzystajcego z Ogg Vorbis..................................................................648
Podsumowanie..................................................................................................................651
Bibliografia .......................................................................................................................652

Rozdzia 6.2

4
  $'
? %  +6
Podstawowe koncepcje systemu dwiku trjwymiarowego...........................................653
Wydajne wykorzystanie systemu dwiku.......................................................................654
Implementacja...................................................................................................................656
Podsumowanie..................................................................................................................657
Materiay...........................................................................................................................657

Rozdzia 6.3

 %  ?'


 

 +,
Problem.............................................................................................................................659
Rozwizanie......................................................................................................................660
Implementacja...................................................................................................................663
Podsumowanie..................................................................................................................664
Bibliografia .......................................................................................................................664

Rozdzia 6.4

:
  $ 

  ++
Zasada dziaania filtrw cyfrowych..................................................................................665
Filtry IIR a filtry FIR ........................................................................................................666
Implementacja filtru dwukwadratowego ..........................................................................666
Permutacja zmiennych......................................................................................................667
Unikanie denormalizacji...................................................................................................668
Sterowanie filtrem ............................................................................................................668
Obliczanie wspczynnikw filtru....................................................................................668
Filtr dolnoprzepustowy.....................................................................................................669
Filtr grnoprzepustowy.....................................................................................................669
Filtr pasmowoprzepustowy...............................................................................................670
Szeregowe czenie filtrw...............................................................................................670
Rwnolege czenie filtrw .............................................................................................670
Oprogramowanie ..............................................................................................................670
Podsumowanie..................................................................................................................671
Bibliografia .......................................................................................................................671

Rozdzia 6.5

:
   
 $

$  %1    +6
Modelowanie gosu...........................................................................................................674
Symulacja programowa ....................................................................................................675
Zastpowanie strun gosowych.........................................................................................677
Sterowanie ponown syntez............................................................................................678
Zwikszenie gbi rozmwcy ...........................................................................................679
Kodowanie danych ...........................................................................................................680
Szybko ...........................................................................................................................680

Spis treci

15

Eksperymenty ...................................................................................................................681
Bibliografia .......................................................................................................................681

Rozdzia 6.6


 '2'
$.
'21  +/6
Algorytm przystawania liniowego....................................................................................683
Rodzaje szumu..................................................................................................................684
Przykady ..........................................................................................................................685
Generowanie odgosw deszczu.......................................................................................686
Podsumowanie..................................................................................................................689
Bibliografia .......................................................................................................................690

Rozdzia 6.7

 
 1'2'  ' +,
Moduowe przetwarzanie dwiku ...................................................................................691
Proceduralna generacja dwiku ......................................................................................692
System Sphinx MMOS .....................................................................................................692
Procesory ..........................................................................................................................693
Opis pliku drogi ................................................................................................................693
Zastosowania plikw drg dwiku .................................................................................695
Kod rdowy ...................................................................................................................698
Podsumowanie..................................................................................................................699
Bibliografia .......................................................................................................................699

%" $
)?K *@ 86
 8

Rozdzia 4.5


 



 
%CTN5/CTUJCNN+PVGN.CDU
Carl.S.Marshall@intel.com
Obecnie, gdy istniej wysokiej wydajnoci konsole do gier, paski trjktw s stosowane
coraz czciej do reprezentacji i renderingu geometrii. W tym rozdziale zajm si zagadnieniem generowania paskw trjktw z dowolnych modeli trjwymiarowych. Po omwieniu algorytmu paskw trjktw przedstawi zalety ich stosowania, a take bdy, ktre
mog pojawi si przy ich kreowaniu. Nastpnie zajm si sposobami ich przekazywania
do interfejsu programistycznego kart graficznych. Poza tym opisz i poddam konstruktywnej krytyce kilka innych algorytmw dotyczcych trjktw.


 
Pasek trjktw to cig trjktw poczonych ze sob. Poczenie trjktw umoliwia
buforowanie wierzchokw w karcie graficznej, a take ponowne wykorzystywanie wspdzielonych krawdzi trjkta. Rysunek 4.5.1 przedstawia prosty pasek trjktw ze wspdzielonymi krawdziami V2V3 i V3V4. Aby trjkt mg nalee do paska, musi mie t
sam grup wygadzania i materiau, co pozostae trjkty. Grupa wygadzania to grupa
trjktw posiadajcych t sam normaln dla wierzchokw, a grupa materiau to grupa
trjktw o takim samym owietleniu i waciwociach tekstury.


Paski trjktw s stosowane od duszego czasu. Wczeniej do funkcji karty graficznej
jawnie wysyao si pooenie, normaln i kolor kadego wierzchoka. Poniewa jednak dla
paskw trjktw nie musimy przesya wierzchokw, ktre si powtarzaj, zmniejszamy zapotrzebowanie na przepustowo magistrali. Teraz indeksowanie wierzchokw
zastpio wczeniejszy proces i stao si podstawow metod przekazywania wieloktw
do karty graficznej. [Marselas00] sugeruje, e korzystanie z paskw trjktw i indeksowania wierzchokw umoliwia uzyskanie stosunku wierzchoek-trjkt wynoszcego
prawie 1:1. W ten sposb znacznie redukuje si ilo danych.

412

Cz IV  Grafika




(A) Prosty pasek trjktw z wspdzielonymi krawdziami V2V3 i V3V4.
(B) Kolejno trjktw w pasku. Wierzchoki numerowane s naprzemiennie zgodnie z ruchem
wskazwek zegara i przeciwnie do niego



Paski trjktw bdziemy generowa z myl o czterech celach:


Aby zminimalizowa liczb paskw trjktw.



Aby zminimalizowa liczb powtarzajcych si wierzchokw.



Aby zminimalizowa liczb trjktw swobodnych.



Aby zmaksymalizowa wydajno buforowania wierzchokw.

Przedstawione cele zazwyczaj s ze sob sprzeczne. Na przykad bardzo trudno jest wygenerowa bardzo dugi pasek trjktw przyjazny dla buforu bez powtarzania znacznej
liczby wierzchokw. Czasem warto pozostawi niektre trjkty samym sobie, zamiast
stara si za wszelk cen doczy je do paska, bo bdzie to rozwizanie bardziej wydajne.

Rozdzia 4.5  Tworzenie, optymalizacja i rendering paskw trjktw

413

 
Korzystanie z paskw trjktw zamiast niezalenych trjktw umoliwia redukcj
zbdnych wierzchokw i ich indeksw. W zalenoci od sposobu traktowania paskw trjktw przez sprzt, moemy zaoszczdzi na danych wierzchokw, owietleniu i przeksztaceniach. Poza tym paski zdecydowanie bardziej efektywnie wykorzystuj buforowanie wierzchokw na karcie graficznej.



 
Istnieje kilka opracowanych przez naukowcw algorytmw tworzenia paskw trjktw
i oczywicie kady z nich ma swoje zalety i wady, jeli chodzi o znajdowanie optymalnych paskw. [Evans96a] uywa siatki bazujcej na czworoktach, aby zoptymalizowa
paski wewntrz at, natomiast [Hoppe99] stosuje podejcie przyjazne dla buforw wierzchokw karty graficznej. Rozwizanie, ktrym si zajm, optymalizuje dugo paska
trjktw, aby zlikwidowa narzut powodowany przez interfejs programistyczny grafiki.
Poniewa niemoliwe jest osignicie idealnego paska trjktw dla kadej siatki, naley
wymyli algorytm znajdowania najbardziej optymalnych paskw dla danego zestawu
danych. Zastosowany algorytm generuje paski o jak najwikszej dugoci dla dowolnego
modelu trjwymiarowego zoonego z wieloktw. Generowanie paskw moe si odbywa w aplikacji do kreowania modeli trjwymiarowych lub stanowi osobne narzdzie.
Naszym celem jest uzyskanie dugich paskw, a nastpnie zapisanie ich w formacie uatwiajcym ich rendering. Kolorowa wkadka 5. przedstawia przykadowy obraz dwch
modeli po przeprowadzeniu podziau na paski trjktw.

 
Zanim przejdziemy do algorytmu tworzenia paskw trjktw, musimy zdefiniowa kilka
terminw. Aktywna krawd to krawd trjkta wewntrz paska, do ktrej dodawane
s nowe trjkty. Znajduje si ona midzy drugim a trzecim wierzchokiem ostatniego
dodanego paska trjktw. Pogrubiona krawd z rysunku 4.5.2a przedstawia aktywn
krawd, DE, do ktrej zostanie dodany trjkt z wierzchokiem F. Zamiana uywana
jest wtedy, gdy aktywna krawd nie jest wyrwnana z ssiednim trjktem dodawanym
do paska. Rysunek 4.5.2b przedstawia sytuacj, w ktrej aktywn krawdzi jest DE,
ale nastpny trjkt jest dodawany do krawdzi CE. Aby doda nowy trjkt, wierzchoek
C musi zosta powtrzony, a nastpnie zamieniony z wierzchokiem E. W ten sposb
zachowamy przemienno kierunku zgodnie i przeciwnie do ruchu wskazwek zegara.
Ostatni termin, ktry zdefiniujemy, to obrcenie. Stosujemy go, gdy duplikujemy i zamieniamy dwa wierzchoki, aby doda nowy (patrz rysunek 4.5.2c).

    


Etap przygotowa dotyczy utworzenia metryki pozwalajcej wykona paski trjktw
odpowiedniej jakoci.

414

Cz IV  Grafika





Rne sposoby dodawania trjktw


do paska.
(A) Pasek z indeksem wierzchokw
w kolejnoci ABCDE i aktywn
krawdzi DE. Poniewa aktywna
krawd dotyka nowego trjkta,
dodajemy po prostu wierzchoek F
na kocu paska. Nowy pasek skada
si teraz z wierzchokw ABCDEF.
(B) Pasek z indeksem wierzchokw
w kolejnoci ABCDE i aktywn
krawdzi DE. Aby doda wierzchoek
F, musimy zduplikowa C i zamieni
z E, poniewa nowy trjkt nie styka
si z aktywn krawdzi. Nowy pasek
skada si teraz z wierzchokw
ABCDCEF.
(C) Przypadek, w ktrym zmieniamy
kolejno pierwszej powierzchni,
by dopasowa j do drugiego
trjkta jest istotny, jeli chcemy
zminimalizowa powtarzanie si
wierzchokw. Jeli pasek trjktw
zacz si jako CAB, musielibymy
powtrzy B i C, aby doda
wierzchoek D. Nowy pasek skada
si z wierzchokw CABBCD.
Jeli aktywna krawd nie styka si
z nowym trjktem, musimy powtrzy
dwa wierzchoki









Znajdujemy trjkt o najmniejszym polu. Nazwiemy go trjktem pocztku. Aby


unikn sabego rozplanowania paskw, powinnimy znale 10 najmniejszych
trjktw siatki i spord nich wybra najbardziej dogodny do rozpoczcia oblicze.



Wybieramy wierzchoek trjkta pocztku lub obliczamy jego rodek, ktry stanie
si pierwszym wierzchokiem dla algorytmu paskw trjktw.



Tworzymy rodki wszystkich trjktw. Moemy to atwo wykona, uredniajc


trzy wierzchoki kadego trjkta (patrz rwnanie 4.5.1). C jest pooeniem rodka,
a V1, V2 i V3 to pooenia wierzchokw trjkta.



Dla kadego trjkta obliczamy i przechowujemy odlego midzy wierzchokiem


pocztku i rodkiem.
C = (V1+V2+V3)/3,0

(4.5.1)

Rozdzia 4.5  Tworzenie, optymalizacja i rendering paskw trjktw

415


  
Po realizacji etapu przygotowa moemy rozpocz generowanie paskw trjktw. Po
dodaniu trjkta siatki do paska oznaczamy taki trjkt jako wykorzystany.


Zaznaczamy poprawny trjkt. Bdzie to pierwszy trjkt paska.



Jeli trjkt ma ssiadw, wybieramy spord nich ten o najmniejszej odlegoci


i czynimy go aktualnym trjktem. W przeciwnym razie koczymy tworzenie
paska i przechodzimy do kroku 6.



Zmieniamy kolejno wierzchokw pierwszego trjkta w taki sposb, aby


dopasowa aktywn krawd do drugiego trjkta. Drugiego trjkta powinna
dotyka krawd uzyskiwana midzy drugim i trzecim wierzchokiem.



Pobieramy ssiada aktualnego trjkta, znajdujc najbliszego ssiada, ktrego


odlego zostaa policzona w kroku 4. etapu przygotowa. Jeli trjkt nie jest
wyrwnany do aktywnej krawdzi, musimy dokona wstawienia wierzchoka
i zamiany, aby kontynuowa pasek (patrz rysunek 4.5.2c).



Przechodzimy do kroku 2.



Sprawdzamy, czy pozostay jeszcze jakie trjkty niezwizane z adnym paskiem.


Jeli tak, przechodzimy do kroku 1.

Pseudokod wysokiego poziomu dla algorytmu paskw przedstawia listing 4.5.1.





Pseudokod wysokiego poziomu dla algorytmu tworzenia paskw trjktw
 


  
   
   
 !  "#$ % ! 

&' & #(! 

)   *+ 
' 
&' , #!(!  - ! 

  
!$.    

 / ' 0 + 
   1*2
& !  $

& !$
3 * ''
4

Po zakoczeniu algorytmu tworzenia uzyskujemy N paskw trjktw. Kady z paskw


naley do tej samej grupy wygadzania i ma ten sam identyfikator materiau. Po umieszczeniu paskw w pamici moemy je zapisa w formacie wymaganym przez gr.

416

Cz IV  Grafika

     


W drugim przebiegu analizujemy paski, by sprawdzi, czy ktre z punktw tworzcych
jeden pasek mog zosta poczone z innym paskiem. Analiz zaczynamy od okrelenia
wszystkich krawdzi pocztkowych i kocowych kadego paska trjktw, a take indeksw powierzchni zwizanych z kad z nich. Nastpnie dokonujemy porwnania tych
krawdzi z takimi samymi krawdziami innych paskw. Jeli znajdziemy dopasowanie,
wtedy dwa paski trjktw s analizowane, by dokona poczenia (patrz rysunek 4.5.2).
W wikszoci sytuacji w trakcie poczenia bdziemy musieli powtrzy niektre wierzchoki. Najprostszy przypadek ma miejsce wtedy, gdy znajdziemy dopasowanie paska
do pojedynczego trjkta. W wikszoci sytuacji moemy tak zmieni kolejno wierzchokw, by doda ten trjkt do paska.

 
Poniewa paski trjktw tworzymy po to, by zwikszy wydajno, optymalizacja to
kluczowy element algorytmu generowania paskw. Optymalizacj mona przeprowadzi
na kilku etapach procesu tworzenia paskw trjktw podczas pocztkowego przetwarzania, generowania i wykorzystywania w czasie rzeczywistym.

    


 Tworzymy siatki z tylko kilkoma grupami wygadzania (wicej ni jedna normalna

na wierzchoek).
 Ograniczamy liczb grup materiaw dla modelu.
 Optymalizujemy model w taki sposb, by powierzchnie wieloktw nie miay

naprzemiennie uoonych grup materiaw lub wygadzania, poniewa ograniczyoby


to dugo paskw trjktw.
 Sortujemy paski wzgldem grup materiaw przed ich przekazaniem do karty

graficznej.
 Eliminujemy wszystkie niepotrzebne powierzchnie. Taka powierzchnia istnieje,

gdy dwa (lub wicej) z trzech pooe wierzchokw s rwnowane. Moe to


powodowa bdy w renderingu, gdy bd stosowane paski.

!  
 Osobne trjkty umieszczamy w jednym poindeksowanym buforze.
 Staramy si poczy paski, ktrych trjkty pocztku i koca znajduj

si obok siebie.
 Powinnimy zna rozmiar pamici podrcznej sprztu, by odpowiednio

j wykorzysta.

Rozdzia 4.5  Tworzenie, optymalizacja i rendering paskw trjktw

417

"  #
 Uywamy wywoa interfejsu dotyczcych poindeksowanej tablicy zamiast

wywoa dotyczcych kolejnych wierzchokw.


 Redukujemy zmiany stanw i dynamicznych wsprzdnych tekstur.


Wikszo interfejsw programistycznych kart graficznych obsuguje paski trjktw.
Istnieje kilka formatw, w jakich moemy przesya paski do karty graficznej. Jeden z nich
wymaga wysania danych wierzchoka dla kadego wierzchoka paska. Jest to bardzo
kosztowne, poniewa wiele wierzchokw jest zduplikowanych z racji wspdzielonych
krawdzi wewntrz paska. Inny format wykorzystuje przesyanie paskw w postaci indeksw. Oznacza to, e najpierw przekazujemy dane wierzchokw dla danego fragmentu
wraz z indeksami, a nastpnie korzystamy ju tylko z indeksw. Problem polega na tym,
e w wikszoci kart graficznych w jednym wywoaniu funkcji moemy okreli tylko
jeden trjkt. Niektre systemy umoliwiaj jednak przekazanie caych paskw w jednym wywoaniu, jeli stosuje si dodatkowe wierzchoki. W [Neider99] i [Microsoft00]
znajduj si listy funkcji, z ktrych naley korzysta w przypadku paskw trjktw.
Biblioteka OpenGL wykorzystuje typ  
 , a biblioteka Direct3D firmy
Microsoft typ 
 .


 
 



Inne algorytmy tworzenia paskw trjktw staraj si by przyjazne dla pamici podrcznej, ograniczajc chybienia w buforze wierzchokw karty graficznej [Hoppe99]. [Nvidia00]
stosuje specjalny schemat rozkadu wierzchokw, ktry wykonuje si po utworzeniu
paskw trjktw. Zalet tego podejcia jest to, e moemy zoptymalizowa trjkty
w sposb korzystny dla karty graficznej. Oczywicie rozwizanie to ma take wad
optymalizacja bdzie dotyczya danego rodzaju kart graficznych i moe da efekt odwrotny
od zamierzonego w przypadku innych kart.



 


Tworzenie paskw trjktw dla siatek o cigym poziomie szczegowoci nie jest proste.
Usunicie jednego wierzchoka lub powierzchni z siatki moe mie znaczny wpyw na
paski, jeli byy tworzone dla siatki o wysokiej rozdzielczoci. Istnieje kilka sposobw
rozwizania tego problemu. Pierwszy polega na wygenerowaniu paskw dla kadej
rozdzielczoci modelu. Jest to bardzo niepraktyczne i moe znacznie zwikszy zapotrzebowanie na pami. Drugie rozwizanie to tworzenie paskw w locie i przechowywanie ich w pamici a do zmiany rozdzielczoci siatki. Wybieramy drugi sposb
i stawiamy jeden warunek: trjkty mog by dodawane tylko do ssiadw aktywnej
krawdzi lub moliwa jest zamiana. Jeli nie istniej ssiedzi, koczymy pasek. Musimy
tak zoptymalizowa struktur danych, by mc szybko wyszukiwa i sprawdza ssiadw.

418

Cz IV  Grafika

Zalet tego rozwizania jest moliwo stosowania paskw dla siatek generowanych
dynamicznie niestety zwikszy to zapotrzebowanie na pami.

 
W tym rozdziale przedstawiem, jak tworzy i optymalizowa paski trjktw dla gier. Gdy
zamierzamy renderowa siatki, paski zapewniaj zwikszenie szybkoci w porwnaniu
z przekazywaniem zwykych list trjktw. Zachcam do sprawdzenia wersji oryginalnej
i z paskami, aby samemu przekona si o wystpujcych midzy nimi rnicach.

!"#
[Evans96a] Evans Francine, Steven Skiena i Amitabh Varshney: Optimizing Triangle Strips for
Fast Rendering, Visualization 96 Proceedings, IEEE, 1996, strony 319 326.
[Evans96b] Evans Francine, Steven Skiena i Amitabh Varshney: Completing Sequential Triangulations Is Hard, sprawozdanie techniczne, Department of Computer Science, State University
of New York at Stony Brook, 1996.
[Hoppe99] Hoppe Hughes: Optimization of Mesh Locality for Transparent Vertex Caching,
Computer Graphics Proceedings, SIGGRAPH 1999, strony 269 276.
[Isenburg00] Isenburg Martin: Triangle Strip Compression, Graphics Interface, strony 197 204,
2000.
[Marselas02] Marselas Herb: Optymalizacja dostarczania wierzchokw w OpenGL, Pereki
programowania gier. Vademecum profesjonalisty. Tom 1, Wydawnictwo Helion, 2002.
[Microsoft00] Microsoft DirectX 8.0 Software Development Kit, dostpne pod adresem http://www.
msdn.microsoft.com/downloads, 2000.
[Neider99] Neider Jackie i inni: OpenGL Programming Guide, Version 1.2, Addison Wesley, 1999.
[Nvidia00] Nvidia NvTriStrip v1.1., dostpne pod adresem http://developer.nvidia.com/view.asp?IO=
nvtristrip_v1_1, 2000.