Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00661 009105 10440517 na godz. na dobę w sumie
Perełki programowania gier. Vademecum profesjonalisty. Tom 1 - książka
Perełki programowania gier. Vademecum profesjonalisty. Tom 1 - książka
Autor: Liczba stron: 640
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-704-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> gry >> programowanie gier
Porównaj ceny (książka, ebook, audiobook).

W niniejszej książce znajdziesz połączoną wiedzę ponad 40 utalentowanych twórców gier. Współpracując, stworzyli zbiór wskazówek dotyczących programowania gier, dzięki któremu uzupełnisz swoją wiedzę. Jeśli zaimplementujesz zaprezentowane tutaj techniki (wypracowywane przez wiele godzin), wrogowie będą sprytniejsi, bohater płynnie powali przeciwników, a gracze z powodu wysoce realistycznego trójwymiarowego świata będą się bali zgasić światło w nocy.

Niezależnie od tego, czy pytali mnie o nowinki techniczne wprowadzone w nowej konsoli, czy o złożone algorytmy, jedna rzecz stawała się dla mnie jasna: ciągle zadajemy pytania. Jako programiści gier często nie wiemy, jak wykonać postawione przed nami zadanie. Może właśnie dlatego tak bardzo lubimy tę pracę! Co masz jednak zrobić, gdy przytrafi Ci się opisana sytuacja? Przeszukasz domową biblioteczkę lub zasoby sieci WWW? A może zajrzysz do archiwalnych numerów fachowych czasopism? Żaden twórca gier nie korzysta z jednego określonego źródła. Czy nie byłoby wspaniale, gdyby jednak istniało takie miejsce, do którego zawsze zajrzysz w pierwszej kolejności? Właśnie w tym celu napisaliśmy tę książkę.

Rozdziały książki obejmują wiele problemów technicznych, na które możesz się natknąć, pisząc grę. Znajdziesz ogromną liczbę szczegółowo omówionych technik, ale i kilka bardziej ogólnych rozdziałów. Zadaniem książki jest zwiększenie Twojego stopnia zaawansowania niezależnie od aktualnej wiedzy, jaką posiadasz. Na przykład w bardziej ogólnych rozdziałach opisujemy techniki, nie zagłębiając się w szczegóły; na ich omówienie czas przychodzi później. Dobrymi przykładami mogą być rozdziały o kwaternionach oraz część dotycząca algorytmów sztucznej inteligencji.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Pere³ki programowania gier. Vademecum profesjonalisty. Tom 1 Autor: Mark DeLoura T³umaczenie: Rafa³ Joñca ISBN: 83-7197-704-2 Tytu³ orygina³u: Game Programming Gems Format: B5, stron: 638 W niniejszej ksi¹¿ce znajdziesz po³¹czon¹ wiedzê ponad 40 utalentowanych twórców gier. Wspó³pracuj¹c, stworzyli zbiór wskazówek dotycz¹cych programowania gier, dziêki któremu uzupe³nisz swoj¹ wiedzê. Jeġli zaimplementujesz zaprezentowane tutaj techniki (wypracowywane przez wiele godzin), wrogowie bêd¹ sprytniejsi, bohater p³ynnie powali przeciwników, a gracze z powodu wysoce realistycznego trójwymiarowego ġwiata bêd¹ siê bali zgasiæ ġwiat³o w nocy. Niezale¿nie od tego, czy pytali mnie o nowinki techniczne wprowadzone w nowej konsoli, czy o z³o¿one algorytmy, jedna rzecz stawa³a siê dla mnie jasna: ci¹gle zadajemy pytania. Jako programiġci gier czêsto nie wiemy, jak wykonaæ postawione przed nami zadanie. Mo¿e w³aġnie dlatego tak bardzo lubimy tê pracê! Co masz jednak zrobiæ, gdy przytrafi Ci siê opisana sytuacja? Przeszukasz domow¹ biblioteczkê lub zasoby sieci WWW? A mo¿e zajrzysz do archiwalnych numerów fachowych czasopism? ¯aden twórca gier nie korzysta z jednego okreġlonego ĥród³a. Czy nie by³oby wspaniale, gdyby jednak istnia³o takie miejsce, do którego zawsze zajrzysz w pierwszej kolejnoġci? W³aġnie w tym celu napisaliġmy ksi¹¿kê, któr¹ trzymasz w rêce. Rozdzia³y ksi¹¿ki obejmuj¹ wiele problemów technicznych, na które mo¿esz siê natkn¹æ, pisz¹c grê. Znajdziesz ogromn¹ liczbê szczegó³owo omówionych technik, ale i kilka bardziej ogólnych rozdzia³ów. Zadaniem ksi¹¿ki jest zwiêkszenie Twojego stopnia zaawansowania niezale¿nie od aktualnej wiedzy, jak¹ posiadasz. Na przyk³ad w bardziej ogólnych rozdzia³ach opisujemy techniki, nie zag³êbiaj¹c siê w szczegó³y; na ich omówienie czas przychodzi póĥniej. Dobrymi przyk³adami mog¹ byæ rozdzia³y o kwaternionach oraz czêġæ dotycz¹ca algorytmów sztucznej inteligencji. 5RKUVTGħEK 2QF\KúMQYCPKCP  5RKUCWVQTÎY P  2T\GFOQYCP  1QDTC\MW\QMđCFMK P  \úħè+6GEJPKMKRTQITCOKUV[E\PG E  Rozdział 1.0 /CIKCUVGTQYCPKCFCP[OKP  Zasada 1.: Podstawy ...................................................o...................................................o........ 23 Zasada 2.: Całkowite minimum...................................................o.......................................... 23 Zasada 3.: Twórz elastyczne algorytmy ...................................................o............................. 24 Zasada 4.: Do sterowania przebiegiem wykorzystuj skrypty................................................ 24 Zasada 5.: Gdy dobre skrypty stają się złymi...................................................o..................... 25 Zasada 6.: Unikaj duplikacji danych ...................................................o.................................. 26 Zasada 7.: Kreuj narzędzia, które tworzą dane...................................................o................... 26 ......... 27 Wnioski ...................................................o...................................................o.................. Rozdział 1.1 2TQITCOQYCPKGQDKGMVQYGKVGEJPKMKRTQLGMVQYCPKC   Styl programowania..................................o...................................................o.......................... 30 Projektowanie klas.................................o...................................................o............................. 32 Projektowanie hierarchii klas ...................................................o............................................. 33 Wzorce projektowania...................................................o...................................................o.....33 Podsumowanie...................................................o...................................................o............. .... 39 Rozdział 1.2 5\[DMKGQDNKE\GPKCOCVGOCV[E\PG\Y[MQT\[UVCPKGOU\CDNQPÎY  Ciąg Fibonacciego...................................................o...................................................o........... 41 Silnia...................................................o...................................................o................... ............. 43 Trygonometria ...................................................o...................................................o................. 44 Kompilatory w rzeczywistym świecie...................................................o................................ 45 Jeszcze raz trygonometria..........................o...................................................o.........................45 Szablony i standard C++ ...................................................o...................................................o. 46 Macierze ...................................................o...................................................o.......................... 46 Podsumowanie...................................................o...................................................o............. .... 51 Rozdział 1.3 #WVQOCV[E\PGUKPINGVQP[ P  Definicja ...................................................o...................................................o.......................... 55 ............ 55 Zalety...................................................o...................................................o................... Problem ...................................................o...................................................o.................. ......... 56 Tradycyjne rozwiązanie..............................o...................................................o........................56 Lepszy sposób ...................................................o...................................................o................. 56 Jeszcze lepszy sposób...................................................o...................................................o...... 57  2GTGđMKRTQITCOQYCPKCIKGT8CFGOGEWORTQHGULQPCNKUV[6QO Rozdział 1.4 7ľ[YCPKGDKDNKQVGMK56.YRTQITCOQYCPKWIKGT   Rodzaje elementów w STL ...................................................o................................................ 59 Podstawowe pojęcia dotyczące biblioteki STL...................................................o.................. 60 Wektory ...................................................o...................................................o........................... 61 Listy...................................................o...................................................o.................... ............. 63 Kolejki dwukierunkowe ...................................................o...................................................o.. 66 Mapy...................................................o...................................................o................................ 67 Stosy, kolejki i kolejki priorytetowe ...................................................o.................................. 70 Podsumowanie...................................................o...................................................o............. .... 71 Rozdział 1.5 1IÎNP[KPVGTHGLUFQYKæ\[YCPKCHWPMELK   Wymagania...................................................o...................................................o...................... 73 Platformy sprzętowe i programowe..................................................o..................................... 74 Pierwsze rozwiązanie ...................................................o...................................................o...... 74 Drugie rozwiązanie...................................................o...................................................o.......... 75 Połowa rozwiązania...................................................o...................................................o......... 77 Sposoby wywoływania funkcji ...................................................o.......................................... 77 Wywoływanie funkcji ...................................................o...................................................o..... 79 Uzupełnianie rozwiązania ...................................................o.................................................. 80 ......... 83 Wnioski ...................................................o...................................................o.................. Rozdział 1.6 1IÎNP[U[UVGO\CT\æF\CPKC\CUQDCOKQRCTV[PCWEJY[VCEJ   Metoda...................................................o...................................................o............................. 86 Klasa Handle ...................................................o...................................................o................... 87 Klasa HandleMgr ...................................................o...................................................o............ 87 Przykład użycia ...................................................o...................................................o............... 89 Uwagi ...................................................o...................................................o.............................. 89 Rozdział 1.7 CT\æF\CPKG\CUQDCOKKRCOKúEKæP  Klasa zasobów...................................................o...................................................o................. 97 Klasa menedżera zasobów...................................................o................................................ 100 Jak działają uchwyty..................................o...................................................o....................... 102 Możliwe modyfikacje i rozszerzenia...................................................o................................ 103 Wnioski ...................................................o...................................................o.................. ....... 104 Rozdział 1.8 5\VWE\MC\U\[DMKOYE\[V[YCPKGOFCP[EJ   Wcześniej przetwórz dane...................................................o................................................ 105 Zapisywanie danych ...................................................o...................................................o...... 106 Prosty sposób wczytywania danych ...................................................o................................. 107 Bezpieczniejsze wczytywanie danych...................................................o.............................. 107 Rozdział 1.9 #NQMCELCRCOKúEKQRCTVCPCTCOMCEJ   Problemy tradycyjnej alokacji pamięci ...................................................o............................ 109 Wprowadzenie do pamięci opartej na ramkach...................................................o................ 109 Alokacja i zwalnianie pamięci...................................................o.......................................... 111 Przykład...................................................o...................................................o......................... 114 Wnioski ...................................................o...................................................o.................. ....... 115 Rozdział 1.10 2TQUVGKU\[DMKGVCDNKEGDKVÎY P  Ogólny opis ...................................................o...................................................o.............. ..... 117 Tablica bitów...................................................o...................................................o................. 117 Pozostałe tablice bitów...................................................o...................................................o..118 Wnioski ...................................................o...................................................o.................. ....... 119 5RKUVTGħEK  Rozdział 1.11 2TQVQMÎđUKGEKQY[YITCEJKPVGTPGVQY[EJ   Definicje ...................................................o...................................................o........................ 121 Modyfikacja pakietów...................................................o...................................................o... 122 Atak metodą powtarzania pakietów ...................................................o................................. 122 Dodatkowe zabezpieczenia ...................................................o.............................................. 124 Reinżynieria...................................................o...................................................o................... 124 Implementacja ...................................................o...................................................o............... 124 Rozdział 1.12 /CMU[OCNPGY[MQT\[UVCPKGOCMTCCUUGTV  Podstawy weryfikacji warunków ...................................................o..................................... 127 Pierwsza sztuczka: osadzanie dodatkowych informacji...................................................o... 128 Druga sztuczka: osadzanie jeszcze większej liczby informacji .......................................... 129 Trzecia sztuczka: upraszczanie zapisu ...................................................o............................. 129 Czwarta sztuczka: napisz własne makro ...................................................o.......................... 129 Piąta sztuczka: dodatkowa opcja prawie bez kosztów ...................................................o..... 130 Szósta sztuczka: tylko, gdy jesteś twardy.................................................o........................... 130 Siódma sztuczka: kopiowanie i wklejanie, czyli ułatwianie sobie życia ............................ 131 Rozdział 1.13 5VCV[UV[MKKVGUVQYCPKGIKGTYE\CUKGT\GE\[YKUV[O  Dlaczego: technologia sterowana potrzebami ...................................................o.................. 133 Jak: ewolucyjny proces...................................................o...................................................o.. 134 Co: system oparty na klasach języka C++...................................................o........................ 134 Gdzie: zastosowania ...................................................o...................................................o......137 Podsumowanie...................................................o...................................................o............. .. 137 Rozdział 1.14 5[UVGORTQHKNWLæE[F\KCđCLæE[YE\CUKGT\GE\[YKUV[O   Przechodzimy do szczegółów...................................................o........................................... 140 Czego dowiesz się za pomocą procedury profilującej?...................................................o.... 140 Dodawanie wywołań funkcji kodu profilującego...................................................o............. 142 Implementacja procedury profilującej...................................................o.............................. 142 Szczegóły dotyczące ProfileBegin ...................................................o................................... 143 Szczegóły dotyczące ProfileEnd ...................................................o...................................... 144 Przetwarzanie uzyskanych danych ...................................................o................................... 144 Możliwe udoskonalenia...................................................o...................................................o. 144 Łączymy wszystko razem...................................................o................................................. 145 \úħè++/CVGOCV[MC E  Rozdział 2.0 2T\GYKF[YCNPGNKE\D[NQUQYG P  Przewidywalne liczby losowe ...................................................o.......................................... 153 Alternatywne algorytmy...................................................o...................................................o 155 Algorytmy dla nieskończonych wszechświatów...................................................o.............. 156 Wnioski i wskazówki ...................................................o...................................................o.... 158 Rozdział 2.1 /GVQF[KPVGTRQNCELK P  Zależne od częstotliwości generowania klatek łagodne ozakończenie ruchu z wykorzystaniem liczb zmiennoprzecinkowych...................................................o.......... 161 Zależne od częstotliwości generowania klatek łagodne ozakończenie ruchu z wykorzystaniem liczb całkowitych ...................................................o............................ 162 Interpolacja liniowa niezależna od częstotliwości generoowania klatek................................. 163 Łagodne rozpoczęcie i zakończenie ruchu niezależne od częstotliwości generowania klatek ...................................................o......... 164 Niebezpieczeństwa ...................................................o...................................................o........165  2GTGđMKRTQITCOQYCPKCIKGT8CFGOGEWORTQHGULQPCNKUV[6QO Rozdział 2.2 CđMQYCPKGTÎYPCēTWEJWEKCđCU\V[YPGIQ   Kinematyka — przesunięcie i obrót ...................................................o................................. 169 Dynamika — siła i moment obrotowy ...................................................o............................. 172 Dodatkowe właściwości ciała sztywnego ...................................................o........................ 173 Całkowanie równań ruchu...................................................o................................................ 176 Rozdział 2.3 2T\[DNKľCPKGHWPMELKVT[IQPQOGVT[E\P[EJYKGNQOKCPCOK  Wielomiany ...................................................o...................................................o................... 180 Dziedzina i przeciwdziedzina...................................................o........................................... 181 Wielomiany parzyste i nieparzyste...................................................o................................... 184 Szereg Taylora...................................................o...................................................o............... 185 Skrócony szereg Taylora ...................................................o.................................................. 189 Szereg Lagrange’a ...................................................o...................................................o......... 190 Radzenie sobie z nieciągłościami...................................................o..................................... 193 ....... 194 Wnioski ...................................................o...................................................o.................. Rozdział 2.4 5VCDKNPQħèNKE\DQYC \Y[MQT\[UVCPKGOPKGLCYPGIQECđMQYCPKC WNGTC  Stabilność a problem całkowania początkowej wartości ...................................................o. 195 Metoda jawna Eulera...................................................o...................................................o..... 196 Metoda niejawna Eulera ...................................................o...................................................o 197 Niedokładność ...................................................o...................................................o............... 199 Znajdowanie niejawnych rozwiązań ...................................................o................................ 199 Wnioski ...................................................o...................................................o.................. ....... 199 Rozdział 2.5 9CXGNGVōVGQTKCKMQORTGULC P  Zasada działania ...................................................o...................................................o............ 201 Przykład...................................................o...................................................o......................... 203 Zastosowania ...................................................o...................................................o................. 204 Rozdział 2.6 +PVGTCMV[YPCU[OWNCELCRQYKGT\EJPKYQF[   Dwuwymiarowe równanie fali ...................................................o......................................... 205 Warunki brzegowe — wyspy i wybrzeża...................................................o......................... 207 Kwestie implementacyjne ...................................................o................................................ 208 Interakcja z powierzchnią...................................................o................................................. 209 Rendering ...................................................o...................................................o...................... 210 Rozdział 2.7 -YCVGTPKQP[YRTQITCOQYCPKWIKGT   Myśl o kwaternionach jako zastępcach macierzy ...................................................o............ 213 Dlaczego po prostu nie użyć kątów Eulera?...................................................o..................... 214 Co reprezentują X, Y, Z i W?...................................................o........................................... 214 Jakie jest podłoże matematyczne całego zagadnienia? ...................................................o.... 215 Jak kwaterniony reprezentują obroty?...................................................o.............................. 216 Rozdział 2.8 -QPYGTULCOCEKGT\MYCVGTPKQP P  Obrót kwaternionu...................................................o...................................................o......... 219 Konwersja kwaternionu na macierz ...................................................o................................. 220 Konwersja z macierzy na kwaternion...................................................o............................... 221 Rozdział 2.9 +PVGTRQNCELCMYCVGTPKQPÎY P  Rachunek kwaternionowy ...................................................o................................................ 225 Interpolacja kwaternionów ...................................................o............................................... 226 Przykładowy kod...................................................o...................................................o........... 228 Wyprowadzenie 2.9.1: Wzór dla slerp ...................................................o............................. 228 Wyprowadzenie 2.9.2: uzyskanie formy potęgowej slerp...................................................o 231 Wyprowadzenie 2.9.3: interpolacja krzywymi sklejanymi ................................................. 232 5RKUVTGħEK  Rozdział 2.10 -YCVGTPKQPFNCPCLOPKGLU\GIQMæVC P  Motywacja ...................................................o...................................................o..................... 235 Niestabilność numeryczna...................................................o................................................ 235 Wyprowadzanie stabilnego wzoru ...................................................o................................... 236 Warunki, przy których nadal powstaje niestabilność ...................................................o....... 237 Przykładowy kod...................................................o...................................................o........... 238 Wirtualny manipulator kulowy..................................................o.......................................... 238 \úħè+++5\VWE\PCKPVGNKIGPELCE  Rozdział 3.0 2TQLGMVQYCPKGQIÎNPGIQKWľ[VGE\PGIQOGEJCPK\OW U\VWE\PGLKPVGNKIGPELK P  Sterowanie zdarzeniami kontra odpytywanie obiektów...................................................o... 242 Koncepcja komunikatu...................................................o...................................................o.. 242 Automaty stanów...................................................o...................................................o.......... . 243 Automat stanów sterowany zdarzeniami w postaci komunikatów...................................... 243 Czas się przyznać ...................................................o...................................................o.......... 246 Jeszcze jedno małe przyznanie się ...................................................o................................... 246 Klocki automatu stanów...................................................o...................................................o 247 Przekazywanie komunikatów do i z automatu stanów...................................................o..... 247 Wysyłanie komunikatów...................................................o.................................................. 248 Wysyłanie opóźnionych komunikatów ...................................................o............................ 249 Usuwanie obiektu gry...................................................o...................................................o.... 250 Udoskonalenie — określenie zakresu komunikatu ...................................................o.......... 250 Udoskonalenie — dziennik wysyłanych komunikatów i zmian stanów ............................. 251 Udoskonalenie — zamiana automatów stanów...................................................o................ 252 Udoskonalenie — kilka automatów stanów...................................................o..................... 252 Udoskonalenie — kolejka automatów stanów ...................................................o................. 252 Skrypty zachowania poza kodem ...................................................o..................................... 253 Wnioski ...................................................o...................................................o.................. ....... 253 Rozdział 3.1 -NCUCCWVQOCVWQUMQēE\QPGLNKE\DKGUVCPÎY   Klasy FSMclass i FSMstate ...................................................o............................................. 259 Definicja klasy FSMstate ...................................................o................................................. 259 Definicja klasy FSMclass...................................................o................................................. 260 Tworzenie stanów dla automatu skończonego ...................................................o................. 262 Używanie automatu skończonego ...................................................o.................................... 262 Rozdział 3.2 T\GYCIKGTP  Odmiana Negamax algorytmu Minimax ...................................................o.......................... 270 Przycinanie alfa-beta ...................................................o...................................................o..... 271 Metody porządkowania ruchów ...................................................o....................................... 272 Udoskonalenia dla alfa-beta ...................................................o............................................. 272 Rozdział 3.3 2QFUVCY[# FQV[E\æEGRNCPQYCPKCFTQIK  Problem ...................................................o...................................................o.................. ....... 275 Ogólne omówienie rozwiązania ...................................................o....................................... 275 Właściwości A*...................................................o...................................................o............. 277 Zastosowanie A* do planowania drogi w grach...................................................o............... 277 Słabości algorytmu A* ...................................................o...................................................o.. 282 Inne rozszerzenia ...................................................o...................................................o........... 282 Rozdział 3.4 1RV[OCNK\CELGGUVGV[E\PGFNC# P  Proste ścieżki...................................................o...................................................o................. 283 Wyprostowane ścieżki w przestrzeni wyszukiwania z wieloboków................................... 284 Wygładzanie ścieżek ...................................................o...................................................o..... 284  2GTGđMKRTQITCOQYCPKCIKGT8CFGOGEWORTQHGULQPCNKUV[6QO Częściowo obliczone wzory Catmulla-Roma ...................................................o.................. 285 Poprawa doboru kierunku przy hierarchicznych ścieżkach ................................................ 286 Hierarchiczne znajdowanie drogi na otwartej przestrzeni...................................................o 288 Eliminacja przestojów przy hierarchicznym wyszukiwaniu ............................................... 288 Minimalizacja czasu odpowiedzi ...................................................o..................................... 288 Wnioski ...................................................o...................................................o.................. ....... 289 Rozdział 3.5 1RV[OCNK\CELC# RQFY\INúFGOU\[DMQħEKF\KCđCPKC  Optymalizacja przestrzeni wyszukiwania ...................................................o........................ 292 Optymalizacje algorytmu ...................................................o................................................. 296 ....... 301 Wnioski ...................................................o...................................................o.................. Rozdział 3.6 7RTQU\E\QP[TWEJYVTÎLY[OKCTQYGLRT\GUVT\GPK K\PCLFQYCPKGFTQIKRT\[Wľ[EKWUKCVGMPCYKICE[LP[EJ   W dużym skrócie...................................................o...................................................o........... 305 Konstrukcja ...................................................o...................................................o................... 307 Ruszmy się ...................................................o...................................................o............... ..... 307 Dostanie się tam to połowa zabawy ...................................................o................................. 310 Działa, ale nie najlepiej ...................................................o...................................................o. 312 ....... 313 Wnioski ...................................................o...................................................o.................. Rozdział 3.7 #NIQT[VOUVCFC ōRTQUVCVGEJPKMCU[OWNCELK\DKQTQYGIQ\CEJQYCPKC   Implementacja ...................................................o...................................................o............... 323 Kod ...................................................o...................................................o................................ 325 Ograniczenia i możliwe udoskonalenia...................................................o............................ 327 Podziękowania i materiały ...................................................o............................................... 332 Rozdział 3.8 .QIKMCTQ\O[VCYITCEJ P  Jak działa logika rozmyta? ...................................................o............................................... 333 Operacje na logice rozmytej...................................................o............................................. 334 Sterowanie rozmyte...................................................o...................................................o.......336 Inne zastosowania logiki rozmytej ...................................................o................................... 341 Wnioski ...................................................o...................................................o.................. ....... 342 Rozdział 3.9 2QFUVCY[UKGEKPGWTQPQY[EJP  Biologiczna analogia ...................................................o...................................................o.....343 Zastosowanie w grach ...................................................o...................................................o... 344 Sieci neuronowe ...................................................o...................................................o............ 345 Czysta logika — Mr. Spock ...................................................o............................................. 350 Klasyfikacja i rozpoznawanie „obrazów” ...................................................o........................ 353 Algorytm Hebba ...................................................o...................................................o............ 356 Sieć Hopfielda ...................................................o...................................................o............... 358 Wnioski ...................................................o...................................................o.................. ....... 361 \úħè+86GEJPKMKFQV[E\æEGYKGNQMæVÎY   Rozdział 4.0 1RV[OCNK\CELCFQUVCTE\CPKCYKGT\EJQđMÎYY1RGP).   Tryb bezpośredni...................................................o...................................................o........... 365 Przeplatane dane...................................................o...................................................o............ 366 Dane krokowe i strumieniowe...................................................o.......................................... 367 Skompilowane tablice wierzchołków...................................................o............................... 368 Eliminacja kopiowania danych — rozszerzenia producentów............................................ 369 Format danych...................................................o...................................................o............... 369 Ogólne zalecenia ...................................................o...................................................o........... 370 Wnioski ...................................................o...................................................o.................. ....... 370 5RKUVTGħEK  Rozdział 4.1 7NGRU\CPKGYCTVQħEKIđúDKT\WVQYCPKCYKGT\EJQđMC   Zapoznanie z macierzą rzutowania ...................................................o.................................. 373 Dopracowywanie wartości głębi ...................................................o...................................... 374 Wybór odpowiedniego epsilona...................................................o....................................... 374 Implementacja ...................................................o...................................................o............... 375 Kod źródłowy ...................................................o...................................................o................ 376 Rozdział 4.2 9GMVQTQYCMCOGTCP  Wprowadzenie do wektorowej kamery ...................................................o............................ 378 Optymalizacja lokalnej przestrzeni ...................................................o.................................. 379 Wnioski ...................................................o...................................................o.................. ....... 381 Rozdział 4.3 6GEJPKMKUVGTQYCPKCMCOGTæ P  Prosta kamera z widokiem z pierwszej osoby...................................................o.................. 383 Kamera oparta na skryptach ...................................................o............................................. 385 Sztuczki z kamerą...................................................o...................................................o.......... 388 Rozdział 4.4 5\[DMKVGUVRT\GEKúEKCYCNEC\QDU\CTGOYKF\GPKC  Obszar widzenia ...................................................o...................................................o............ 392 Liczenie efektywnego promienia ...................................................o..................................... 393 Algorytm ...................................................o...................................................o................. ...... 394 Implementacja ...................................................o...................................................o............... 395 Rozdział 4.5 9[MT[YCPKG\FGT\GēYVTÎLY[OKCTQYGLRT\GUVT\GPK  Algorytmy ...................................................o...................................................o................ ..... 401 Wykrywanie zderzeń na podstawie kul otaczających obiekty ............................................ 402 Wykrywanie zderzeń trójkątów...................................................o........................................ 403 Rozdział 4.6 9KGNQTQ\F\KGNE\QħEKQYGOCR[YKPVGTCMV[YPGLFGVGMELK\FGT\Gē  Siatki...................................................o...................................................o................... ........... 413 Problemy z różnorodnością rozmiarów obiektów...................................................o............ 413 Wielorozdzielczościowe mapy...................................................o......................................... 415 Kod źródłowy ...................................................o...................................................o................ 415 Rozdział 4.7 1DNKE\CPKGQFNGIđQħEKYUGMVQT\G P  ....... 421 Problem ...................................................o...................................................o.................. Opis algorytmu ...................................................o...................................................o........... ... 422 Zastosowania ...................................................o...................................................o................. 424 Rozdział 4.8 7UWYCPKGPKGYKFQE\P[EJQDKGMVÎY P  Usuwanie obiektów poza obszarem widoczności ...................................................o............ 430 Usuwanie zakrytych obiektów ...................................................o......................................... 431 Podsumowanie...................................................o...................................................o............. .. 433 Rozdział 4.9 2TQDNGO[\FQDQTGOU\E\GIÎđQYQħEKIGQOGVTKK   Wybór poziomu szczegółowości...................................................o...................................... 440 Współczynnik powiększenia ...................................................o............................................ 441 Pętla histerezy...................................................o...................................................o................ 441 Implementacja ...................................................o...................................................o............... 442 Inne problemy...................................................o...................................................o................ 443 Rozdział 4.10 -QPUVTWMELG\FT\GYÎUGOMQY[EJP  Drzewa ósemkowe ...................................................o...................................................o........ 445 Dane drzewa ósemkowego...................................................o............................................... 446 Tworzenie drzewa ...................................................o...................................................o.........447 Nachodzenie na siebie wielokątów ...................................................o.................................. 448  2GTGđMKRTQITCOQYCPKCIKGT8CFGOGEWORTQHGULQPCNKUV[6QO Sąsiedzi...................................................o...................................................o.......................... 448 Zastosowania ...................................................o...................................................o................. 449 Wnioski ...................................................o...................................................o.................. ....... 449 Rozdział 4.11 5YQDQFPGFT\GYCÎUGOMQYGP  Drzewa czwórkowe ...................................................o...................................................o....... 452 Bryły otaczające ...................................................o...................................................o............ 452 Dzielenie obiektów...................................................o...................................................o........ 453 Tworzenie swobodnego drzewa ...................................................o....................................... 455 Porównanie...................................................o...................................................o.................... 457 ....... 459 Wnioski ...................................................o...................................................o.................. Rozdział 4.12 2TQITGU[YPGUKCVMKPKG\CNGľPGQFYKFQMW   Progresywne siatki ...................................................o...................................................o........ 461 Różne podejścia...................................................o...................................................o............. 462 Funkcje wyboru krawędzi ...................................................o................................................ 464 Trudne krawędzie ...................................................o...................................................o.......... 464 Implementacja ...................................................o...................................................o............... 465 Kod źródłowy ...................................................o...................................................o................ 469 Rozdział 4.13 6TÎLY[OKCTQYCCPKOCELC\CRQOQEæWLúèMNWE\QY[EJ   Interpolacja liniowa...................................................o...................................................o....... 471 Interpolacja wierzchołków i normalnych ...................................................o......................... 473 Interpolacja krzywymi sklejanymi Hermite’a ...................................................o.................. 473 Wierzchołki interpolowane krzywymi sklejanymi...................................................o........... 475 Dlaczego krzywe sklejane Hermite’a? ...................................................o............................. 476 Podsumowanie...................................................o...................................................o............. .. 476 Rozdział 4.14 5\[DMCKRTQUVCVGEJPKMCFGHQTOCELKUKCVMK\CRQOQEæMQħEK  Dlaczego niewielka liczba trójkątów?...................................................o.............................. 477 Działanie...................................................o...................................................o........................ 477 Podsumowanie...................................................o...................................................o............. .. 478 Rozdział 4.15 9[RGđPKCPKGU\E\GNKPō\CCYCPUQYCPCCPKOCELC \\CUVQUQYCPKGO\U\[YCPKC K\đQľQPGIQU[UVGOWRT\[RKU[YCPKCUKCVEGMQħEK   Zszywanie...................................................o...................................................o...................... 484 Złożone odkształcanie siatki za pomocą kości...................................................o................. 486 Zaawansowane tematy...................................................o...................................................o... 489 Rozdział 4.16 )GPGTQYCPKGTGCNKUV[E\PGIQVGTGPWYE\CUKGT\GE\[YKUV[O   Krajobrazy ...................................................o...................................................o..................... 491 Budynki ...................................................o...................................................o.................. ....... 496 Algorytm tworzenia nazw ...................................................o................................................ 499 Rozdział 4.17 (TCMVCNPGIGPGTQYCPKGVGTGPWōDđúFPGHQTOCELG   Błędne formacje.......................................o...................................................o......................... 503 Zmniejszanie dHeight...................................................o...................................................o.... 504 Generowanie losowych linii...................................................o............................................. 504 Erozja...................................................o...................................................o............................. 505 Przykładowy kod...................................................o...................................................o........... 506 Rozdział 4.18 (TCMVCNPGIGPGTQYCPKGVGTGPW ōRT\GOKGU\E\CPKGħTQFMQYGIQRWPMVW   Przemieszczenie środkowego punku w jednym wymiarze ................................................. 507 Przemieszczanie środkowego punktu w dwóch wymiarach — rombowy kwadrat ............ 508 Algorytm romb-kwadrat w polach wysokości ...................................................o................. 510 5RKUVTGħEK  Rozdział 4.19 (TCMVCNPGIGPGTQYCPKGVGTGPWōQUCF\CPKGE\æUVGE\GM  Modele MBE ...................................................o...................................................o............... .. 511 Osadzanie cząsteczek ...................................................o...................................................o.... 511 Uzyskanie krateru...................................................o...................................................o.......... 512 Przykładowy kod...................................................o...................................................o........... 514 \úħè8 HGMV[\Y[MQT\[UVCPKGORKMUGNK   Rozdział 5.0 YWY[OKCTQY[GHGMVNGPUHNCTG P  Podejście...................................................o...................................................o................ ........ 517 Implementacja ...................................................o...................................................o............... 518 Kod źródłowy ...................................................o...................................................o................ 520 Rozdział 5.1 7ľ[EKGURT\úVWFQITCHKMKVTÎLY[OKCTQYGL FNCFYWY[OKCTQY[EJGHGMVÎYURTKVGŏÎY   Przechodzimy do trzeciego wymiaru ...................................................o............................... 521 Ustawianie trójwymiarowej sceny ...................................................o................................... 522 Ustawianie tekstury ...................................................o...................................................o....... 522 Rysowanie trójwymiarowego sprite’a...................................................o.............................. 522 Dodawanie efektów...................................................o...................................................o....... 524 Wnioski ...................................................o...................................................o.................. ....... 525 Rozdział 5.2 5VCV[E\PGQħYKGVNGPKGDC\WLæEGPCQMTGħNQP[OOQV[YKG   Tradycyjne statyczne oświetlenie...................................................o..................................... 527 Statyczne oświetlenie bazujące na motywach...................................................o.................. 530 Wnioski ...................................................o...................................................o.................. ....... 536 Rozdział 5.3 5[OWNCELCQħYKGVNGPKCYE\CUKGT\GE\[YKUV[O\CRQOQEæ KPVGTRQNCELKMQNQTÎYYKGT\EJQđMÎY P  Metoda oświetlenia...................................................o...................................................o........ 538 Tworzenie grafiki ...................................................o...................................................o.......... 538 Interpolacja oświetlenia...................................................o...................................................o.539 Wnioski ...................................................o...................................................o.................. ....... 540 Rozdział 5.4 /CR[\CPKMWP  Omówienie ...................................................o...................................................o.................... 545 Porównanie map zaniku z mapami oświetlenia...................................................o................ 549 Efekty CSG...................................................o...................................................o............... ..... 549 Mgła bazująca na zasięgu...................................................o................................................. 549 Inne kształty......................................o...................................................o................................ 550 Wnioski ...................................................o...................................................o.................. ....... 550 Rozdział 5.5 CCYCPUQYCPGVGMUVWTQYCPKG \Y[MQT\[UVCPKGOIGPGTCELKYURÎđT\úFP[EJVGMUVWT[   Prosta animacja współrzędnych tekstury...................................................o.......................... 552 Rzutowanie tekstury ...................................................o...................................................o......552 Odwzorowywanie odbić...................................................o...................................................o 554 Rozdział 5.6 5RT\úVQYGOCRQYCPKGPKGTÎYPQħEK   Jak nałożyć mapę nierówności na obiekt?...................................................o........................ 558 Dobór przestrzeni dla normalnych ...................................................o................................... 558 Inne rozwiązanie — używanie mapowania nierówności w przestrzeni stycznej................ 559 Rozwiązanie — mapowanie nierówności w przestrzeni tekstury ....................................... 562 Problemy w przestrzeni tekstury ...................................................o...................................... 563 Wnioski ...................................................o...................................................o.................. ....... 564  2GTGđMKRTQITCOQYCPKCIKGT8CFGOGEWORTQHGULQPCNKUV[6QO Rozdział 5.7 KGPKGPCRđCUMKGLRQFđQF\G P  Matematyka cienia..................................o...................................................o.......................... 565 Implementacja ...................................................o...................................................o............... 567 Udoskonalenia ...................................................o...................................................o............... 569 Rozdział 5.8 KGPKGPC\đQľQP[EJQDKGMVCEJNKE\QPGYE\CUKGT\GE\[YKUV[O  Wprowadzenie...................................................o...................................................o............... 571 Źródło światła, obiekt blokujący i otrzymujący ...................................................o............... 572 Cele tego rozdziału ...................................................o...................................................o........ 573 Tworzenie mapy cienia...................................................o...................................................o.. 574 Rzutowanie mapy cienia na obiekcie otrzymującym ...................................................o....... 580 Rendering obiektów odbierających ...................................................o.................................. 581 Rozszerzenia i usprawnienia podstawowego algorytmu...................................................o.. 582 Rozdział 5.9 7NGRU\CPKGħTQFQYKUMCōQFY\QTQY[YCPKGQFDKè RT\[Wľ[EKWYE\GħPKGLU\GIQHKNVTQYCPKC\RQđ[UMKGO KE\[PPKMC(TGUPGNC P  Pierwsze błędne założenie...................................................o................................................ 586 Drugie błędne założenie ...................................................o...................................................o 588 Wnioski ...................................................o...................................................o.................. ....... 588 Podziękowania...................................................o...................................................o............... 588 Rozdział 5.10 4GCNKUV[E\PKGY[INæFCLæEGU\MđQYITCEJ  Wprowadzenie...................................................o...................................................o............... 589 Przezroczyste obiekty...................................................o...................................................o....589 Rasteryzer, bufor ramki, bufor głębi i mieszanie pikseli...................................................o.. 589 Obiekty nieprzezroczyste kontra przezroczyste ...................................................o............... 590 Rysowanie nieprzezroczystych obiektów...................................................o......................... 591 Rysowanie przezroczystych obiektów ...................................................o............................. 591 Odbicia ...................................................o...................................................o.......................... 595 Kolorowe szkło...................................................o...................................................o.............. 595 Łączymy wszystko razem...................................................o................................................. 596 Implementacja ...................................................o...................................................o............... 596 Rozdział 5.11 1FY\QTQY[YCPKG\CđCOCēYRđ[PCEJ \PCLFWLæE[EJUKúYRQLGOPKMCEJP  Wprowadzenie...................................................o...................................................o............... 597 Współczynnik załamania...................................................o.................................................. 598 Współczynnik odbicia ...................................................o...................................................o... 600 Czynnik Fresnela...................................................o...................................................o........... 600 Rendering na sprzęcie................................o...................................................o.......................600 Możliwe rozszerzenia techniki ...................................................o......................................... 601 Wnioski ...................................................o...................................................o.................. ....... 602 QFCVMK E  Dodatek A $KDNKQVGMCQRGTCELKPCOCEKGT\CEJ P  DodatekB $KDNKQVGMCY[ħYKGVNCPKCVGMUVÎY P  DodatekC $KDNKQITCHKCP  5MQTQYKF\P  Rozdział 4.5 9[MT[YCPKG\FGT\Gē YVTÎLY[OKCTQYGLRT\GUVT\GPK -GXKP-CKUGT Mechanizm fizyki działający w czasie rzeczywistym jest najważniejszym elementem, dzięki któremu można tworzyć trójwymiarowe środowiska, na widok których gracz po prostu kręci głową z niedowierzaniem. Mechanizm symulacji fizyki zapewnia realistyczną in- terakcję obiektów. Wtedy gracz czuje realizm przedstawionego świata, a co za tym idzie, może lepiej się po nim poruszać, ponieważ zachowuje się podobnie do tego, do czego jest przyzwyczajony w realnym świecie. Pierwszym i najważniejszym krokiem przy two- rzeniu realistycznej symulacji fizyki jest dokładne wykrywanie zderzeń; gdy już zostanie jakieś wykryte, symulacja może odpowiednio zadziałać. W tym rozdziale ułożymy pod- waliny pod tworzenie perfekcyjnej symulacji fizyki, omawiając najważniejszy jej frag- ment, czyli wykrywanie zderzeń w trójwymiarowej prze strzeni. #NIQT[VO[ W rozdziale zajmiemy się dwoma algorytmami detekcji zderzeń:   Wykrywanie zderzeń na podstawie kul otaczających ob iekty. Używamy ich, ponieważ kod jest stosunkowo prosty, a wyjaśnienie z asad działania nie nastręcza większych problemów. W zasadzie kod sprawdza zderzenia , testując promień jednej kuli z promieniem drugiej. Wykrywanie zderzeń na podstawie przecięć trójkątów. W tym przypadku, zanim przejdziemy do algorytmu, warto będzie sobie przypomni eć co nieco z matematyki. Ten algorytm używa równań parametrycznych do określen ia zderzenia między punktami jednego trójkąta a płaszczyzną innego trójk ąta, a następnie określenia, czy te kolidujące punkty znajdują się wewnątrz drug iego trójkąta.  \úħè+86GEJPKMKFQV[E\æEGYKGNQMæVÎY 9[MT[YCPKG\FGT\GēPCRQFUVCYKGMWNQVCE\CLæE[EJQDMKGMV[ Wykrywanie zderzeń najlepiej przeprowadzać w hierarchicznych krokach: dla kul otacza- jących obiekty, następnie dla kul otaczających wieloboki, a na końcu wykorzystać prze- nikanie trójkątów. Liczenie kul otaczających obiekty jest bardzo proste; musisz znaleźć środek obiektu, następnie policzyć maksymalną odległość między środkiem a wierzchoł- kiem obiektu. Przechowując promień każdej otaczającej kuli, możesz przeprowadzać test zderzenia, dodając promienie i sprawdzając je z odległością środków obiektów. Jeśli suma jest większa niż odległość środków, kule nie p rzenikają się. Przejdźmy przez to krok po kroku. Najpierw musimy określić środek siatki. Jedna z metod używa prostopadłościanu otaczającego obiekt i liczy środek przekątnej tej bryły (rysu- nek 4.5.1). Aby określić prostopadłościan, musimy poznać maksymalne i minimalne wartości x, y i z dla całego obiektu. Można to wykonać, przechodząc przez wszystkie wierzchołki i sprawdzając „aktualne” maksimum i minimum. Po sprawdzeniu wszyst- kich wierzchołków otrzymamy minimalny prostopadłościan, który otoczy obiekt. 4[UWPGM Znajdowanie środka Dla prostopadłościanu z ośmioma punktami (ABCDEFGH, patrz rysunek 4.5.2) przy- pomnijmy sobie ułożenie wierzchołków 4[UWPGM Tworzenie prostopadłościanu otaczającego obiekt # OKPZOKP[OKP\ $ OKPZOCZ[OKP\  OCZZOCZ[OKP\  OCZZOKP[OKP\  OKPZOKP[OCZ\ 4Q\F\KCđ9[MT[YCPKG\FGT\GēYVTÎLY[OKCTQYGLRT\GUVT\GPK  ( OKPZOCZ[OCZ\ ) OCZZOCZ[OCZ\ * OCZZOKP[OCZ\ Teraz znajdź środek, uśredniając maksymalny i minimalny punkt prostopadłościanu (w naszym przypadku są to punkty A i G). 9\ÎTPCħTQFGMFCPG# Z[\ K$ Z[\ ĦTQFGMNKPKKOKúF\[RWPMVCOK#K$LGUVPCUVúRWLæE[ = Z Z  [ [  \ \ ? ħTQFGMZ #Z )Z  ħTQFGM[ #[ )[  ħTQFGM\ #\ )\  Promień otaczającej obiekt kuli można łatwo obliczyć, przechodząc przez kolejne wierzchołki i znajdując odległość między wierzchołkiem i środkiem obiektu. Jeśli uzys- kana odległość jest większa od aktualnego maksimum, zastępujemy maksimum uzyskaną wartością. Po sprawdzeniu wszystkich wierzchołków maksymalna odległość jest pro- mieniem kuli (oczywiście dosyć naturalną optymalizacją jest liczenie pierwiastka kwa- dratowego dopiero na końcu). 9\ÎTPCQFNGIđQħè QFNUSTV= ZZ @   [[ @   \\ @ ? QFNMY ZZ @   [[ @   \\ @ FNCMCľFGIQYKGT\EJQđMCXYQDKGMEKG] CMVWCNPCAQFNGIđQħèAMYQFNMY QDKGMVħTQFGMX  KH CMVWCNPCAQFNGIđQħèAMY OCZAQFNGIđQħèAMY OCZAQFNGIđQħèAMYCMVWCNPCAQFNGIđQħèAMY _ QDKGMVRTQOKGēUSTV OCZAQFNGIđQħèAMY  Całość powtórzymy na poziomie wielokątów; sprawdzanie przy użyciu otaczających kul jest proste i szybkie, więc użycie tej metody przy tym teście wydaje się logiczne. Po wygenerowaniu otaczających prostopadłościanów i kul dla każdego obiektu i wieloboku możemy zająć się najciekawszą częścią tego rozdziału: testem przecinania się trójkątów! Wyjmij książkę z geometrii — może Ci się przydać. 9[MT[YCPKG\FGT\GēVTÎLMæVÎY Przedstawiana metoda wykrywania zderzeń dwóch trójkątów nie jest trudna
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Perełki programowania gier. Vademecum profesjonalisty. Tom 1
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: