Table of Contents

Proiect: 2D Arena Micro-Battle

Proiectul la MPS pe direcția A va fi dezvoltat în echipe de 7-8 persoane, valorând un total de 6 puncte, fiind evaluat în două etape. Prima este de-a lungul laboratorului în cadrul semestrului, valorând un total de 4 puncte. A doua o reprezintă o prezentare în cadrul sesiunii de tip “Demo-Day” care valorează 2 puncte.

Idee de bază

Proiectul constă în dezvoltarea unui joc de tip 2D shooter “top-down” micro-battle cu agenți bazați pe inteligență artificială (AI). Jocul se va desfășura de-a lungul a diverse runde scurte, jucate pe o hartă prestabilită, care urmăresc îndeplinirea unui obiectiv principal, bazat pe un mod de joc selectat, unde o echipă de agenți încearcă să câștige împotriva unei alte echipe de agenți. Agenții vor urmări îndeplinirea acestui obiectiv pe baza unor strategii definite intern, pentru fiecare, cât și a unor moduri de comunicare între aceștia. Scopul final fiind reprezentat de colectarea de diverse statistici pe baza jocurilor desfășurate între agenți.

Obiective

Proiectul are în vedere cinci mari obiective:

Mecanici Joc

Jocul se va desfășura în cadrul unei hărți 2D. Pentru simplitate agenții vor fi reprezentați sub formă de cercuri, armele sub formă de bețe dreptunghiulare, iar gloanțele/proiectilele sub formă de cercuri mai mici. Harta va avea și un set de obstacole (ziduri) care pot fi distruse, sau nu, în spatele cărora agenții se pot ascunde. Fiecare agent va avea în fața lui un con ce reprezintă linia lui de vedere (LoS), un agent putând să împuște doar agenți inamici aflați în interiorul LoS.

LoS poate fi cerc în fața agentului pentru simplitate, în fază inițială. Astfel, coliziunile care trebuiesc verificate sunt de natură simplă doar cerc-cerc sau cerc-dreptunghi.

Fiecare agent va avea anumite atribute și un rol, fie prestabilite, fie alese aleator, fie alese de către un agent la începutul unui joc. Aceste atribute se referă la număr de puncte de viață, viteza de mers, daune pe care le poate cauza, număr gloanțe, distanță LoS, viteză reîncărcare, etc. Acestea pot fi influențate fie direct pe baza unor puncte oferite la începutul jocului, fie indirect, calculate pe baza unor atribute mai simple, precum putere, dexteritate etc.

Se propune implementarea a patru moduri de joc, fiecare cu propriul său obiectiv principal:

Agenți

Agenții vor încerca să îndeplinească obiectivul unui mod de joc pe baza unor limitări în comunicare, sau a diverse moduri de comunicare, și anume:

Se recomandă următoarea schemă comună pentru transmiterea de mesaje, definite în format YAML, dar orice alt mod de implementare este binevenit:

  • TIMESTAMP: {x} #timpul la care a fost transmis mesajul
  • TARGETS: {A1, …, Ak} #ID-urile agenților țintă pentru mesaj
  • MOVE: {x, y} #poziția spre care agentul intenționează să se deplaseze către
  • ASSIST: {x, y} #cerere către alți agenți să se deplaseze spre o anumită poziție
  • FOCUS: {Ax, x, y} #ID-ul unui agent din echipa adversă care ar trebui țintit simultan și poziția curentă a acestuia
  • STATUS: {hp, ammo, etc.} #detalii despre status-ul curent al agentului
  • ROLE: {x} #ce rol îndeplinește agentul în momentul de față

Pot fi adăugate alte tipuri de mesaje în funcție de necesitate/complexitatea dorită.

Fiecare agent va avea o altă strategie de joc, reprezentat de un alt AI, în funcție de rolul pe care îl ocupă în cadrul echipei. Se propun următoarele 4 roluri: lider, înaintare, tanc, suport.

Hartă

Harta poate fi predefinită, generată pseudo-aleator, sau editată pe baza unui editor. Nu este nevoie de dimensiuni enorme ci suficient de mari pentru a se asigura o durată rezonabilă medie pentru runde (30-120s). Nu trebuie implementate toate trei modurile, fiecare echipă poate alege unul singur pe care îl consideră mai potrivit.

În cazul în care se merge pe ideea de hartă generată pseudo-aleator, se va folosi mereu același seed pentru generare în evaluarea statisticilor măsurate mai jos pentru a avea rezultate reproductibile.

Statistici Măsurabile

Pe lângă dezvoltarea jocului se are în vedere și măsurarea a diverse statistici legate de agenți, modurile de joc, și modurile de comunicare dintre aceștia. Vor fi măsurate un set de metrici comune, cât și un set de metrici specifice unui mod de joc.

Se propune măsurarea următoarelor metrici comune:

Următoarele metrici pot fi măsurate individual pentru un anumit mod de joc:

Livrabile

Pentru ca proiectul să fie considerat complet, fiecare echipă va trebui să prezinte următorul set de livrabile detaliat mai jos.

Se urmărește ca soluția software să fie dezvoltată în mod continuu în cadrul materiei, fiind țintit un progres constant, cu modificări majore o dată la cel mult două săptămâni. Soluțiile implementate pe ultima sută de metri vor fi depunctate în mod substanțial.

Software

Pe partea de software se doresc următoarele:

UI, sistemul de fizică nu trebuie implementate individual; se poate folosi un motor grafic existent separat (Unity, Unreal). Soluțiile pot fi dezvoltate în orice limbaj de programare și orice mediu dorit

Documentație

Pe partea de documentație se doresc următoarele componente:

Se punctează respectarea rolurilor în echipă, a sarcinilor planificate, și a timpilor estimați pentru fiecare sarcină.