ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA SECONDA FACOLTA’ DI INGEGNERIA Corso di Laurea Specialistica in ingegneria dei Sistemi e delle Tecnologie dell’Informazione QUAKE AGENT di Rosaldi Marco Manuale di installazione Sommario 1-Introduzione 2-Obiettivi 3-Analisi 4-Progetto 5 - S i mu l a z i o n i 6-Conclusioni Pag.2 Pag.2 Pag.2 Pag.3 Pag.8 Pag.8 Sistemi Intelligenti Distribuiti LS A.A. 2004/05 1. Introduzione Questo progetto rappresenta la conclusione del percorso didattico effettuato durante il corso di Sistemi intelligenti distribuiti LS. I l s i s t e m a p r o p o s t o è s t a t o d e n o mi n a t o Q u a k e A g e n t , e d è liberamente ispirato al famoso gioco per PC. 2. Obiettivi L ’ o b i e t t i v o d i q u e s t a e s e r c i t a z i o n e è q u e l l o d i c r e a r e u n s i s t e ma ad Agenti capace di simulare una “battaglia virtuale” tra alcuni p e r s o n a g g i i n t r o d o t t i a l l ’ i n t e r n o d i u n l a b i r i n t o , d e n o mi n a t o Dungeon. Gli agenti/personaggi avranno caratteristiche “fisiche” e “i n t e l l e t t i v e ” d i f f e r e n t i t r a d i l o r o , c h e p e r m e t t e r a n n o a d e s s i d i s o p r a v v i v e r e p i ù o m e n o fa c i l m e n t e a l l ’ i n t e r n o d e l l a b i r i n t o . A l l a fi n e d e l l a s i mu l a z i o n e s o l o u n o t r a g l i a g e n t i d o v r à s o p r a v v i v e r e a l c o mb a t t i m e n t o . 3. Analisi Q u a k e è u n g i o c o t a n t o fa m o s o q u a n t o s e m p l i c e n e l l a s u a i d e a d i base: alcuni personaggi giocanti si muovono all’interno di un l a b i r i n t o e i l l o r o s c o p o è q u e l l o d i s o p r a v v i v e r e a l l e i n si d i e d e l Dungeon portate sia dagli altri Players che da eventuali trappole situate lungo la mappa. I n p r i m a a n a l i s i e me r g o n o s u b i t o l e p r o b l e m a t i c h e p r i n c i p a l i riguardanti la possibile realizzazione del sistema, ovvero quelle relative all’astrazione della mappa di gioco (un labirinto bidimensionale all’interno del quale individuare personaggi, m u r i e t u t t o i l r e s t o t r a mi t e c o o r d i n a t e c a r t e s i a n e ) e a l l a coordinazione/simultaneità degli agenti presenti nel sistema. Tutte le considerazioni effettuate durante la fasi di progetto d o v r a n n o p r e n d e r e i n e s a me u n i mp o r t a n t e r e q u i s i t o : i l s i s t e m a va realizzato utilizzando degli Agenti che sappiano coordinarsi t r a d i l o r o : p e r q u e s t o r i s u l t e r à fo n d a me n t a l e l ’ u t i l i z z o d i T u c s o n c o me i n fr a s t r u t t u r a a l l a b a s e d e l p r o g e t t o e d i t u t t o c i ò che ne consegue (tuple, spazi di tuple, Respect Language, ecc..). 4. Progetto 4.1 Il Dungeon C o me p r i m a fa s e d e l l a p r o g e t t a z i o n e è s t a t a p r e s a i n considerazione la problematica della mappa (o Dungeon), sulla q u a l e s i d o v r a n n o mu o v e r e t u t t i i p e r s o n a g g i / a g e n t i c h e p r e n d o n o p a r t e a l g i o c o . I l r i s u l t a t o fi n a l e d i t a l e s v i l u p p o , p e r il quale si è tenuto conto di molte variabili quali la facilità di astrazione e il movimento degli agenti all’interno della mappa stessa, è risultato il seguente: I l l a b i r i n t o s i p r e s e n t a c o me u n q u a d r a t o d i d i m e n s i o n i 2 0 x 2 0 , con 4 pseudo-stanze e numerosi corridoi; ogni posizione della mappa è individuabile attraverso delle coordinate cartesiane del tipo (X, Y). In figura sono indicati anche i punti cardinali, che risulteranno poi utili per segnalare le direzioni prese dai personaggi all’interno del Dungeon. Si è quindi deciso di rappresentare i muri (per la precisione c i a s c u n q u a d r e t t o d i p o s i z i o n e ( x , y ) d i c o l o r e ma r r o n e i n f i g u r a ) c o me d e l l e t u p l e d e l t i p o : - ‘ W a l l ’ (X , Y ) ; che risulteranno in totale 144 più una indicante le dimensioni d e l l a ma p p a , d e l t i p o : - ‘Dungeon’(X, Y); 4.2 Gli Agenti C o me p r i ma c o s a è i n d i s p e n s a b i l e i n s e r i r e t u t t e l e t u p l e a l l ’ i n t e r n o d e l l o s p a z i o d i t u p l e r e l a t i v o a l l e i n fo r m a z i o n i s u l D u n g e o n , c h e è s t a t o d e n o mi n a t o h e l l ; t a l e c o m p i t o s a r à s v o l t o dall’unico agente non giocante che si occuperà in pratica solo di preparare il “campo di gioco”. I personaggi/agenti del nostro sistema dovranno avere c a r a t t e r i s t i c h e d i v a r i o t i p o , p e r d i v e r s i fi c a r e i l l o r o comportamento all’interno di esso. A questo proposito si è p e n s a t o a 4 g i o c a t o r i d i “i n t e l l i g e n z a ” e “c a p a c i t à fi s i c h e ” d i questo tipo: IL GOBLIN È l’elemento più vulnerabile di tutti. Possiede 1 0 0 L i fe - p o i n t s ( P u n t i - V i t a ) c h e s t a n n o a d i n d i c a r e l a fo r z a fi s i c a d i c i a s c u n p e r s o n a g g i o . Inoltre non possiede l’intelligenza necessarie per rilevare le trappole all’interno del Dungeon, che g l i i n fl i g g e r a n n o q u i n d i , s e i n n e s c a t e , n u m e r o s i danni fisici. IL TROLL I n q u a n t o a c a p a c i t à fi s i c h e è m o l t o p i ù fo r t e d e l Goblin e possiede infatti 200 Punti-Vita, ma anche lui non ha l’intelligenza per disinnescare le trappole. IL RANGER L a s u a p r e s t a n z a fi s i c a s t a a me t à t r a i l T r o l l e i l Goblin, avendo a disposizione 150 Punti-Vita. Oltre a questo però ha la capacità di rilevare e disinnescare il 50% delle trappole all’interno del labirinto. IL PALADINO E’ il personaggio più potente e intelligente di tutto il gioco. I suoi Life-Points sono pari a quelli del Troll, quindi 200, ma in più ha la capacità di disinnescare qualsiasi trappola presente all’interno del Dungeon, non subendone così alcun effetto. Ciascun personaggio comincia la sua battaglia partendo da una d e l l e s t a n z e d e l l a b i r i n t o e d a l ì c o mi n c i a a mu o v e r s i a l l ’ i n t e r n o di esso. Tutte le posizioni successive saranno indicate all’interno dello spazio di tuple relativo, denominato arena, in questo modo: - ‘ N o m e P e r s o n a g g i o ’ (X , Y , L P ) dove X e Y stanno ad indicare le coordinate attuali e LP il numero di Punti-Vita rimanenti. 4.3 Le trappole e i punti di partenza L e t r a p p o l e s o n o p o s i z i o n a t e i n p u n t i s p e c i fi c i d e l l a m a p p a e i n totale sono 6: scattano ogni qual volta un Player vi passa sopra ( s e m p r e c h e e s s o n o n s i a i n g r ad o d i d i s i n n e s c a r l e ) . O g n u n a d i e s s e p u ò i n fl i g g e r e a l m a l c a p i t a t o d i t u r n o d a 4 fi n o a 1 0 L i fe p o i n t s . Se un giocatore cade in trappola, l’evento verrà segnalato t r a mi t e u n a t u p l a a l l ’ i n t e r n o d e l l o s p a z i o d i t u p l e a r e n a , i n questo modo: - ' N o m e P e r s o n a g g i o ’ o n t r a p ' (X , Y , 'D a m a g e : 4 ') d o v e o l t r e a l l a s o l i t a i n fo r m a z i o n e s u l l a p o s i z i o n e è p r e s e n t e anche il danno inflitto dalla trappola. Nella seguente figura possiamo vedere i punti di partenza dei Personaggi/Agenti (indicati con l’iniziale del nome) e le trappole (segnalate con la lettera T): 4.4 I combattimenti D u e p e r s o n a g g i e n t r e r a n n o i n c o mb a t t i m e n t o o g n i q u a l v o l t a s i r i t r o v e r a n n o i n s i e me a l l ’ i n t e r n o d e l l a s t e s s a c a s e l l a . L ’ e s i t o dello scontro sarà deciso in maniera molto semplice dai PuntiVita residui di ciascuno di essi: chi ha il maggior numero di L i fe - P o i n t s u c c i d e i l n e m i c o , m a a s u a v o l t a s u b i s c e u n d a n n o p a r i a i L P d e l l ’ a v v e r s a r i o me n o u n o . N e l c a s o s i i n c o n t r i n o d u e g i o c a t o r i c o n u n n u me r o i d e n t i c o d i L P , v i n c e l o s c o n t r o c h i h a a t t a c c a t o p e r p r i mo , o v v e r o c o l u i c h e h a f a t t o l ’ u l t i m o p a s s o p r i ma c h e i d u e f o s s e r o a l l ’ i n t e r n o d i u n a s t e s s a c a s e l l a . I c o mb a t t i m e n t i s o n o c o me s e m p r e s e g n a l a t i a l l ’ i n t e r n o d e l l o spazio di tuple arena tramite la seguente tupla: - 'NomePersonaggioA attacks NomePersonaggioB' I n o l t r e , l ’ e s i t o d e l l o s c o n t r o s i p o t r à fa c i l m e n t e i n t u i r e d a u n ’ u l t e r i o r e t u p l a r a p p r e s e n t a n t e i l P l a y e r u s c i t o s c o n fi t t o , i n questo modo: - ' N o m e P e r s o n a g g i o i s d e a d ' (X , Y , L P ) 4.5 Esito finale della battaglia L a p a r t i t a n o n t e r m i n e r à fi n o a q u a n d o n o n r i ma r r à u n s o l o giocatore all’interno del Dungeon; a quel punto il vincitore v e r r à s e g n a l a t o c o me s e m p r e i n a r e n a t r a m i t e l a t u p l a : - ‘NomePersonaggio wins’ I n q u e s t o mo d o i l v i n c i t o r e v e r r à p u ò t e r mi n a r e i s u o i movimenti, in quanto non ci sono più avversari da sconfiggere. Q u e s t a s e g n a l a z i o n e è e ffe t t u a t a t r a mi t e l a t u p l a : - ‘All_dead(1)’ 4.6 Il Linguaggio Respect Sia le trappole che i combattimenti sono stati simulati tramite il linguaggio Respect, con il quale è stato possibile programmare l o s p a z i o d i t u p l e a r e n a i n mo d o a p p r o p r i a t o p e r i mp l e m e n t a r e la coordinazione degli agenti. Anche lo spazio di tuple hell reagisce in modo predefinito ad alcuni eventi specifici, quali l ’ i n s e r i m e n t o d i mu r i a l d i fu o r i d e l D u n g e o n o d i d i m e n s i o n i n e g a t i v e d e l l o s t e s s o , a l fi n e d i c o n t r o l l a r e c h e t u t t e l e t u p l e siano state inserite in maniera corretta. 5. Simulazioni Per rendere comprensibile lo svolgimento delle simulazioni, è s t a t o i n s e r i t o u n c o s i d d e t t o “r i t a r d o d i p a s s o ” ( p e r s o n a l i z z a b i l e ) ad ogni Agente/personaggio: in questo modo, in pratica, tra un movimento e l’altro di ogni giocatore trascorrono circa due secondi. Sono state effettuate numerose simulazioni di battaglie virtuali ( c o n r i t a r d o d i p a s s o m o l t o i n fe r i o r e a i 2 s e c o n d i , p e r o v v i m o t i v i d i t e mp o , a l s o l o s c o p o d i v e r i f i c a r n e l ’ e s i t o ) e c o me fa c i l m e n t e p r o n o s t i c a b i l e s i è n o t a t o c o me i l P a l a d i n o h a la m e g l i o s u g l i a v v e r s a r i i n a l me n o i l 7 5 % d e l l e b a t t a g l i e . 5. Conclusioni e future implementazioni I n d e fi n i t i v a s i p u ò a f fe r ma r e c h e è s t a t o r a g g i u n t o a p i e n o l o scopo di questa esercitazione, ovvero quello di realizzare un sistema multi agente e di prendere confidenza con alcune tecnologie, quali Tucson. E’ anche vero però che diversi aspetti, p r i n c i p a l me n t e p e r p r o b l e mi d i t e mp o , s o n o s t a t i t r a s c u r a t i , c o m e p e r e s e m p i o u n a v i s u a l i z z az i o n e g r a fi c a d e l l a s i m u l a z i o n e c h e p u ò e s s e r e p r e s a i n c o n s i d e r a z i o n e , a s s i e me a d a l t r i miglioramenti, in un eventuale sviluppo futuro del progetto.