Späť na analýzu hráča Uva Trilearn

Trieda BasicPlayer - Zručnosti Hráča

Zručnosť je schopnosť agenta vykonať nejakú akciu. Zručnosti agenta (hráča) sú hierarchicky usporiadané na 3 katerógie zručností podľa zložitosti:

1. zručnosti nízkej úrovne,

2. zručnosti strednej úrovne,

3. zručnosti vyššej úrovne.

Zručnosti nižnej úrovne sa dajú vyjadriť ako akcie alebo príkazy, ktorým priamo rozumie server. Zručnosti strednej úrovne sú implementované pomocou zručností nižšej úrovne. Zručnosti na najvyššej úrovni používajú zručnosti definované na strednej úrovni ako a vytvárajú požadované a väčšinou zložité správanie sa agenta.

Spôsob vykonania každej z týchto zručností je závislý od aktuálneho stavu sveta WorldModel, nastavenia hráča PlayerSettings, nastavenia servera ServerSettings. Trieda WorldModel triede BasicPlayer poskytuje pomocné funkcie, ktoré sa používajú pri realizácií zručnosti. Jedná sa hlavne o predikčné metody, ktoré odhadujú premennú uloženú vo WorldModeli v nasledujúcich n cykloch alebo o metody ziskavania tychto premennych.

Spôsob vykonania akcie (aj keď už bola vybraná na vykonanie) môže adaptovať v neskorších fázach, ak to je potrebné. Agent môže realizovať v jednom cykle iba JEDNU zručnosť (vykonať akciu), bezohľadu nato, koľko zručností bolo rozhodovacím mechanizmom vybraných. Naviac, vykonávaná akcia sa nemusí dokončiť a jej vykonávanie môže byť rozhodovacím mechanizmom prerušené. Výber akcie na vykonanie sa teda prehodnocuje v každom cykle.

Spôsob implementácie triedy:

Jednoduchá implementácia á v sebe ukazovatele na všetky spomenuté triedy, s ktorými spolupracuje.

class BasicPlayer

{

protected:

  ActHandler      *ACT; /* ActHandler to which commands can be sent        */

  WorldModel      *WM;  /* WorldModel that contains information of world   */

  ServerSettings  *SS;  /* All parameters used by the server               */

  PlayerSettings  *PS;  /* All parameters used for the player              */



 ... zručnosti ...

Zručnosti nízkej úrovne

Zručnosti nízkej úrovne predstavujú jednoduché akcie, ktoré možno špecifikovať v zmysle povelov, ktorým priamo rozumie server. Tieto zručnosti sú opísané jednoduchými funkciami, ktorých návratovou hodnotou je požiadavka na vykonanie akcie - SoccerCommand na triedu ActHandler. Tieto metódy neobsahujú žiadne zložité procedúry na rozhodovanie.

SoccerCommand BasicPlayer::alignNeckWithBody( )

{ 

    return SoccerCommand( CMD_TURNNECK, WM->getAgentBodyAngleRelToNeck( ) );

}

Medzi implementované zručnosti patria napr.:

  • vyrovnanie uhlu otočenia krku hráča s uhlom natočenia tela oproti súradnicovej sústave,

  • otočenie tela k zvolenému bodu na ihrisku,

  • otočenie sa chrbtom k zvolenému bodu na ihrisku,

  • hľadanie lopty v blízkosti hráča,

  • utekanie k zvolenému bodu (nie objektu),

  • zastavenie pohybujúcej sa lopty,

  • zachytenie lopty,

  • zakričanie,

  • načúvanie vybranému hráčovi,

  • kopnutie lopty určitým smerom,

  • kopnutie lopty blízko tela hráča,

  • a ďalšie.

Presný zoznam implementovaných zručností, vrátane krátkeho opisu je uvedený v súbore opis_zrucnosti.doc

Zručnosti strednej úrovne

Zručnosti strednej úrovne na svoju realizáciu využívajú zručnosti nižnej úrovne. Môžu obsahovať aj jednoduché procedúry na rozhodovanie a ich spôsob vykonania je taktiež závislý od parametrov vo WorldModeli, PlayerSettings a ServerSettings.

Medzi implementované zručnosti patria napr.:

  • otočenie tela hráča k objektu,

  • otočenie krku hráča k objektu,

  • presunutie sa na vybranú pozíciu,

  • účelová zrážka s loptou,

  • zastavenie lopty, ak sa nachádza blízko hráča,

  • zastavenie lopty, ak sa nachádza blízko brankára,

  • odkopnutie lopty do určitého bodu tak, aby v cieľovom bode mala požadovanú rýchlosť

  • otočenie sa tela agenta spolu s loptou,

  • pohybovanie sa po zvolenej čiare,

  • a ďalšie.

Presný zoznam implementovaných zručností, vrátane krátkeho opisu je uvedený v súbore opis_zrucnosti.doc

Zručnosti vysokej úrovne

Zručnosti vysokej úrovne zodpovedajú akciám na najvyššej úrovni abstrakcie z toho pohľadu, že tieto zručnosti na svoje modelovanie zvyča využívajú zručnosti strednej úrovne. Tieto zručnosti rovnako využívajú premenné a funkcie, ktoré poskytuje WorldModel a trieda PlayerSettings.

Medzi implementované zručnosti patria napr.:

  • zachytenie lopty, ak sa nachádza vo väčšej vzdialenosti od hráča

  • driblovanie,

  • priama prihrávka lopty objektu,

  • leading pass - predkop lopty vybranému hráčovi, ktorý ju dostihne v behu,

  • through pass - výkop lopty do oblasti medzi súperovými obrancami a brankárom tak, aby ju hráč stihol dobehnúť a priamo ohrozil brankára,

  • obohranie oponenta v situácií 1-1,

  • značenie súperov,

  • bránenie bránkovej čiary,

  • zadržanie lopty,

  • a ďalšie.

Presný zoznam implementovaných zručností, vrátane krátkeho opisu je uvedený v súbore opis_zrucnosti.doc

Trieda PlayerSettings

Obsahuje viacero parametrov, ktoré ovplyvňujú rozhodovací proces agenta a metódy na pre získavanie a nastavovanie týchto hodnôt. Najdôležitejšie parametre z PlayerSettings sú prahové parametre na rozhodovanie, či konkrétna akcia má byť vykonaná alebo nie. Tieto parametre prispôsobujú správanie hráča.

Trieda Player - Mechanizmus na vyhodnocovanie

Účelom tejto triedy je poskytnutie rozhodovacej procedúry na výber ďalšej akcie. Výber akcie je založený na najaktuálnejšom stave sveta WorldModel a aktuálnej role agenta v aktuálnej tímovej formácií. Zároveň sa využívajú univerzálne nastavenia hráča v triede PlayerSettings. Táto trieda dedí triedu BasicPlayer, čiže aj všetky implementované zručnosti hráča.

Vo verejnej verzií je použitá rozhodovacia procedúra tímu Simple FC Portugal 2000. Táto verzia tímu bola vydaná zakladateľmi tímu FC Portugal. Rozhodovacia procedúra je založená na klasickom prístupe if-then-else. Celý prístup na výber najlepšej acie možno algoritmicky opísať nasledovne:

ak istota spojená s aktuálnou pozíciou lopty je príliž nízka potom

	hľadaj loptu

inak ak je možné do lopty kopnúť potom

	kopni do lopty s maximálnou silou do smerom do oponentovej bránky do náhodného rohu

inak ak najrýchlejší hráč, ktorý môže získať loptu som ja potom

        zachyť loptu

inak ak vzdialenosť k strategickej pozícií je > 1 potom

	presuň sa na strategickú pozíciu

inak

	otoč sa smerom k lopte

Procedúry rozhodovacieho mechanizmu sú definované v hlavičkovom súbore triedy Player a implementované v súbore PlayerTeams.cpp ako metódy:

SoccerCommand deMeer5 () – rozhodovacia procedúra pre hráča v poli,

SoccerCommand deMeer5_goalie () – rozhodovacia procedúra pre brankára.

Ďalej trieda obsahuje bežné metódy, slúžiace napríklad na výkop penalty, rozhodovanie, či má hráč niečo povedať alebo nie, zisťovanie stavu lopty a pod.

Trieda Formations - Tímové stratégie a formácie

Stratégia tímu agentov je definovaná ako kolektívny plán ktorý je nasledovaný s cieľom dosiahnutia spoločného cieľa s dostupnými prostriedkami.

Stratégia podľa Uva trilearn má spĺňať nasledujúce kritériá:

  • musí špecifikovať formáciu tímu a pozíciu agentov v tejto formácií,

  • definuje, ktoré formácie sú vhodné pre rôzne herné situácie,

  • stratégia špecifikuje pre každý typ hráča jeho (rolu) a adekvátne správanie súvisiace s touto rolou v tíme,

  • musí obsahovať informáciu o tom, ako má agent adaptovať jeho správanie v danej situácií,

  • musí špecifikovať ako koordinovať správanie sa jednotlivých agentov,

  • musí naznačovať, ako každý hráč má narábať so svojou energiou počas hry tak, aby dosiahol maximálny výkon.

Stratégiu tímu ovplyvňuje najmä:

  • sila súperiaceho tímu,

  • štýl súperovej hry,

  • stav hry,

  • aktuálna herná situáciou,

  • dostupnosť zdrojov (stamina, ...)

Situation Based Strategic Positioning

Základným princípom je, že tím UvA Trilearn rozlišuje medzi aktívnymi a pasívnymi situáciami. Agent je v aktívnej situácií ak sa nachádza v blízkosti lopty a inak v pasívnej. Ak je agent v pasívnej situácií, presúva sa do strategickej pozície v poli v očakávaní, že sa dostane do aktívnej situácie. Táto pozícia je závislá od aktuálnej tímovej formácie, roly agenta vo formácií a pozícií lopty v poli.

Agent vo formácií má priradenú rolu, ktorú musí vykonávať (útočník, obranca, ľavé krídlo, záložník, atď). V pasívnych situáciách agent určuje svoju strategickú pozíciu v poli počítaním váhovaných súm jeho polohy stanovenej formáciou a aktuálnou pozíciou lopty, ktorá mu slúži ako bod atrakcie. Hráč sa teda pri pasívnej situácií rozhoduje, či bude dodržiavať formáciu alebo sa vydá za loptou. Ak je už veľmi ďaleko od svojej pozície stanovenej formáciou, potom je príťažlivosť vrátenia sa späť ku svojej pozícií vo formácií veľká a vráti sa späť. Naopak, ak je lopta veľmi blízko, vydá sa k nej.

V aktuálnej implementácií Uva Trilearn 2003 formácie dodržujú najmä hráči, ktorí sa nachádzajú v pasívnych situáciách. Akonáhle je hráč v aktívnej situácií a loptu stratí a nenachádza sa už v tejto situácií tak sa vráti späť na to miesto vo formácií, ktoré je mu dané rolou. Aktívni a pasívni agenti si vyberajú nové akcie v každom cykle, t.j. rozhodovací mechanizmus vyberá akciu a formácie a môže zmeniť stratégiu v každom cykle a na základe aktuálneho stavu prostredia. Celý mechanizmus tvorby formácií je prebraný z tímu FC Portugal.

Implementácia formácií

Implementácia tímových stratégií je realizovaná v troch triedach PlayerTypeInfo, FormationTypeInfo, Formations. Sú tu informácie o všetkých možných tímových formáciách a metódy na určenie strategickej pozície v poli. Formácie sú načítavané zo súboru formations.conf. Pri prihlasovani na server si kazdy agent tieto formacie stiahne. Vo verejnej verzii su definovane iba 2 formácie.

  • PlayerTypeInfo: obsahuje informácie o typoch hráča vo formácií, obsahuje parametre na určenie atrakcie hráča k lopte v smere x a y - váhy atraktivity k lopte [0,1], minimálne, maximálne súradnice role vo formácií do ktorých hráč ešte môže ísť vo formácií, atď.

  • FormationTypeInfo: obsahuje špecifické informácie o každej formácií

  • Formations: obsahuje informácie o všetkých možných formáciách a aktuálne používanej formácií.

Komunikácia agentov

Individuálne konanie hráčov je ovplyvnené a koordinované informáciami, ktoré sú dostupné pre všetkých agentov. Táto koordinácia neprebieha vo forme komunikácie medzi hráčmi, pretože komunikačný kanál má nízku prenosovú kapacitu a je nespoľahlivý. Agenti preto nespoliehajú na vzájomnú komunikáciu, ak sa má vykonať nejaka strategická akcia. V súčasnej implementácií agenti používajú komunikáciu iba na to, aby zvýšili množstvo aktuálnych informácií vo WorldModeli.


Späť na hlavnú stránku | Aktuálna verzia na našom Wiki