Perelki_programowania_gier_Vademecum_profesjonalisty_Tom_6_ppgvp6.pdf

(420 KB) Pobierz
Pere³ki programowania gier.
Vademecum profesjonalisty.
Tom 6
Autor: Mike Dickheiser
T³umaczenie: Andrzej Gra¿yñski (wstêp, czêœci I-III,
VI-VII); Miko³aj Szczepaniak (czêœci IV-V)
ISBN: 978-83-246-1087-7
Tytu³ orygina³u:
Game Programming
Gems 6 (Book & CD-ROM)
Format: B5, stron: oko³o 700
oprawa twarda
Zawiera CD-ROM
Wyczerpuj¹cy przegl¹d nowoczesnych technik tworzenia gier komputerowych
Zaawansowane algorytmy sztucznej inteligencji
Realistyczne odwzorowywanie zjawisk fizycznych, efektów dŸwiêkowych i oœwietlenia
Jêzyki skryptowe i sterowanie danymi
Techniki zabezpieczania gier w wersji beta
Przemys³ gier komputerowych jest jedn¹ z najszybciej rozwijaj¹cych siê bran¿ informatyki. Gry,
które jeszcze niedawno zapiera³y dech w piersiach, dziœ wydaj¹ siê proste i ma³o realistyczne.
Wspó³czesne symulatory i
„strzelanki”
to arcydzie³a, których produkcja anga¿uje œrodki
porównywalne z bud¿etami hollywoodzkich superprodukcji. Rosn¹ce w ogromnym tempie
mo¿liwoœci komputerów i konsoli wp³ywaj¹ jednak nie tylko na jakoœæ gier, ale tak¿e na proces ich
tworzenia i wykorzystywane podczas niego narzêdzia. Programiœci tworz¹cy gry implementuj¹
zaawansowane algorytmy sztucznej inteligencji, wykorzystuj¹ niezwyk³e mo¿liwoœci uk³adów
wyœwietlaj¹cych grafikê i skomplikowany aparat matematyczny.
Ksi¹¿ka
Pere³ki programowania gier. Vademecum profesjonalisty. Tom 6” to doskona³e
kompendium wiedzy dla wszystkich, którzy tworz¹ gry komputerowe lub zamierzaj¹ to robiæ.
W ka¿dym rozdziale, napisanym przez cenionego eksperta z tej bran¿y, znajdziesz niezbêdne
informacje dotycz¹ce ró¿nych aspektów pisania gier. Przeczytasz o sztucznej inteligencji,
symulacji zjawisk fizycznych oraz odwzorowywaniu oœwietlenia i dŸwiêków. Poznasz nowoczesne
techniki programowania wspó³bie¿nego, optymalizacji kodu pod k¹tem maszyn
wieloprocesorowych, stosowania jêzyków skryptowych i wykorzystywania mo¿liwoœci procesorów
graficznych.
Programowanie pod k¹tem procesorów wielordzeniowych
Siatkowa reprezentacja obiektów gry
Testowanie pojedynczych modu³ów gry
Optymalizacja korzystania z zasobów
Rachunek wektorowy i macierzowy
Symulacja zachowania cieczy
Tworzenie algorytmów sztucznej inteligencji
Korzystanie z regu³ logiki rozmytej
Programowanie skryptowe w jêzykach Lua i Python
Optymalizacja wyœwietlania obiektów gry
Wykorzystywanie mo¿liwoœci procesorów graficznych
Generowanie efektów dŸwiêkowych w czasie rzeczywistym
Tworzenie gier sieciowych
Przeczytaj i stwórz grê, w któr¹ zagraj¹ miliony graczy
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treści
Przedmowa ........................................................................................ 13
Wstęp ................................................................................................. 17
O obrazku z okładki ......................................................................... 23
Biografie autorów ............................................................................. 25
Część I Programowanie w ogólności ............................................... 43
Wprowadzenie .................................................................................. 45
Rozdział 1.1
Algorytmy nieblokujące .................................................................. 47
„Porównaj i zamień” oraz inne prymitywy uniwersalne ............................................... 48
Parametryzowany stos nieblokujący .............................................................................. 50
Parametryzowana kolejka nieblokująca ......................................................................... 54
Nieblokująca parametryzowana lista wolnych bloków pamięci .................................... 57
Konkluzja ....................................................................................................................... 58
Literatura cytowana ....................................................................................................... 59
Zasoby ............................................................................................................................ 60
Rozdział 1.2
Wykorzystanie możliwości procesorów wielordzeniowych
przy użyciu OpenMP ........................................................................ 61
Przykład: system cząstek ............................................................................................... 62
Korzyści ......................................................................................................................... 62
Wydajność ..................................................................................................................... 63
Przykład: wykrywanie kolizji ........................................................................................ 64
Zespoły wątkowe ........................................................................................................... 65
Zrównoleglanie wykonywania funkcji .......................................................................... 65
Tak, ale… ...................................................................................................................... 67
Konkluzja ....................................................................................................................... 68
Literatura cytowana ....................................................................................................... 68
Zasoby ............................................................................................................................ 68
Rozdział 1.3
Widzenie komputerowe w grach
— programowanie z użyciem biblioteki OpenCV ........................ 69
Komputerowe widzenie w grach ................................................................................... 69
Biblioteka Open Computer Vision ................................................................................ 70
Przykład zastosowania ................................................................................................... 70
Co dalej? ........................................................................................................................ 79
Literatura cytowana ....................................................................................................... 79
4
Perełki programowania gier. Vademecum profesjonalisty. Tom 6
Rozdział 1.4
Siatkowa rejestracja obiektów gry ................................................. 81
Drzewa czwórkowe i ósemkowe ................................................................................... 82
Organizacja obiektów .................................................................................................... 84
Konkluzja ....................................................................................................................... 88
Literatura cytowana ....................................................................................................... 88
Rozdział 1.5
Techniki BSP ....................................................................................... 89
Czym jest BSP? Dlaczego BSP? ................................................................................... 89
Węzłowe BSP ................................................................................................................ 90
Renderowanie obiektów w węzłowym wariancie BSP ................................................. 93
Bezpodziałowy wariant węzłowego BSP ...................................................................... 94
Liściaste BSP i regiony wypukłe ................................................................................... 95
Generowanie portali między regionami wypukłymi ..................................................... 98
Generowanie zbiorów PVS .......................................................................................... 100
Kompresja wektora widzialności ................................................................................. 105
Obiekty krajobrazu w drzewie BSP ............................................................................. 107
Konkluzja ..................................................................................................................... 108
Literatura cytowana ..................................................................................................... 108
Rozdział 1.6
Dopasowywanie łańcuchów ......................................................... 109
Wyszukiwanie opierające się na identyfikatorach tekstowych .................................... 109
No to mamy problem… ............................................................................................... 110
Kilka znanych rozwiązań ............................................................................................. 110
Nasze rozwiązanie ....................................................................................................... 111
Zastosowanie rozwiązania ........................................................................................... 116
Konkluzja ..................................................................................................................... 117
Literatura cytowana ..................................................................................................... 117
Rozdział 1.7
Implementacja testowania modułów na bazie CppUnit ........... 119
Ogólnie o testowaniu modułów ................................................................................... 119
Ogólnie o pakiecie CppUnit ........................................................................................ 120
Uruchamianie klas mocujących ................................................................................... 122
Wykorzystanie pakietu CppUnit do testowania klasy zarządzającej modelami .......... 123
Testowanie modułowe funkcji prywatnych ................................................................. 129
Wykorzystywanie CppUnit do testowania niskopoziomowej funkcjonalności .......... 129
Konkluzja ..................................................................................................................... 134
Literatura cytowana ..................................................................................................... 134
Rozdział 1.8
Fingerprinting jako metoda ochrony wersji pre-release aplikacji ...135
Zniechęcanie ................................................................................................................ 135
Znaki wodne i odciski palców ..................................................................................... 136
Wykonywanie znakowania .......................................................................................... 137
Bezpieczeństwo gwarantowane przez znakowanie ..................................................... 137
Strategie znakowania ................................................................................................... 137
Atak porównawczy ...................................................................................................... 140
Konkluzja ..................................................................................................................... 140
Literatura cytowana ..................................................................................................... 141
Rozdział 1.9
Przyspieszanie ładowania zasobów
na podstawie statystyki korzystania z nich .................................. 143
Sformułowanie problemu ............................................................................................ 143
Optymalizowanie kolejności zasobów ........................................................................ 145
Czynniki wpływające na wynik pomiaru .................................................................... 146
Potencjalne zagrożenia ................................................................................................ 147
Powszechne praktyki optymalizacyjne ........................................................................ 147
Spis treści
5
Konkluzja ..................................................................................................................... 148
Literatura cytowana ..................................................................................................... 148
Rozdział 1.10
Pozostań w grze:
podmiana modyfikowanych zasobów „na gorąco” ................. 149
Jak to działa? ................................................................................................................ 149
Anatomia procesu ........................................................................................................ 151
Uwarunkowania praktyczne ........................................................................................ 155
Przykładowy program .................................................................................................. 156
Konkluzja ..................................................................................................................... 156
Literatura uzupełniająca ............................................................................................... 156
Część II Matematyka i fizyka .......................................................... 157
Wprowadzenie ................................................................................ 159
Rozdział 2.1
Osobliwości arytmetyki zmiennopozycyjnej ............................... 161
Format reprezentacji zmiennopozycyjnej .................................................................... 162
Projektowanie programów i funkcji ............................................................................ 167
Konkluzja ..................................................................................................................... 179
Literatura cytowana ..................................................................................................... 180
Rozdział 2.2
Obliczenia w przestrzeniach rzutowych
z użyciem współrzędnych jednorodnych .................................... 181
Podstawy matematyczne .............................................................................................. 182
Obliczenia z użyciem współrzędnych jednorodnych ................................................... 184
Przecinanie linii z obiektami ....................................................................................... 187
Konkluzja ..................................................................................................................... 189
Dodatek A .................................................................................................................... 190
Dodatek B .................................................................................................................... 190
Podziękowania ............................................................................................................. 191
Literatura cytowana ..................................................................................................... 191
Rozdział 2.3
Zastosowanie iloczynu wektorowego
do rozwiązywania układów równań liniowych ........................... 193
Wprowadzenie ............................................................................................................. 193
Linie proste .................................................................................................................. 196
Efektywna interpolacja bilinearna ............................................................................... 198
Rozwiązywanie układu równań z trzema niewiadomymi ........................................... 201
Konkluzja ..................................................................................................................... 203
Podziękowania ............................................................................................................. 203
Literatura cytowana i zalecana .................................................................................... 203
Rozdział 2.4
Indeksowanie sekwencyjne w programowaniu gier ................. 205
Terminologia ................................................................................................................ 205
Sekwencje .................................................................................................................... 206
Sekwencje dziedzinowe ............................................................................................... 207
Sekwencje permutacyjne ............................................................................................. 210
Sekwencje kombinacyjne ............................................................................................ 214
Konkluzja ..................................................................................................................... 217
Literatura cytowana ..................................................................................................... 218
Rozdział 2.5
Pływalność brył wielościennych ................................................... 219
Pływalność ................................................................................................................... 220
Pole wielokąta .............................................................................................................. 221
6
Perełki programowania gier. Vademecum profesjonalisty. Tom 6
Objętość wielościanu ................................................................................................... 223
Częściowe zanurzenie .................................................................................................. 224
Dokładność obliczeń .................................................................................................... 227
Siły oporu ..................................................................................................................... 229
Kod źródłowy .............................................................................................................. 230
Konkluzja ..................................................................................................................... 230
Podziękowanie ............................................................................................................. 230
Literatura cytowana ..................................................................................................... 231
Rozdział 2.6
Cząsteczkowa symulacja w czasie rzeczywistym
oddziaływania cieczy z bryłami sztywnymi ................................. 233
Symulacja przepływów cieczy a SPH ......................................................................... 233
Rozszerzenie metody SPH na oddziaływania cieczy z bryłami sztywnymi ................ 238
Oddziaływanie z obiektami dynamicznymi — krokowa aktualizacja własności cząstek ...242
Szczegóły implementacji ............................................................................................. 243
Optymalizacje .............................................................................................................. 247
Konkluzja ..................................................................................................................... 248
Literatura cytowana ..................................................................................................... 248
Część III Sztuczna inteligencja ........................................................ 249
Wprowadzenie ................................................................................ 251
Rozdział 3.1
Zastosowanie modelowanego podejścia do implementacji AI
na przykładzie Locust AI Engine w QA3 ....................................... 253
Wprowadzenie ............................................................................................................. 254
Stan obecny — zbiory reguł deterministycznych ........................................................ 255
Problemy związane z regułami .................................................................................... 257
Modelowane podejście do implementacji AI .............................................................. 259
Interfejs ........................................................................................................................ 260
Zalety i korzyści dla projektantów .............................................................................. 261
Locust AI Engine w Quake III Arena .......................................................................... 263
Soar .............................................................................................................................. 264
Konkluzja ..................................................................................................................... 265
Literatura cytowana ..................................................................................................... 265
Rozdział 3.2
Koordynacja działań autonomicznych BN .................................. 267
Możliwe rozwiązania ................................................................................................... 268
Struktura BN ................................................................................................................ 269
Mechanizmy koordynacji ............................................................................................ 270
Przykład. Skoordynowane tropienie gracza ................................................................. 277
Konkluzja ..................................................................................................................... 278
Literatura cytowana ..................................................................................................... 279
Rozdział 3.3
Zastosowanie behawioralnych architektur robotycznych
w tworzeniu gier .............................................................................. 281
Architektura subsumpcyjna ......................................................................................... 282
Rozszerzone sieci behawioralne .................................................................................. 285
Dyskusja ...................................................................................................................... 289
Konkluzja ..................................................................................................................... 289
Literatura cytowana ..................................................................................................... 290
Zgłoś jeśli naruszono regulamin