Code with Me
Zostań
Game Developerem
Nie
zaglądaj tu, nie warto! Stracisz tylko czas, na sto procent nie dowiesz
się niczego ciekawego, znudzisz się i będziesz rozczarowany, bo... z
pewnością nie chcesz dołączyć do prawdziwej elity
programistów, zdobyć poszukiwanych na rynku umiejętności,
nauczyć się czegoś naprawdę ekscytującego ani uzyskać wpływu na jedną z
najdynamiczniej rozwijających się gałęzi przemysłu komputerowego,
prawda?
Jeśli jednak mocno pragniesz zostać twórcą gier
komputerowych, dobrze trafiłeś! Ta książka powstała właśnie z myślą o
tych, którzy chcą rozpocząć karierę profesjonalnego game
developera. Bezboleśnie wprowadzi Cię w zagadnienia związane z
tworzeniem gier sieciowych 2D w językach: HTML5, PHP i MySQL. Nauczysz
się projektować oprogramowanie, dbać o jakość rozwiązania, opracowywać
niezbędne materiały graficzne i dźwiękowe, a nawet promować i
sprzedawać swoje dzieło.
- Niszczenie terenu jak w
grach Worms i Soldat
- Scrollowanie obrazu
(kamera 2D)
- Pseudooświetlenie (2D
lighting)
- Manipulowanie pikselami
(getImageData) i proste efekty, na przykład blur (rozmycie)
- Różne typy
kolizji, perfekcyjna kolizja (pixel perfect collision)
- System cząsteczek (efekty
2D): efekt gwiezdny (starfield effect), deszcz, śnieg, deszcz 3D, mgła
lub dym
- NW.js (node-webkit)
- Rysowanie prostych
kształtów, obrazków i sprite'ów
- Własny loader
plików
- Grawitacja
- Menu obsługiwane za pomocą
klawiatury lub myszy
Rozdział
1.
Wstęp
do gry 2D w HTML5 7
1.1. Zaczynamy 8
1.1.1. Jeden kod na wszystkie platformy 8
1.1.2. Narzędzia oraz konfiguracja (Notepad++), tworzenie kopii 8
1.2. Klocki 8
1.2.1. Świat gry (canvas, inicjalizacja) 9
1.2.2. Pętla 9
1.2.3. Rysujemy kwadrat, kółko, trójkąt, linie 11
1.2.4. Rysujemy gracza 19
1.2.5. Skalowanie obrazków 20
1.2.6. Skalowanie świata gry i obiektów (proporcjonalnie) 21
1.2.7. Rotacja 22
1.2.8. Sterowanie klawiaturą 26
1.2.9. Ulepszone sterowanie klawiaturą 29
1.2.10. Prosta kolizja z innym obiektem, np. apteczką 30
1.2.11. Poruszanie się w kierunku, w którym
obrócona jest postać (klawiatura/mysz) 37
1.2.12. Kolizja kółka z kwadratem i kółka z
kółkiem 42
1.2.13. Kolizja piksel po pikselu 47
1.2.14. Odległość między obiektami 65
1.2.15. Sterowanie wrogami 65
1.2.16. Proste strzelanie 70
1.2.17. Strzelanie z obrotem (wycentrowane) 77
1.2.18. Strzelanie z obrotem (ustawienia offsetu na obrazku) 79
1.2.19. Pasek zdrowia (dowolny rozmiar) 83
1.2.20. Obsługa myszy 85
1.2.21. Menu i opcje 92
1.2.22. Animacja poklatkowa 112
1.2.23. Pseudooświetlenie 116
1.2.24. Proste efekty - własny blur, blur CSS, glitch 121
1.2.25. Mikrofon 125
1.2.26. Sterowanie kontrolerem (gamepad) 126
1.2.27. Zaznaczanie postaci (ruch RTS) 130
1.2.28. Prosty system cząsteczek 132
1.2.29. Układ Słoneczny (orbity) 150
1.2.30. Grawitacja i jej różne zastosowania 151
1.2.31. Ratio 16×9 176
1.2.32. Loading bar i dźwięki 178
1.2.33. Okrągły pasek postępu 194
1.2.34. Lupa 196
1.2.35. Save game i load game 197
1.2.36. Licznik FPS 204
1.2.37. Ekwipunek 207
1.2.38. Kamera 209
1.2.39. Nie rysujemy tego, czego nie widzi gracz 215
1.2.40. Ściszenie dźwięków i (lub) muzyki 221
1.2.41. Centrowanie tekstu lub obrazka 223
1.2.42. Rozjaśnianie obrazu w JavaScripcie 227
1.2.43. Clip() na przykładzie textboksa a la Final Fantasy 234
1.2.44. Prerenderowanie (bufor) 238
1.3. Budujemy grę z klocków 240
1.3.1. Struktura plików naszej gry 241
1.3.2. Tworzymy grę 241
1.3.3. Tworzymy build dla Windows, Linuksa i macOS 252
1.4. Dodatki JS 253
1.4.1. Konsola dewelopera 253
1.4.2. Lista poszczególnych błędów w JS 254
1.4.3. Sztuczki w JavaScripcie 254
1.4.4. Klonowanie (referencje) 255
1.4.5. Zasięg zmiennych 259
1.4.6. This/self 261
1.4.7. jQuery kontra JavaScript 262
1.4.8. Dobra praktyka (anonimowa funkcja, window, zmienne globalne) 264
1.4.9. Komentarze blokowy i liniowy 265
1.4.10. setTimeout i dlaczego lepiej nie używać go w grach 267
1.4.11. Dlaczego requestAnimationFrame zamiast setInterval? 268
1.5. Dodatki NW.js 269
1.5.1. Edycja package.json 269
1.5.2. Steam overlay (nakładka) 270
1.5.3. Osiągnięcia Steam (greenworks) 270
1.5.4. Lepsza wydajność NW.js 275
1.5.5. Zmiana ikony aplikacji NW.js 275
1.6. Dodatki Notepad++ 278
1.6.1. Wtyczki 278
1.6.2. Polskie znaki lub kodowanie 278
1.6.3. Konfiguracja kopii zapasowej 279
Rozdział 2.
Wstęp
do gier online 281
2.1. Zaczynamy. Prosta gra tekstowa 282
2.1.1. Konfiguracja serwera XAMPP 282
2.1.2. Świat gry 283
2.1.3. Tworzenie tabeli MySQL 287
2.1.4. Rozbudowa naszego menu 288
2.1.5. Zadania cron 295
2.2. Wstęp do gry kółko i krzyżyk online (PHP/AJAX) 297
2.2.1. Zaczynamy! 297
2.3. Wstęp do kwadracików online (PHP/AJAX) 303
2.3.1. Zaczynamy! 304
Rozdział 3.
Zarządzanie
jakością oprogramowania 311
3.1. Optymalizacja 312
3.1.1. 300 MB kontra 60 MB 312
3.1.2. Jsperf 313
3.2. Testowanie 313
3.2.1. Jak testować 313
3.2.2. Co zrobić, gdy nie możemy znaleźć błędu? 314
3.2.3. Gamepady mogą mieć inne wartości 314
3.2.4. Najlepiej tworzyć pod low-end 314
3.3. Telemetria - śledzenie gracza 315
3.3.1. Jakie dane są wysyłane? 315
3.3.2. Prosta telemetria 315
Rozdział 4.
Projektowanie gry 317
4.1. Początek 318
4.1.1. Trudne czy łatwe gry? 318
4.1.2. Gry 2D czy 3D? 318
4.1.3. Struktura plików 318
4.1.4. Gry to zabawa, nie twórz realnych gier 319
4.1.5. Programować czy korzystać z darmowych programów do
tworzenia gier? 319
4.2. Zawartość gry 319
4.2.1. Kubek też ma swoją historię 320
4.2.2. Postacie 320
4.2.3. Dźwięki otoczenia 320
4.2.4. Lockit 320
4.2.5. Przykładowy scenariusz gry 321
4.2.6. Ostatni nabój - manipulowanie graczem 323
4.2.7. Licencje i uznania autorów na przykładzie Game Dev
Tycoon oraz ich omówienie 323
Rozdział 5.
Promocja gry 325
5.1. Gdzie promować grę 326
5.2. Na własną rękę 326
5.3. Wydawca 326
5.4. Agencje reklamowe 327
5.5. Keymailer 327
5.6. Platformy 327
Rozdział 6.
Materiały
promocyjne 329
6.1. Tworzenie materiałów 330
6.2. Press-kit 330
6.3. Trailer 330
6.4. Teaser 330
6.5. Strona WWW 330
Rozdział 7.
Tworzenie zasobów
331
7.1. Programy do tworzenia grafiki 332
7.2. Programy do tworzenia muzyki i dźwięków 332
7.3. Tworzenie prostych dźwięków, modyfikacja 332
7.4. Usuwanie szumu 336
7.5. Skąd brać darmową muzykę, dźwięki oraz grafikę do wykorzystania
komercyjnego? 338
Rozdział 8.
Inne 341
8.1. Zakuj, naucz się i zapomnij... Zapomnij! 342
8.2. Kopia, kopia i jeszcze raz kopia! 342
8.3. Lista programów do tworzenia gier 342
8.4. Notepad++, użyteczne wtyczki Compare, ColorPicker 343
8.5. Steam - wgrywanie gry (konsola + skrypty) 345
8.6. GIF, MP4/AVI jako animowany obrazek APNG (opis Steam) 349
Zakończenie 351
352 strony, Format: 17.0x24.0cm, oprawa miękka