Perełki programowania gier. Vademecum profesjonalisty. Tom 6 - Helion
Tytuł oryginału: Game Programming Gems 6 (Book & CD-ROM)
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
stron: 736, Format: B5, okładka: miękka
Data wydania: 2007-12-14
Księgarnia: Helion
Cena książki: 77,40 zł (poprzednio: 129,00 zł)
Oszczędzasz: 40% (-51,60 zł)
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.
Osoby które kupowały "Perełki programowania gier. Vademecum profesjonalisty. Tom 6", wybierały także:
- Superinteligencja. Scenariusze, strategie, zagro 66,67 zł, (14,00 zł -79%)
- Poradnik design thinking - czyli jak wykorzysta 48,28 zł, (14,00 zł -71%)
- Kosymulacja. Elastyczne projektowanie i symulacja wielodomenowa 38,39 zł, (11,90 zł -69%)
- F# 4.0 dla zaawansowanych. Wydanie IV 96,45 zł, (29,90 zł -69%)
- Systemy reaktywne. Wzorce projektowe i ich stosowanie 65,31 zł, (20,90 zł -68%)
Spis treści
Perełki programowania gier. Vademecum profesjonalisty. Tom 6 -- 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)
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)
- 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)
- 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)
Rozdział 3.4 Konstruowanie sterowanego celem robota gry Unreal Tournament przy użyciu czujników rozmytych, maszyn skończenie stanowych i rozszerzonych sieci behawioralnych (291)
- Projektowanie rozszerzonej sieci behawioralnej (292)
- Hierarchiczne czujniki rozmyte (298)
- Moduły behawioralne jako maszyny skończenie stanowe (301)
- Konkluzja (303)
- Literatura cytowana (303)
Rozdział 3.5 Robot sterowany celem: projektowanie zachowań i cech osobowości agenta gry przy użyciu rozszerzonych sieci behawioralnych (305)
- Rozszerzone sieci behawioralne (306)
- Jakość wyboru akcji (311)
- Projektowanie cech osobowości (314)
- Konkluzja (317)
- Literatura zalecana (318)
Rozdział 3.6 Modelowanie pamięci krótkotrwałej przy użyciu maszyny wektorów wspierających (319)
- Maszyny wektorów wspierających (319)
- Modelowanie pamięci krótkotrwałej (325)
- Limitowanie obciążenia procesorów (326)
- Konkluzja (326)
- Literatura cytowana (327)
Rozdział 3.7 Zastosowanie modelu oceny kwantytatywnej do analizy konfliktów zbrojnych (329)
- Formuła podstawowa (330)
- Obliczanie siły ognia (330)
- Obliczanie potencjału bojowego (331)
- Szacowanie efektywności użycia broni (332)
- Teoretyczne przewidywanie wyniku konfliktu (333)
- A co z efektywnością wykorzystania broni? (334)
- Przykład systemu QJM (334)
- Ograniczenia (335)
- Konkluzja (335)
- Literatura cytowana (336)
Rozdział 3.8 Projektowanie wielowarstwowego, przyłączalnego silnika AI (337)
- RozwiÄ…zania pokrewne (338)
- Architektura silnika AI (339)
- Klasy i właściwości systemu sterowanego danymi (340)
- Priorytetowy zarządca zadań (345)
- Wydajność i techniki optymalizacyjne (346)
- Narzędzia (348)
- Konkluzja (350)
- Literatura cytowana (351)
Rozdział 3.9 Zarządzanie złożonością scenerii na bazie reguł logiki rozmytej (353)
- Koncepcja (353)
- Regulacja rozmyta (354)
- Narzędzia (354)
- Projekt systemu (357)
- Zastosowanie do gier (358)
- Założenia (359)
- Uwagi implementacyjne (360)
- Testy i ich rezultat (360)
- Konkluzja (362)
- Podziękowanie (362)
- Literatura cytowana (363)
Część IV Skrypty i systemy sterowane danymi (365)
Wprowadzenie (367)
Rozdział 4.1 Przegląd języków skryptowych (371)
- Po co w ogóle stosować języki skryptowe? (371)
- Wprowadzenie (371)
- Sposób kodowania (372)
- Integracja z językami C/C++ (377)
- Wydajność (384)
- Metody wspierania procesów wytwarzania (387)
- Konkluzja (390)
- Literatura (390)
Rozdział 4.2 Wiązanie obiektów C/C++ ze skryptami języka Lua (391)
- Funkcje wiążące (392)
- Wiązanie właściwych obiektów z wartościami języka Lua (394)
- Wiązanie obiektów środowiska nadrzędnego z obiektami języka Lua (397)
- Wiązanie właściwych obiektów z tabelami języka Lua (402)
- Konkluzja (403)
- Literatura (406)
Rozdział 4.3 Programowanie zaawansowanych mechanizmów sterujących z wykorzystaniem współprogramów języka Lua (407)
- Współprogramy Lua (408)
- Filtry (409)
- Iteratory (411)
- Mechanizmy szeregowania zadań (414)
- Wielozadaniowość równoległa (415)
- Konkluzja (419)
- Literatura (419)
Rozdział 4.4 Zarządzanie wykonywaniem skryptów wysokopoziomowych w ramach środowisk wielowątkowych (421)
- Oprogramowanie komponentowe i interpreter skryptu (422)
- Współprogramy i mikrowątki (422)
- Menedżer mikrowątków (423)
- Osadzanie kodu języka Python (426)
- Eksperymenty i wyniki (429)
- Konkluzja (431)
- Literatura (432)
Rozdział 4.5 Udostępnianie właściwości aktorów z wykorzystaniem nieinwazyjnych pośredników (433)
- Aktorzy, pośrednicy i właściwości. Mój Boże! (433)
- Nieinwazyjna i dynamiczna architektura (435)
- Właściwości aktora (436)
- Pośrednicy aktorów (440)
- Od teorii do praktyki (442)
- Konkluzja (443)
- Literatura (443)
Rozdział 4.6 System komponentowy obiektów gry (445)
- Obiekty gry (445)
- Komponenty bazowe obiektów gry (447)
- Zarządzanie komponentami z poziomu obiektów gry (448)
- Komunikacja pomiędzy komponentami (450)
- Szablony komponentów gry (451)
- Szablony obiektów gry (454)
- Tworzenie obiektu gry sterowanego danymi (455)
- Konkluzja (455)
Część V Grafika (457)
Wprowadzenie (459)
Rozdział 5.1 Synteza realistycznych ruchów nieaktywnych postaci w grze (461)
- Wprowadzenie (462)
- Główne składowe animacji ciała ludzkiego (463)
- Zmiany postaw (465)
- Ciągłe, drobne zmiany postaw (469)
- Konkluzja (474)
- Literatura (474)
Rozdział 5.2 Dzielenie przestrzeni z wykorzystaniem adaptacyjnego drzewa binarnego (477)
- Budowa adaptacyjnego drzewa binarnego (477)
- Szczegółowa implementacja drzewa ABT (479)
- Poszukiwanie odpowiednich płaszczyzn dzielących (483)
- Stosowanie drzew ABT dla scen dynamicznych (486)
- Wizualizacja drzewa ABT (487)
- Konkluzja (489)
- Podziękowania (489)
- Literatura (489)
Rozdział 5.3 Rozszerzony mechanizm eliminowania obiektów z wykorzystaniem (niemal) całkowicie ukierunkowanych ramek ograniczających (491)
- PrzeglÄ…d znanych metod (492)
- Techniki tradycyjne (493)
- Efektywne rozwiązanie dla dwóch wymiarów (494)
- Udoskonalenia technik tradycyjnych (496)
- Eliminowanie obiektów według ramki ograniczającej (500)
- Dalsze usprawnienia (501)
- Konkluzja (502)
- Literatura (503)
Rozdział 5.4 Podział powierzchni z myślą o optymalizacji renderingu (505)
- Wprowadzenie (505)
- Koncepcje podziału (506)
- Heurystyka podziału wag (508)
- Heurystyka palety kości (508)
- Szczegółowe omówienie heurystyki (511)
- Konkluzja (515)
Rozdział 5.5 Rendering terenu na poziomie procesora GPU (517)
- Prosty algorytm (518)
- Poziom szczegółowości (519)
- Eliminowanie szczelin (521)
- Odrzucanie obiektów spoza ostrosłupa widoczności (523)
- Wyznaczanie normalnych (523)
- Unikanie kolizji (525)
- Problemy implementacyjne (526)
- Wyniki (527)
- Konkluzja (528)
- Literatura (528)
Rozdział 5.6 Interaktywna dynamika cieczy i rendering na poziomie GPU (529)
- Podstawy matematyczne (530)
- Implementacja na poziomie GPU (534)
- Interakcja z cieczÄ… (540)
- Materiały dodatkowe (542)
- Konkluzja (542)
- Literatura (543)
Rozdział 5.7 Szybkie oświetlanie poszczególnych pikseli w środowisku z wieloma źródłami światła (545)
- Rozwiązanie polegające na odkładaniu efektów oświetlenia na później (546)
- Implementacja odłożonego cieniowania dla najnowszych kart graficznych (547)
- Podstawowe techniki optymalizacji składowania danych (549)
- Optymalizacja shaderów i ograniczenia sprzętowe (552)
- Rozszerzanie efektów przetwarzania końcowego przestrzeni obrazu (555)
- Konkluzja (556)
- Literatura (556)
Rozdział 5.8 Rendering ostrych znaków drogowych (557)
- Wygładzanie krawędzi tekstur progowanych (559)
- Optymalne tekstury dla techniki progowania (564)
- Aplikacja autorska (568)
- Konkluzja i perspektywa rozwoju (571)
- Literatura (572)
Rozdział 5.9 Praktyczny rendering nieba na potrzeby gier komputerowych (573)
- Czego chcemy, a co mamy? (573)
- Co właściwie powinno się znaleźć na niebie? (575)
- Wąskie gardła (576)
- Wprowadzenie sześciennej mapy nieba (579)
- Skalowanie czasu (580)
- Analiza aplikacji demonstracyjnej (581)
- Kierunki rozwoju (582)
- Konkluzja (583)
- Literatura (584)
Rozdział 5.10 Rendering rozszerzonego zakresu jasności (HDR) z wykorzystaniem obiektów bufora klatek biblioteki OpenGL (585)
- Wprowadzenie do obiektów bufora klatek (585)
- Konstruowanie obiektów bufora klatek (587)
- Rendering rozszerzonego zakresu jasności (HDR) za pomocą obiektów bufora klatek (590)
- Konkluzja (592)
- Informacje dodatkowe (593)
- Literatura dodatkowa (593)
Część VI Audio (595)
Wprowadzenie (597)
Rozdział 6.1 Generowanie dźwięku w czasie rzeczywistym poprzez deformację siatkową brył sztywnych (599)
- Retrospekcja (599)
- Ogólne zasady (600)
- Podstawy analizy modalnej (601)
- Ograniczenia (603)
- Od deformacji do dźwięku (604)
- Konkluzja (605)
- Literatura zalecana (605)
- Literatura cytowana (606)
Rozdział 6.2 Prosty generator efektów dźwiękowych czasu rzeczywistego (607)
- Silnik akustyki otoczeniowej (607)
- Synteza dźwięku (608)
- Przykłady ze świata rzeczywistego (610)
- Konkluzja (612)
- Demo (613)
- Literatura cytowana (613)
Rozdział 6.3 Miksowanie dźwięku w czasie rzeczywistym (615)
- Niby nic, a jednak... (615)
- Implementacja łańcucha magistral (617)
- Miara głośności - stosunek natężeń albo decybele (619)
- Zapobieganie nieefektywności (620)
- Inne usprawnienie (620)
- Konkluzja (620)
- Literatura cytowana (621)
Rozdział 6.4 Zbiór potencjalnej słyszalności (623)
- PVS - podstawy (623)
- PAS - algorytm podstawowy (625)
- Bezpośrednie ścieżki dźwiękowe (625)
- Rozszerzenie na falÄ™ przechodzÄ…cÄ… (630)
- Rozszerzenie na falÄ™ odbitÄ… (631)
- Konkluzja (632)
- Literatura cytowana (632)
Rozdział 6.5 Tani efekt Dopplera (633)
- Zjawisko Dopplera (633)
- Programowanie efektu Dopplera (636)
- Zmienna prędkość (639)
- Aliasowanie (640)
- Implementacja (641)
- Konkluzja (641)
- Zasoby (641)
Rozdział 6.6 Preparowanie efektów specjalnych (643)
- Preparacja (643)
- Przykład: radio grające w pokoju (644)
- Krzywe stałej głośności (645)
- Zaawansowane sterowanie głośnością (646)
- Pliki wielościeżkowe i DirectSound (646)
- Koszty i korzyści (647)
- Konkluzja (647)
- Podziękowania (647)
Część VII Sieć i gry wielodostępne (649)
Wprowadzenie (651)
Rozdział 7.1 Dynamicznie adaptowalne strumieniowanie danych 3D dla animowanych postaci (653)
- Wprowadzenie (653)
- Podstawy i zagadnienia pokrewne (654)
- Przygotowywanie i tworzenie skalowalnych danych 3D (655)
- Sterowana kontekstem adaptacja wysyłanego strumienia (662)
- Konkluzja (664)
- Literatura cytowana (665)
Rozdział 7.2 Wysokopoziomowa architektura systemowa dla masywnych gier online (667)
- Systemy złożone i ich zachowanie wzbogacające (668)
- Architektura wielowarstwowa (668)
- Sprzężenie zwrotne w systemach decyzyjnych (680)
- Konkluzja (681)
- Literatura cytowana (681)
Rozdział 7.3 Generowanie unikalnych identyfikatorów globalnych dla obiektów gier (683)
- Wymagania dla identyfikatorów GUID (683)
- Generowanie GUID (685)
- Sytuacje wyjątkowe i ich obsługa (687)
- Konkluzja (688)
- Literatura cytowana (688)
Rozdział 7.4 Second Life jako narzędzie prototypowania gier MMOG (689)
- Wstęp (689)
- Dlaczego Second Life? (689)
- Second Life - zaczynamy! (693)
- Second Life jako narzędzie projektanta (693)
- Opracowywanie prototypu (695)
- Tringo - historia sukcesu (698)
- Konkluzja (698)
- Literatura cytowana (699)
Rozdział 7.5 Niezawodne połączenia TCP peer-to-peer w warunkach translacji NAT (701)
- Problem (701)
- RozwiÄ…zania (703)
- Realizacja (703)
- Zastosowania (708)
- Ograniczenia (709)
- Konkluzja (709)
- Literatura cytowana (710)
Skorowidz (711)