Simulácia kolektívneho športu pomocou
umelej inteligencie

11.06.2013

Prezentácia na obhajobu, video

Posledné dva týždne som popri skúškach konzultoval so školiteľom prezentáciu na obhajovu práce. Pripravil som cca 2 minútové video s preview aplikácie.

Do časti Práca pribudli na stiahnutie 2 PDF dokumenty. Finálny text práce, ktorý som odovzdal a prezentácia na obhajobu.

31.05.2013

Odovzdanie

Po posledných dvoch týždňoch, ktoré som strávil písaním textovej časti, som dnes prácu odovzdal. Výsledok činí dokument o 64 stranách.

15.05.2013

Tímové bránenie & Písanie textu

Po poslednej velkej úprave sú hráči schopní tímovo brániť. Posledné testovania ukazujú prijatelné výsledky.

Po niekoľkomesačnej prestávke od písania textu práce, keď som primárne programoval aplikáciu, som sa opäť pustil do jej písania. Po dôkladnom zvážení a dohode so školiteľom som sa rozhodol výrazne obmeniť doterajší obsah východiskovej kapitoly a väčšinu doteraz napísaného píšem odznova. To zapríčilo časový sklz v písaní oproti pôvodnému plánu, no na druhej strane verím, že bude práca o to kvalitnejšia.

Aby som nezabudol, začínam aplikáciu pripravovať na prezentovanie a záverečné testovanie spojené so zbieraním štatistík. To obnáša nateraz testovacie scenáre, ale v najbližších dňoch pribudnú ďalšie časti.

08.05.2013

Spolupráca agentov & Heat mapy (oprava)

Aktuálne pracujem na spolupráci agentov v rámci tímu. Povýšil som preto agenta na verziu "Teammate". V tejto novej verzii sa naučili hráči útočiť synchronizovane, to znamená nezavadzať si pri útočení, ísť cestou optimálnou pre ich pozíciu so snahou maximalizovať výhodnosť vybratého miesta a neporušiť pri tom offside-ové pravidlo. Pri tejto verzii agenta testujem chovanie s plnými piatimi hráčmi na jednej strane, pričom vždy jeden má puk a snaží sa ho dostať do útočného pásma.

Čo sa týka ďalšieho vylepšovania agenta, tieto dni pracujem na tímovom bránení a celkovom chovaní tímu, keď nikto z hráčov daného tímu nemá puk.

Okrem toho som opravil chyby pri skenovaní heat máp, na ktoré som narazil po ich úprave v grafickom editore. Taktiež som pridal možnosť určiť typ agenta konkrétneho hráča priamo v zostávach, čo v budúcnosti umožní kombinovať rôzne typy v rámci tímu.

01.05.2013

Obranca, Útočník, Kolízia s pukom, optimalizácie

Predošlá verzia agenta bola povýšená na novú verziu "Defender", kde agent vníma stav sveta a rozlišuje medzi útočením a bránením. Rozšíril sa preto aj strom rozhodovania. Agent sa naučil brániť, s čím súvisí výber miesta a schopnosť rozhodnúť sa, kedy ísť obrať útočníka o puk. Útočník sa naučil vyhýbať obrancovi, teda hladať alternatívny ciel a cestu. Prioritu pri testovaní dostalo vedenie puku a teda vyhýbanie sa, čím sa mi trochu pokazilo rozhodovanie o strelbe, ktoré je teraz menej časté. Pribudla vylepšená kolízia hráča s pukom, rozšírená o odraz puku a vypichnutie.

Úvodné rozostavenie hráčov sa načítava zo zostáv, hráči už môžu mať rozdielnu rýchlosť. Refaktoroval som handling heat máp a optimalizoval ho. Taktiež som zapracoval na optimalizácií výkonu, keďže aplikácia začala sekať nie len v iOS Simulátore ale aj na zariadení. Vďaka pomocnej aplikácií Instruments sa mi podarilo nájsť niektoré kritické miesta a optimalizovať ich (či už ide o OpenGL alebo výpočty pri rozhodovaní), čo výrazne pomohlo, ale stále to nestačí.

24.04.2013

Tímy, Rozhodovanie, Strelec & zdržanie

Posledné dva týždne bohužial značne ovplyvnilo, že som ochorel a pokazil sa mi počítač, takže vývoj bakalárky sa na pár dní zastavil. Našťastie, všetko je už v poriadku a vývoj pokračuje.

Teraz z tých praktických vecí, ako som sa posunul. Prvou novinkou je vyrábanie hráčov zo zostáv (Property List), kde sa priamo delia na 2 tímy. Hráčom tiež pribudli skilly reprezentujúce schopnosti (napríklad Presnosť strely) pre konkrétne výpočty. Pribudli tiež Brankári na oboch stranách.

V novej verzii agenta pribudol rozhodovací strom, ktorý nesie v listoch množinu prípustných akcií na vykonanie. Agent na základe stavu sveta získa zo stromu množinu akcií, ktoré následne ohodnotí (výhodnosť vykonania každej) a podľa toho vykoná tú akciu, ktorá mu príde najvýhodnejšia. Takýmto spôsobom sa mi podarilo zatiaľ vyrobiť agenta, ktorého pracovne volám "Sniper" (Strelec). Jeho úlohou je útočiť na súperovu bránu, vystreliť v najvhodnejší moment a dať čo najviac gólov.

V krátkosti spomeniem ešte opravu chýb v detekcii kolízie a pathfindingu, čo spôsobovalo ojedinelé pády aplikácie a spomalovanie agenta v okolí za bránou.

Aaa.. taká maličkosť pre vlastné potešenie. Pribudla informačná tabuľa :)

09.04.2013

Rozpohybovanie, kolízie, puk & Oprava chýb

Počas posledných dvoch týždňov som sa venoval v prvom rade rozpohybovaniu agenta. To znamená: handling a skenovanie heat máp, pridanie heuristiky do A* a algoritmy na riadené správanie (Steering Behaviors). Ako sa pri testovaní ukázalo, aplikácia začala občasne padať a agent sa v špeciálnych prípadoch zacyklil pri pohybe. Po niekolkonásobnom prepísaní algoritmov sa mi podarilo problémy odstrániť.

Okrem toho som sa venoval pridaniu puku do simulácie, s čím priamo súvisí detekcia kolízií a následný dopad na odraz a rýchlosť objektu. Snažil som sa to urobiť dostatočne všeobecne v rámci aplikácie, aby bolo možné túto detekciu neskôr využiť aj pri iných veciach ako len odraz od mantinelu.

Pridal som do projektu ešte drobnosť v podobe rozšírenia Debug Mode o možnosť prepínania heuristiky medzi pozíciami (Obranca, Krídlo, Center). Znásobil som efekt heuristiky a je pekne vidieť rozdiely vo vyhladaných cestách.

26.03.2013

Oprava Funnela

Opravil som niekoľko chýb v pathfindingu, kde sa ako zdroj problému ukázal Funnel algoritmus, respektívne moja implementácia. Pre predstavu išlo prevažne o prípady, kedy pathfinding nachádzal cesty krížiace prekážky, alebo tento konkrétny prípad, kedy vyšla úplne podivná cesta.

Prezentáciu Plánu a postupu práce zo seminára 21.3. nájdete TU [PDF]

19.03.2013

Funnel algoritmus

Keďže na poslednom seminári ku bakalárskej práci som sa nedostal na rad s Plánom a postupom práce, rozhodol som sa prepracovať prezentáciu na základe postrehov z prezentácií mojich spolužiakov. Školitelovi sa zmeny páčili a pridal aj svoje vlastné, ktoré som zapracoval do prezentácie.

Od minulého týždňa som doprogramoval Funnel algoritmus a otestoval ho. Jeho fungovanie som vysvetlil škotelovi a odprezentoval na zariadení v Debug Mode. Pri prezentácii sme narazili sme chyby pathfindingu, ktoré mi pri testovaní unikli.

12.03.2013

Polygonal Mesh & A*

Na stretnutie so školiteľom som priniesol iPad a prebrali sme doterajšiu funkcionalitu, ktorú som od posledného stretnutia implementoval. Odprezentoval som mu A* prehladávanie na polygonal mesh v Debug Mode (UIView, ktorý som pre testovacie účely pridal do aplikácie), s čím bol školiteľ spokojný. Druhou témou bol bakalársky seminár, na ktorý si mám pripraviť prezentáciu Plánu a postupu práce. Diskutovali sme o našich predstavách osnovy a obsahu prezentácie.

06.03.2013

Prvé testovanie na iPade

Po peripetiách so schvalovacím procesom sa podarilo nainštalovať a spustiť bakalársku prácu na iPade. Prvé testovanie prebehlo úspešne. Nenašiel som žiadne chyby oproti behu v iOS Simulátore a aplikácia beží aj na staršom zariadení svižne.

05.03.2013

Študentský program

Tohtotýždňové stretnutie bolo na poslednú chvílu zrušené, venoval som sa preto implementácii pathfindingu. Špeciálne poďakovanie patrí Vladovi Jurenkovi za pomoc.

Taktiež som venoval čas Apple Developer Programu, ktorý sa vďaka Petrovi Paulisovi podarilo po pár mesiacoch pre fakultu vybaviť.

26.02.2013

Zadanie

Hlavnou témou stretnutia bol minulotýždňový seminár z bakalárskej práce, na ktorom som odprezentoval svoju bakalárku. Debatovali sme o problémoch a návrhoch, ktoré na seminári padli. Ďakujem za konštruktívnu kritiku. Taktiež sme sa bavili o nedostatkoch v prezentačných zručnostiach, ktorých som si vedomý.

19.02.2013

Pathfinding

Vzhľadom na skúškové obdobie sme sa stretli až po vyše mesiaci. Pridal som do projektu základnú fyziku pre pohyb a aktuálne sa snažím vyriešiť pathfinding pomocou polygonal mesh.

09.01.2013

Východisková kapitola, zdrojáky & screenshoty

Do časti Práca pribudli súbory na stiahnutie. Presnejšie ide o východiskovú kapitolu bakalárskej práce, ohladom ktorej som posledné dni intenzívne komunikoval so školiteľom. Taktiež som zverejnil všetky zdrojové kódy ku doterajšej fáze projektu a prvý screenshot z aktuálnej verzie.

Posledné týždne som trošku nabral časový sklz, keďže som niekoľko krát prerábal a optimalizoval OpenGL vykreslovanie. Aktuálna verzia funguje pomocou knižnice GLKit.

07.01.2013

Prvé stretnutie v novom roku

Dnes prebehlo prvé stretnutie ku bakalárskej práci v novom roku. Témou stretnutia bola východisková kapitola a jej obsah. Doteraz som pracoval na prototype, dnes začínam písať dokument.

19.12.2012

OpenGL ES

Dnes po konci zimného semestra sme sa stretli v škole za účelom prediskutovania ďalších krokov. Ukázal som prvú verziu zobrazovania pomocou mobilného OpenGL ES. Zatial nepoužívam žiadnu nadstavbovú knižnicu, ale využívam OpenGL ES priamo.

04.11.2012

Pridaný návrh časového plánu

Do časti Práca pribudol približný časový plán. Verím, že sa mi ho podarí dodržať. :)

25.10.2012

Pridaný návrh štruktúry práce

Na stránku som pridal návrh štruktúry práce. Nachádza sa v novovytvorenej časti Práca.

14.10.2012

Spustená web stránka

Po pár dňoch úprav a pridávania funkcií je stránka z velkej časti hotová.

01.10.2012

Prvé stretnutie s Mgr. Mikuláš Pataky

Prebehlo prvé stretnutie so školiteľom. Na stretnutí sme prebrali obsah bakalárskej práce a dohodli sa na krátkodobom pláne pre nasledujúce týždne.