04 maj 2010

Tredje iteration - a work in progress

Denne iteration har vi endnu ikke overstået. MVC strukturen har gjort det forholdsvis simpelt at implementere en AI, dvs. Fjender. MoveableModel er forsåvidt ligeglad med, hvilken controller kalder dens metoder, og derfor kan vi nøjedes med at konstruere en ny controller klasse som kan interface med modellen. I stedet for at have en tastaturstyret controller, brugte vi timere som gennem hvert andet frame vurderede fjendens næste træk. Først handlede det blot om at give fjenden mulighed for at bevæge sig tilfældigt rundt. Derefter gjorde vi controlleren opmærksom på spillerens position, og udbyggede dens egenskaber til at kunne forfølge spilleren. Dette krævede implementeringen af path-finding som gør AI’en i stand til at finde rundt om forhindringer. I et forsøg på tydeliggøre ansvarsområder valgte vi at placere pathfinding funktionaliteten i en seperat klasse. Derudover måtte den enkelte pathfinding klasse danne sig et selvstændigt billede af kortet, for at sikre at flere monstre på samme tid kan benytte sig af pathfinding (det nytter ikke noget at flere monstre redigerer i de samme variabler i forbindelse med algoritmens udførsel). Vores use-cases beskrev yderligere at fjender skal kunne spotte spilleren. Dette blev løst ved at beregne afstanden fra det enkelte monster til spilleren, og på baggrund af retningen monstret vender i forhold til spilleren, vurdere om spilleren er spottet. Er dette tilfælde ophøre fjendens tilfældige spanguleren rundt på kortet, og pathfinding funktionaliteten tages i brug.
Det næste skridt i denne iteration, bliver at spiller og monster mulighed for at angribe hinanden, hvilket vil kræve nye modeller for player og monster, som naturligvis kan benytte funktionaliteten i MoveableModel. Derudover bliver monstre placeret tilfældigt på scenen på nuværende tidspunkt, hvorfor de altså også kan blive placeret midt i et træ – giver lidt sjove fejl, men dette er kun midlertidigt for at teste vores AI.

Ingen kommentarer:

Send en kommentar