Göm menyn

TDDD92 AI-projekt

Projektarbete (UPG4)


Efter utvärderingsarbetet under HT1 ska ni i gruppförband implementera integrerade förmågor i er gemensamma agent. Stegen nedan beskriver hur ni ska genomföra projektarbetet, och hur ni ska förbereda er redan under HT1.

En grundläggande gemensam agent med PyCommandCenter

Det praktiska arbetet under HT1 inleds med en labbserie som normalt utförs i par. Ni hittar laborationsinstruktionerna på kursens Wiki. Labbarna är inte ett examinationsmoment i sig själva, utan en förberedelse inför det som faktiskt examineras. Målet är att samtliga kursdeltagare ska ges en möjlighet att:

  • Undersöka hur StarCraft II fungerar i praktiken.

  • Lära sig arbeta med programmeringsgränssnittet till StarCraft, vilket kommer att behövas i de senare stegen.

  • idéer och inspiration inför den individuella utredningen (examinationsmoment UPG3) och det gemensamma utvecklingsprojektet (examinationsmoment UPG4), samt en bättre förståelse för vad som faktiskt är möjligt och rimligt att genomföra inom kursen.

Bra att veta: Eftersom labbarna inte är examinerande finns en hel del frihet i hur man genomför arbetet. Samtidigt är det studentens ansvar att man förstår det som lärs ut i labbarna inför kommande uppgifter! Följande gäller:

  • För labbserien arbetar vi normalt i par – men om någon "blir över" kan vi ha någon grupp om 3 personer. Det ger en möjlighet att starta snabbt utan att man behöver bestämma redan från början hur man vill bilda de stora projektgrupperna. Man får också möjlighet till diskussion inom smågrupperna utan att någon helt faller utanför.

  • Men tänk samtidigt på att ni kommer att behöva erfarenheten av det egna arbetet. Alltför mycket samarbete i den första fasen kan leda till att ni inte förstår hur den egna basagenten fungerar eller hur den pratar med StarCrafts API, vilket ger problem under det senare arbetet. Fokusera på att förstå hur spelet och APIerna fungerar.

    Om du inte har arbetat med StarCraft II tidigare: Samarbeta med din labbpartner och fokusera särskilt på att förstå API:et och Starcraft II som spel.

    Om bara en i ett par har arbetat med StarCraft II: Tänk på att alla behöver förstå vad som händer. Fall inte i fällan att klippa och klistra gammal kod utan att veta vad som händer.

Ett par veckor innan slutet av HT1 börjar det bli dags att gå över till att skapa en grundläggande gemensam agent. Här är några viktiga punkter:

  • Den gemensamma agenten bör vara klar innan HT2 börjar.

  • Den ska vara en enkel grundagent där man senare (under HT2) integrerar AI-tekniker.

  • Den kan baseras på era implementationer från labbarna eller på en nyligen implementerad "basagent" som kan ge ytterligare inspiration och hjälp, men som å andra sidan kräver att man sätter sig in i den nya koden.

Obs! Varje grupp får ett eget Git-repo som är en kopia (fork) av den nya basagenten. Gruppen väljer om ni vill använda den eller om ni föredrar att jobba vidare på er tidigare kod – läs genom repots README och titta lite på koden för att bestämma er. Oavsett vilket ni väljer att göra ska ni ändå arbeta i det Git-repo som vi har skapat åt er!

Ju längre ni har kommit med detta när HT2 börjar, desto större chanser att ni kan implementera AI-teknikerna på ett bra sätt. Grupper som inte är klara med basen förrän ett par veckor in i HT2 får ofta problem att hinna implementera, testa och utvärdera ordentligt.

Implementation och integrering av AI-teknikerna

Under HT2 behöver alla i gruppen arbeta på bland annat följande punkter:

  • Implementera den egna funktionaliteten, det egna ansvarsområdet (till exempel "byggnadsordning"). Detta behöver komma igång direkt i HT2 – man behöver lite marginaler för att t.ex. kunna ta ett avbrott i några dagar för att tänka över saker, eller för att man kanske blir sjuk ett tag.

  • Samarbeta med övriga i gruppen för att fortsätta med den gemensamma funktionalitet som man upptäcker att man behöver. Mycket bör redan vara klart i och med basagenten som skrevs i HT1, men man upptäcker säkerligen några fler behov när man arbetar i HT2. Detta arbete behöver fördelas jämnt inom gruppen.

  • Testa den egna funktionaliteten, men även testa att integrera flera olika funktionaliteter tillsammans. Vi ser ibland att olika gruppmedlemmar arbetar på helt egna grenar i Git och att integreringen inte sker förrän på slutet, och det kan vara ett stort misstag. Integrera så tidigt ni kan.

    Ett tips är att skapa ett antal featureflaggor där man kan slå av och på olika funktionaliteter, med "fallback" till en väldigt grundläggande funktionalitet om någon flagga är falsk. Exempel: Om FIND_SAFE_PATHS är True används någons "hitta-säker-väg-implementation". Om flaggan är False (kanske för att funktionen inte är färdig eller för att man vill testa om det är den funktionen som orsakar en bugg) anropas automatiskt en fallback som använder den inbyggda förflyttningen istället.

  • Rapportera hur det går och diskutera frågor och problem (mer om det senare).

  • Arbeta på projektdelen av den individuella slutrapporten när du har material, och arbeta vidare med polering av utredningsdelen när du har fått kommentarer.

Redovisning varje vecka

I princip varje vecka under HT2 har vi ett redovisningstillfälle. Vid frånvaro, se kursinfo.

På redovisningstillfällen kommer varje grupp att få 30 minuter till att diskutera nuläget med er handledare. Ni behöver då vara förberedda på att t.ex. förklara hur det har gått med basagenten och diskutera lite om hur ni tänker fortsätta ert arbete efter föregående veckan.

Bra att veta: Under HT2 har vi också ett seminarium varje vecka. På det seminariet kan ni ta upp frågor som ni inte hann diskutera under redovisningen, eller som handledaren inte kunde besvara. Precis som vanligt kan vi inte heller garantera att vi kan svara på rak arm på seminariet, utan vissa frågor kan få skjutas upp.

labbtillfällen finns det mer tid att ställa praktiska frågor till handledarna; seminarierna är t.ex. inte till för programmeringsfrågor.

Presentation som slutredovisning

Vid slutredovisningarna kommer ni att ha lite mer tid att redovisa vad ni har åstadkommit under terminen. Varje grupp kommer att redovisa separat under ett eget pass, där varje individ får en viss tid tilldelad att presentera sitt eget resultat. Varje grupp kommer att vara närvarande i högst en timme.

Kodinlämning

När du lämnar in slutrapporten, som innehåller projektdelen, behöver du också "lämna in" den programkod du har skrivit. Vid behov kan granskaren titta på den för att få mer information om vad du gjorde och hur du implementerade det.

Fokus är inte på att koden ska vara snyggt skriven eller extremt väldokumenterad! Däremot behöver det finnas någon form av översiktlig kommentar om var just din kod ligger och hur den hänger ihop. Detta läggas i filen liuid123.txt eller liuid123.md i roten av filarkivet (repository), där liuid123 är ditt ID.

Inför inlämningen skapar du tillsammans med gruppen en gemensam tagg (på main-branchen) för den commit du vill "lämna in". På det sättet skyddar du dig mot eventuella ändringar gjorda av andra gruppmedlemmar senare, till exempel vid komplettering. Du kan sedan slå upp denna tagg i projektet i Gitlabs webgränssnitt. Gå till Repository / Tags i vänstermenyn, som i detta exempel:

Klicka på taggens namn (t.ex. "v32.50.0" i exempelbilden -- inte en commit-hash som "2869de24" eftersom det är själva taggen vi vill åt). Kopiera sedan den URL du får fram i webläsaren. I exemplet blir det https://gitlab.com/gitlab-org/gitlab-ui/-/tags/v32.50.0; i ditt fall blir det t.ex. https://gitlab.liu.se/tddd92-2024/tddd92-2024-projekt-sgX-XX/-/tags/taggnamn, beroende på vilken grupp du är med i och vad du kallade din tagg.

Denna URL/länk ska du ha med i din inlämningsissue när du lämnar in en individuell slutrapport!


Sidansvarig: Daniel de Leng
Senast uppdaterad: 2024-12-19