Opis zadania — bitewne AI dla VCMI
From VCMI Project Wiki
Odpalarka
Parametry odpalarki
Aby uruchomić bitwę trzeba skorzystać z odpalarki. Przyjmuje ona argumenty określające:
- plik JSON z parametrami bitwy. Domyślnie wykorzystywany jest plik b1.json z folderu z VCMI.
- nazwy AI (lub pełne ścieżki do nich) uczestniczących w bitwie. Domyślnie dostępne jest StupidAI będące równoważne udostępnionej przykładowej implementacji AI.
- folder, w którym maja być umieszczone logi
- plik, do którego ma być dopisany rezultat bitwy
Składnia argumentów:
-h [ --help ] Display help and exit -l [ --aiLeft ] arg (=StupidAI) Left AI path -r [ --aiRight ] arg (=StupidAI) Right AI path -b [ --battle ] arg (=b1.json) Duel file path -o [ --resultsOut ] arg (=./results.txt) Output file when results will be appended -d [ --logsDir ] arg (=.) Directory where log files will be created -v [ --visualization ] Runs a client to display a visualization of battle
Przykładowa komenda (wydana w folderze VCMI):
odpalarka.exe -l"C:\Documents and Settings\Administrator\Pulpit\Programming challenge\YourAI\YourAI_Standalone.dll" -d../logs -o../logs/results_list.txt
Uruchomi bitwę, gdzie lewe AI będzie wczytane z podanej ścieżki, zaś logi trafią do fodleru nadrzędnego „logs”.
Plik JSON z bitwą
Plik opisujący bitwę zapisany jest w tekstowym formacie JSON (strona oficjalna). Ogólnie format JSON obsługuje:
- obiekty — są to pary "nazwa" : wartość wewnątrz klamer {}.
- tablice (wektory) — są to ciągi wartości w klamrach []
- literały — liczby i stringi w cudzysłowach ""
Plik zawiera jeden obiekt o następujących polach:
- "terType" — liczba, identyfikator terenu, na którym odbywa się bitwa. Jednostki znajdujące się na swoim ojczystym terenie otrzymują niewielkie premie.
- "bfieldType" — liczba, typ pola bitwy. Nie ma znaczenia mechanicznego, określa grafikę w tle.
- "obstacles" — wektor zawierający liczby lub dwuelementowe wektory liczb. Opisuje rozmieszczenie przeszkód. Pojedyncza liczba oznacza umieszczenie na danym polu pniaka (będzie on zablokowany). Pary mają postać [id_przeszkody, nr_pola] — przeszkoda danego typu zostanie umieszczona na wskazanej pozycji. Spis identyfikatorów przeszkód jest dostępny np. tu.
- "sides" — dwuelementowy wektor zawierający struktury z opisem stron uczestniczących w bitwie.
- "creatures" — wektor struktur pozwalających zmienić parametry danej jednostki na czas bitwy.
Struktura opisująca stronę walki zawiera następujące pola:
- "side" — liczba, określa, która to jest strona (0 — lewa, 1 — prawa)
- "army" — wektor par liczb postaci [id_stwora, liczebność]. Każda para opisuje jeden oddział. Liczba oddziałów musi być w przedziale [1—7].
- "heroid" — liczba, identyfikator bohatera. Jeśli brak tego parametru, strona nie będzie miała bohatera.
- "heroPrimSkills" — czteroelementowy wektor liczb, określających wartości kolejnych umiejętności pierwszorzędnych boahtera (atak, obrona, siła czarów, wiedza).
- "spells" — wektor zawierający identyfikatory czarów znanych przez bohatera.
Struktura opisująca zmianę parametrów jednostki:
- "id" — liczba określająca identyfikator jednostki, która otrzyma nowe parametry
- "attack" — liczba, wartość punktów ataku stwora. Analogicznie: "defense" (obrona), "HP" (punkty wytrzymałości), "dmg" (zadawane obrażenia), "shoots" (strzały), "speed" (szybkość).