Java Tworzenie gier.pdf

(786 KB) Pobierz
C:\Andrzej\PDF\ABC nagrywania p³yt CD\1 strona.cdr
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Java. Tworzenie gier
SPIS TRECI
KATALOG KSI¥¯EK
Autorzy: David Brackeen, Bret Barker, Laurence Vanhelsuwe
T³umaczenie: S³awomir Dzieniszewski (rozdz. 7, 8, 12),
Pawe³ Gonera (rozdz. 1 – 6, 14 – 16), Miko³aj
Szczepaniak (rozdz. 9 – 11, 13, 17 – 19)
ISBN: 83-7361-411-7
Tytu³ orygina³ u: Developing Games in Java
Format: B5, stron: 756
Przyk³ady na ftp: 4924 kB
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Wykorzystaj do tworzenia gier
najpopularniejszy jêzyk programowania ery internetu
Java jest nowoczesnym i prostym jêzykiem programowania zorientowanym obiektowo.
Trudno nie doceniaæ jej zalet — czytelna i zrozumia³a sk³adnia, uniwersalny, niezale¿ny
od platformy kod i przede wszystkich bezp³atny dostêp do doskona³ych narzêdzi
programistycznych. Javê doceni³o ju¿ wielu twórców oprogramowania, wród których
brakowa³o jednak twórców gier i aplikacji „rozrywkowych”. Dotychczas w Javie
tworzono jedynie proste uk³adanki, gry karciane i ³amig³ówki lub niemiertelne aplety
typu „padaj¹cy nieg”, które przez d³ugi czas straszy³y nas z przegl¹darek
internetowych. Czas na zmianê! Wykorzystaj swoje umiejêtnoci programowania
w Javie, siêgnij po wiadomoci zawarte w tej ksi¹¿ce i napisz prawdziw¹ grê —
z grafik¹, inteligentnymi przeciwnikami, wydajnym silnikiem 3D wspomaganym
sprzêtowo i przestrzennym dwiêkiem.
„Java. Tworzenie gier” to ksi¹¿ka o programowaniu gier, na jak¹ czeka³e. Zawiera
zarówno opis podstawowych mechanizmów u¿ywanych w grach, jak i szczegó³owe
omówienie zaawansowanych technik. Dowiesz siê, jak wykorzystaæ platformê Java 1.4
do tworzenia szybkich, pe³noekranowych gier akcji, przygodówek i trójwymiarowych
strzelanek. Nauczysz siê tworzyæ wspomagan¹ sprzêtowo grafikê, algorytmy sztucznej
inteligencji i znajdowania drogi, realistyczne efekty dwiêkowe i mechanizmy obs³ugi
gry dla wielu graczy.
• Algorytmy wywietlania grafiki 2D
• Tworzenie interfejsu u¿ytkownika z wykorzystaniem komponentów Swing
• Programowanie efektów dwiêkowych dzia³aj¹cych w czasie rzeczywistym
• Klient i serwer gry wieloosobowej
• Wywietlanie grafiki 3D
• Mapowanie tekstur i symulacja owietlenia
• Drzewa BSP
• Algorytmy detekcji kolizji i wykrywania drogi
• Sztuczna inteligencja i tworzenie botów
• Zapisywanie stanu gry
• Optymalizacja kodu
• System sterowania gr¹
Udowodnij „fachowcom” krytykuj¹cym szybkoæ Javy, ¿e nie maj¹ racji.
Napisz wspania³¹ grê w Javie. W tej ksi¹¿ce znajdziesz wszystkie wiadomoci,
które s¹ do tego niezbêdne.
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
6886539.001.png 6886539.002.png 6886539.003.png
Spis treci
O Autorze ........................................................................................ 15
Wstp ............................................................................................. 17
Cz I Podstawy gier w jzyku Java ..........................................25
Rozdział 1. Wtki w jzyku Java ........................................................................ 27
Co to jest wtek? ...............................................................................................................28
Tworzenie i uruchamianie wtków w jzyku Java............................................................28
Rozszerzanie klasy Thread.........................................................................................29
Implementacja interfejsu Runnable ............................................................................29
U'ycie anonimowej klasy wewntrznej......................................................................29
Oczekiwanie na zako)czenie wtku ...........................................................................30
U,pione wtki .............................................................................................................30
Synchronizacja ..................................................................................................................30
Po co nam synchronizacja?.........................................................................................30
Jak synchronizowa/? ..................................................................................................31
Kiedy nale'y synchronizowa/?...................................................................................32
Kiedy nie synchronizowa/?........................................................................................33
Unikanie zakleszcze)..................................................................................................33
U'ycie wait() oraz notify()................................................................................................34
Model zdarze) Javy...........................................................................................................35
Kiedy u'ywa/ wtków? ....................................................................................................36
Kiedy nie u'ywa/ wtków?...............................................................................................36
Podsumowanie: pule wtków............................................................................................36
Podsumowanie ..................................................................................................................41
Rozdział 2. Grafika 2D oraz animacja ................................................................. 43
Grafika pełnoekranowa .....................................................................................................44
Układ ekranu...............................................................................................................44
Kolor piksela i głbia koloru.......................................................................................45
Czstotliwo,/ od,wie'ania .........................................................................................46
Przełczanie do trybu pełnoekranowego ....................................................................46
Anti-aliasing................................................................................................................50
Który tryb graficzny nale'y zastosowa/? ...................................................................51
Rysunki..............................................................................................................................52
Przezroczysto,/...........................................................................................................52
Formaty plików...........................................................................................................52
Odczytywanie rysunków.............................................................................................53
6
Java. Tworzenie gier
Rysunki przyspieszane sprztowo ..............................................................................56
Program testujcy wydajno,/ rysowania rysunków ...................................................58
Animacja.....................................................................................................................61
Renderowanie aktywne...............................................................................................64
Ptla animacji..............................................................................................................64
Usuwanie migotania i szarpania........................................................................................67
Podwójne buforowanie ...............................................................................................67
Przełczanie stron .......................................................................................................68
Od,wie'anie monitora i szarpanie ..............................................................................70
Klasa BufferStrategy...................................................................................................70
Tworzenie zarzdcy ekranów .....................................................................................71
Duszki .........................................................................................................................78
Proste efekty......................................................................................................................84
Przekształcenia rysunków...........................................................................................84
Podsumowanie ..................................................................................................................89
Rozdział 3. Interaktywno() i interfejs u*ytkownika ............................................. 91
Model zdarze) AWT.........................................................................................................94
Zdarzenia klawiatury.........................................................................................................95
Zdarzenia myszy ...............................................................................................................99
Przesuwanie myszy metod „rozgldania si”................................................................103
Ukrywanie wskaFnika myszy ...................................................................................107
Tworzenie klasy InputManager.......................................................................................108
Zastosowanie obiektu InputManager ..............................................................................119
Zatrzymywanie gry...................................................................................................119
Dodajemy grawitacj ................................................................................................120
Projektowanie intuicyjnych interfejsów u'ytkownika....................................................125
Wskazówki do projektu interfejsu u'ytkownika.......................................................126
Wykorzystanie komponentów Swing..............................................................................127
Podstawy Swing........................................................................................................127
Stosowanie Swing w trybie pełnoekranowym..........................................................128
Tworzenie prostego menu...............................................................................................130
Konfiguracja klawiatury przez u'ytkownika ..................................................................135
Podsumowanie ................................................................................................................141
Rozdział 4. Efekty d-wikowe oraz muzyka....................................................... 143
Podstawy dFwiku...........................................................................................................144
API Java Sound...............................................................................................................144
Otwieranie pliku dFwikowego ................................................................................145
Zastosowanie interfejsu Line....................................................................................145
Odtwarzanie dFwików...................................................................................................146
Tworzenie architektury filtrów działajcych w czasie rzeczywistym.............................151
Tworzenie filtra „echo”, działajcego w czasie rzeczywistym.......................................155
Emulacja dFwiku 3D .....................................................................................................159
Mechanizmy potrzebne do tworzenia filtra 3D ........................................................160
Implementacja filtra 3D............................................................................................161
Testowanie filtra 3D .................................................................................................163
Tworzenie obiektu zarzdzajcego dFwikiem...............................................................167
Klasa Sound..............................................................................................................167
Klasa SoundManager................................................................................................168
Zmienne lokalne dla wtków....................................................................................175
Odtwarzanie muzyki .......................................................................................................176
Odtwarzanie dFwiku CD.........................................................................................177
Odtwarzanie plików MP3 i Ogg Vorbis ...................................................................177
Spis treci
7
Odtwarzanie muzyki MIDI.......................................................................................178
Tworzenie muzyki adaptacyjnej ...............................................................................182
Podsumowanie ................................................................................................................184
Rozdział 5. Tworzenie dwuwymiarowej gry platformowej ................................... 185
Tworzenie mapy zło'onej z kafelków.............................................................................186
Implementacja mapy korzystajcej z kafelków........................................................187
Ładowanie mapy zło'onej z kafelków......................................................................190
Rysowanie mapy zło'onej z kafelków......................................................................193
Rysowanie duszków..................................................................................................195
Przewijanie z paralaks.............................................................................................195
Premie .......................................................................................................................197
Proste obiekty wrogów .............................................................................................200
Wykrywanie kolizji.........................................................................................................207
Detekcja kolizji.........................................................................................................207
Obsługa kolizji..........................................................................................................208
Kolizje duszków........................................................................................................212
Doko)czenie i przyspieszanie gry...................................................................................213
Tworzenie wykonywalnego pliku .jar.............................................................................213
Pomysły na rozszerzenie gry...........................................................................................215
Podsumowanie ................................................................................................................216
Rozdział 6. Gry wieloosobowe .......................................................................... 217
Rewolucja w bibliotekach wej,cia-wyj,cia w jzyku Java.............................................219
Przegld bibliotek NIO z JDK 1.4............................................................................220
Kanały.......................................................................................................................220
Bufory .......................................................................................................................223
Selektory oraz klasy SelectionKey ...........................................................................226
ChatterBox, prosta aplikacja dla wielu u'ytkowników...................................................227
Serwer: ChatterServer...............................................................................................227
Kompilowanie i uruchamianie serwera ....................................................................233
Klient: ChatterClient.................................................................................................235
Kompilowanie i uruchamianie klienta......................................................................236
Szkielet serwera gry wieloosobowej...............................................................................237
Cele projektu i taktyka..............................................................................................237
Projekt.......................................................................................................................238
Wspólne klasy i interfejsy.........................................................................................242
Implementacja serwera .............................................................................................244
Klient.........................................................................................................................252
Przykładowa gra: RPS (kamie), papier, no'yczki).........................................................253
Klasy .........................................................................................................................253
Uruchamianie gry RPS .............................................................................................256
Wyko)czanie gry: rozbudowa szkieletu .........................................................................258
Interfejs klienta .........................................................................................................258
Trwało,/....................................................................................................................258
Listy znajomych, pokoje i czat .................................................................................258
Administracja serwera.....................................................................................................259
Rejestracja zdarze) ...................................................................................................259
Uruchamianie i wyłczanie.......................................................................................260
Konsole administracyjne serwera .............................................................................261
Nledzenie gry.............................................................................................................261
Zagadnienia zaawansowane............................................................................................262
Rozłczenia i ponowne połczenia...........................................................................262
Tunelowanie HTTP...................................................................................................263
8
Java. Tworzenie gier
Testowanie za pomoc botów...................................................................................265
Te niezno,ne modemy ..............................................................................................266
Profilowanie i tworzenie statystyk wydajno,ci.........................................................266
Dostrajanie wydajno,ci.............................................................................................268
Podsumowanie ................................................................................................................270
Cz II Grafika trójwymiarowa
i zaawansowane techniki programowania gier ...............271
Rozdział 7. Grafika trójwymiarowa ................................................................... 273
Typy renderowania grafiki trójwymiarowej ...................................................................274
Nie zapominajmy o matematyce.....................................................................................275
Trygonometria i trójkty prostoktne .......................................................................276
Wektory.....................................................................................................................276
Podstawy grafiki trójwymiarowej...................................................................................281
Algebra trzech wymiarów...............................................................................................284
Wielokty ........................................................................................................................289
Przekształcenia przestrzeni trójwymiarowej...................................................................292
Rotacje ......................................................................................................................293
Hermetyzacja przekształce) rotacji i translacji.........................................................295
Stosowanie transformacji..........................................................................................298
Porzdek rotacji ........................................................................................................300
Prosty potok tworzenia grafiki 3D ..................................................................................301
Ruch kamery ...................................................................................................................305
Bryły i usuwanie niewidocznych powierzchni................................................................305
Iloczyn skalarny wektorów.......................................................................................307
Iloczyn wektorowy wektorów...................................................................................308
Dodatkowe wła,ciwo,ci iloczynu skalarnego i wektorowego..................................311
Rysowanie wieloktów za pomoc konwertera skanujcego .........................................312
Optymalizowanie konwertera skanujcego za pomoc liczb stałoprzecinkowych ..317
Przycinanie w trzech wymiarach.....................................................................................321
Ostateczny potok renderowania ......................................................................................324
Podsumowanie ................................................................................................................332
Rozdział 8. Mapowanie tekstur i o(wietlenie .................................................... 333
Podstawy mapowania tekstur uwzgldniajcego perspektyw.......................................334
Wyprowadzenie równa) wykorzystywanych do mapowania tekstur.......................335
Prosty mechanizm mapowania tekstur............................................................................340
Wady naszego prostego mechanizmu renderujcego ...............................................347
Optymalizowanie mapowania tekstur.............................................................................348
Przechowywanie tekstur ...........................................................................................349
Prosta optymalizacja.................................................................................................352
Rozwijanie metod w miejscu wywołania .................................................................356
Przykładowy program korzystajcy z szybkiego mapowania tekstur ......................358
Prosty mechanizm generowania o,wietlenia...................................................................359
Odbicie rozproszone .................................................................................................359
Nwiatło otoczenia......................................................................................................360
Uwzgldnianie intensywno,ci ,wiatła pochodzcego ze Fródła ,wiatła ..................360
Spadek intensywno,ci ,wiatła wraz z odległo,ci....................................................360
Implementowanie punktowego Fródła ,wiatła..........................................................361
Implementowanie o,wietlania tekstur.............................................................................362
Tworzenie zaawansowanych trików o,wietleniowych za pomoc map cieniowania.....369
Odnajdywanie prostokta ograniczajcego...............................................................369
Stosowanie mapy cieniowania..................................................................................371
Zgłoś jeśli naruszono regulamin