Dla kogo dedykowana jest książka Unity AI Game Programming i czy w ogóle warto ją kupić?

Biblioteka polskojęzycznych książek w dziedzinie GameDevu jest bardzo uboga. Spokojnie można policzyć wszystkie tytuły z wykorzystaniem palców u dłoni. Dlatego czasami warto sięgnąć nieco dalej i wyposażyć się w tytuły bazujące na języku angielskim.

Ja właśnie tak postanowiłem zrobić podejmując temat sztucznej inteligencji w grach komputerowych. Mój wybór padł na książkę Unity AI Game Programming, autorstwa: Ray Barrera, Clifford Peters, Aung Sithu Kyaw, Thet Naing Swe.

O Autorach

Autorów jest kilku i posługując się danymi z książki opiszę ich w paru słowach:

Ray Barrera – facet, który zaczynał amatorsko bawiąc się w modowanie i tworzenie map do takich gier jak Starcraft czy Unreal Tournament. Obecnie jest ważnym ogniwem społeczności Unity, organizując Unity meetup w Los Angeles, oraz koordynuje współpracę Unity z uczelniami.

Aung Sithu Kyaw – pracował jako programista nad różnymi grami, ale głównie interesował go rozwój technologii, bardziej angażował się w projekty badawcze nad kontrolerami ruchu.

Clifford Peters – programista i recenzent większości książek dotyczących Unity w ofercie wydawnictwa Packt Publishing.

Thet Naing Swe – zaczynał jako programista gier na Nintendo DS, obecnie pracuje jako CTO w Joy Dash (Singapur), gdzie pracuje nad rozszerzoną rzeczywistością, grami edukacyjnymi i casualowymi, wykorzystując Unity3d.

O czym jest ta książka?

Książka podzielona jest łącznie na 8 rozdziałów. Pierwszy wprowadza nas ogólnie w zagadnienia sztucznej inteligencji i jest swojego rodzaju streszczeniem wszystkich późniejszych rozdziałów. Ostatni za to, prezentuje prosty przykład gry, gdzie jeździmy czołgiem po labiryncie z wieżyczkami niejako podsumowując całą książkę i zbierając wszystko do kupy. Dlatego te rozdziały pominę w dokładniejszym opisie.

Drugi rozdział książki poświęcony jest maszynom stanów skończonych, czyli prawdopodobnie najprostszej metodzie stworzenia sztucznej inteligencji. Jesteśmy krok po kroku przeprowadzani przez proces tworzenia systemu, który pozwoli przeciwnikowi na patrolowanie terenu oraz reakcję na zobaczenie gracza. Pokazuje nam, jak dzięki narzędziom Unity możemy sobie usprawnić proces tworzenia takiej maszyny.

W kolejnym rozdziale poznajemy sensory. Uczymy się jakie dane i jak wykorzystać, aby symulować odbieranie bodźców z otoczenia. Mówiąc prościej: jak zrobić wzrok, słuch, radar etc. Oczywiście nie dostajemy wszystkich przykładów na srebrnej tacy. Autorzy pokazują jedynie wzrok, słuch i dotyk. Inne możliwości są krótko omówione. Metoda tworzenia wzorku, była już przeze mnie omówiona.

Następny rozdział omawia nam metody znajdowania ścieżki, a dokładniej dwie z metod: algorytm A* (A-star) oraz NavMesh. Pierwszy z nich to klasyczny algorytm znajdowania ścieżki w grafie. Tutaj mamy go w bardzo uproszczonej, ale elastycznej formie – omija przeszkody tylko o kształcie sześcianu, ale możemy dowolnie manipulować rozmiarem siatki. Metodę z NavMeshem zna pewnie każdy, kto choć trochę pracował w Unity. Nie ma tu bardzo rozbudowanych przykładów, ani kodu, bo większość roboty wykonuje za nas Unity.

Rozdział piąty to „Ptaki i Tłumy”. Temat ptaków sprowadza się do zaprezentowania kilku metod stworzenia stada ptaków (lub ławicy ryb – tzw. algorytmy stadne), tak żeby na siebie wzajemnie nie wpadały i krążyły w okół pewnego punktu. Bez cudów jeśli chodzi o mechanikę rozgrywki, ale można to fajnie wykorzystać dla stworzenia klimatu. Tłumy to już kwestia ciekawsza, bo pokazuje jak kontrolować dużą ilość agentów, aby przemieścili się z punktu A do punktu B, bez wchodzenia na siebie.

Kolejny rozdział również częściowo omówiłem na blogu, a dotyczy drzew decyzyjnych. Teoria jest omówiona tutaj bardzo dobrze, ale pokazany przykład, to tyle ile widzicie w blogowym wpisie, autorzy zaproponowali jedynie pseudo kalkulator. Bardziej zaawansowane zastosowanie drzew decyzyjnych wymaga od nas dodatkowej pracy i inwencji własnej.

Przedostatni rozdział porusza temat logiki rozmytej. Poruszana jest bardziej teoria zastosowania tej techniki. Mówiąc krótko, logika rozmyta dodaje odcienie szarości – zamiast systemu binarnego: 0 lub 1, mamy przedział od 0 do 1, gdzie dopuszczamy ułamki. Opis poparty jest przykładami, więc można to łatwiej zrozumieć oraz pokazano jak zaimplementować podstawy w Unity3d.

Wada całości? Napisana w języku angielskim i dostępna tylko zza granicy.

Dla kogo jest ta książką?

Książkę mogę szczerze polecić każdej osobie, która chciałaby poznać podstawy programowania sztucznej inteligencji. Nie mamy tutaj bardzo zaawansowanych technik, a solidnie opisane podstawy, w tym metody najpowszechniejsze. Zarzucić mogę kiepską jakość materiałów do pobrania. Wszelkie omawiane przykłady, są dostępne do pobrania, ale gdy próbowałem je wykorzystać nie bardzo działały i wolałem przepisać kod z książki.

Bolesny może być wymóg znajomości języka angielskiego, szczególnie może się przydać odrobina technicznego angielskiego. Mam wrażenie, że część osób operujących podstawowym angielskim, mogłaby mieć problem ze zrozumieniem tytułów rozdziałów, bez pomocy słownika. Oczywiście nie wymaga się tutaj znajomości języka na poziomie 5 lat stażu w instytucie fizyki jądrowej w stanach, a raczej rozumienie podstawowego słownictwa związanego z informatyką.

Druga sprawa, to fakt, że książka dedykowana jest Unity3d. Więc jeśli szukasz czegoś bardziej ogólnego, albo pod inny silnik, to ten tytuł nie będzie najlepszym rozwiązaniem, bo w kilku przypadkach omawia narzędzia dostępne tylko w silniku Unity3d.

Druga bolesna sprawa to cena. Dostępna jest na Allegro za około 300zł. Tańszy wariant to kupienie zza granicy e-booka.

  • Jestem świadomy tej promocji i jak tylko się pojawia tydzień GameDev i sam go nie przegapię, to staram się informować na fanpage o możliwości dorwania darmowych e-booków. ;)