E-book details

Code with me. Zostań game developerem

Code with me. Zostań game developerem

Krzysztof Pianta

Ebook

Projektuj, programuj, promuj! Zostań twórcą gier komputerowych!

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

Zrób pierwszy krok na drodze do profesjonalnej kariery!


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

  • Title: Code with me. Zostań game developerem
  • Author: Krzysztof Pianta
  • ISBN: 978-83-283-7013-5, 9788328370135
  • Date of issue: 2020-03-17
  • Format: Ebook
  • Item ID: codeme
  • Publisher: Helion