This is an old revision of the document!
În acest an vă propunem realizarea unui program care să joace cât mai bine jocul Halite. Proiectul se va realiza în echipe de câte 2-3 studenți (poate fi realizat și individual, dar nu recomandăm acest lucru din cauza volumului de muncă asociat).
Regulile jocului sunt explicate în detaliu aici.
Aveți la dispoziție starter kits, disponibile pentru multe limbaje de programare, aici. Acestea au deja implementată comunicarea cu engine-ul jocului, precum și câteva funcții elementare de navigare/analiză a stării jocului. Funcționalitățile existente sunt descrise în detaliu aici.
Proiectul va cuprinde mai multe competiții, respectiv o mare finală între cele mai bune echipe din cele trei serii.
Reguli de upload: Vom folosi pentru proiect repository-urile din cadrul platformei GitHub Classroom. Căpitanul echipei va trebui să intre pe assignment-ul corespunzător proiectului (https://classroom.github.com/a/Q9z10alD) și să creeze echipa (pastrati exact acelasi nume ca in formularul de inscriere) . Ceilalți membri vor intra ulterior pe același link și se vor înscrie în aceeași echipă. Repository-ul va fi creat automat și va fi privat, singurii care îl vor putea accesa fiind membrii echipei și responsabilii de proiect din echipa de PA. Pentru a incarca botul in competitie, va trebui sa aveti o arhiva cu numele Bot.zip in root-ul repository-ului vostru (o vom descarca noi automat cand faceti o submisie noua).
Arhiva va conține:
Boții vor fi evaluați pe un sistem Linux/GNU pe 64 biți, deci este foarte important să verificați că aveți un makefile care funcționează corect pe Linux, chiar dacă lucrați pe Windows sau MacOS. Scriptul de testare va rula “make clean”, “make build” pentru compilare, apoi “make run” pentru rulare. Makefile-ul trebuie să se afle în rădăcina arhivei pentru a putea fi rulat. Asigurați-vă că fișierul Makefile nu conține path-uri absolute (să poată fi rulat și pe alt sistem).
La fiecare push în repository, GitHub va verifica automat dacă există o arhivă cu numele corect și dacă cele 3 acțiuni din Makefile pot fi rulate. Puteți ignora erorile înainte de trimiterea finală a arhivei.
Fișierul Readme va respecta următoarea structură:
Pentru început, trebuie să vă înscrieți echipa. Echipele se pot forma între studenți din orice grupă/serie (CA/CB/CC), dar trebuie să alegeți o serie pe care să o reprezentați.
Fiecare echipă va desemna un membru al acesteia cu rolul de căpitan. Căpitanul va avea sarcina de a reprezenta, respectiv de a coordona echipa sa. Căpitanul se va asigura că toți membrii participă în mod egal la îndeplinirea obiectivelor.
Pentru înscriere, accesați acest link.
* Ce limbaje de programare putem să folosim?
În principiu, puteți să lucrați în orice limbaj doriți. Într-un limbaj high-level (Python, Julia) va fi mai ușor să implementați/testați versiuni noi de boți dar botul va fi mai lent față de unul echivalent scris într-un limbaj precum C++/Java. Top 25 boți din competiția originală au fost scriși în foarte multe limbaje: C++, Java, C#, Python, Clojure, Rust, Go, Javascript.
Indiferent de limbajul în care lucrați veți avea aceleași restricții de timp.
Proiectul va fi evaluat pe un sistem Linux/GNU, 64 biți, prin urmare ar fi bine să verificați că aveți un makefile care funcționează corect pe Linux, chiar dacă lucrați pe Windows sau Mac OS X.
Nu sunt necesare noțiuni de învățare automată pentru proiect. De altfel, majoritatea participanților de la competiția originală nu au folosit ML. Bineințeles, nu este interzis, dar dacă încercați o astfel de abordare trebuie să aveți în vedere că la competiția finală nu aveți avea la dispoziție un GPU dedicat. De asemeni, nu veți putea apela biblioteci specializate de ML.
Sigur că da, inspirarea după ideile descoperite online nu se penalizează. Este important însă să precizați sursa în Readme. Copierea codului sursă (sau reproducerea integrală a ideii de rezolvare dintr-o altă sursă) se sancţionează cu pierderea punctajului pentru întregul proiect.