Starý protokol



Tento protokol je již zastaralý. Manažer ho sice stále podporuje, ale tvoříte-li novou umělou inteligenci, doporučujeme vám použít nový protokol.

Umělá inteligence (UI) komunikuje s manažerem (programem, který zprostředkovává zápas) přes datové soubory. Soubor PLOCHA.DAT obsahuje hrací plochu. Soubor TAH.DAT má dvě podoby. Nejdříve obsahuje informaci o hráči, který je právě na tahu, a potom obsahuje výsledný tah UI. V souboru TIMEOUTS.DAT jsou časové limity. Nepovinným rozšířením protokolu jsou soubory MSG.DAT a INFO.DAT.

Funguje to jednoduše a to sice:

  1. Manažer vytvoří soubory PLOCHA.DAT, TAH.DAT, INFO.DAT, TIMEOUTS.DAT a prázdný soubor MSG.DAT.
  2. Manažer spustí UI a pak čeká (například pomocí funkce WaitForSingleObject).
  3. UI si přečte datové soubory a vymyslí svůj tah.
  4. UI zapíše souřadnice do TAH.DAT a případně také zapíše zprávu do MSG.DAT.
  5. UI se ukončí.
  6. Manažer přečte MSG.DAT. Jestliže není prázdný, zobrazí zprávu do logovacího okna nebo souboru.
  7. Manažer přečte TAH.DAT a podle něj provede tah.
  8. Pak se vše opakuje pro druhého hráče atd.
  9. Při ukončení by manažer měl odstranit všechny zde používané soubory.

Pracovní adresář si volí manažer. UI musí počítat s tím, že pracovní adresář je jiný než ten, ve kterém se nachází spustitelný soubor UI. Jestliže tedy UI kromě EXE a DLL souborů obsahuje také ještě nějaké datové soubory, pak se na ně musí odkazovat celou cestou. Cestu může UI zjistit například pomocí funkce GetModuleFileName. Druhou možností je podívat se na nultý parametr na příkazové řádce. Manažer musí při spouštění UI na příkazovou řádku dát název exe souboru v takovém tvaru, aby ho UI mohla otevřít, tedy včetně exe přípony a případně cesty, pokud UI neleží v pracovním adresáři.

Pokud UI potřebuje ukládat na disk nějaké soubory, pak si v pracovním adresáři vytvoří složku, jejíž název musí být stejný jako název UI. V této složce si pak UI může dělat prakticky cokoli, pokud tím nepřekročí maximální povolenou velikost, která je zveřejněna na webových stránkách turnaje (nyní je 20MB). Během turnaje se soubory v této složce nemažou. Manažer může všechny dočasné soubory odstranit až po skončení turnaje nebo při ukončení manažeru. Pro trvalé ukládání souborů slouží složka, jejíž název je v souboru INFO.DAT.

PLOCHA.DAT:

Tento soubor obsahuje záznam hrací plochy. Počet řádků v souboru je roven výšce hrací plochy. Počet znaků na každém řádku je roven šířce hrací plochy. UI si tedy musí zjistit rozměry hrací plochy tak, že si spočítá, kolik má soubor řádků a jak jsou tyto řádky dlouhé. Při turnaji budou použity rozměry 20x20. Prázdná pole jsou reprezentovaná znakem - (pomlčka, minus). Jeden hráč hraje za křížky, které jsou zaznamenány znakem x (malé písmeno x). Druhému hráči připadají kolečka, která se zapisují znakem o (malé písmeno o). Při kontinuální hře mohou být některá pole obsazena výherní pěticí, tato pole se zapisují znakem # (křížek).

Příklad souboru PLOCHA.DAT:


---x-x--------------
----x-o---x---------
-----xxoooox--------
-----#x-o-----------
-----#xoooxo--------
-----#--x-x---------
-----#--------------
-----#-----#-------x
------o---#xoo-----o
----xooo-#----------
------xo#-----------
-------#o-----------
------#oxx----------
-----o--------------
--------------------
ooox----------------
---x----------------
-x-x----------xoo-x-
--------------------
--------------------

TAH.DAT:

Než manažer spustí nějakou UI, zapíše do souboru TAH.DAT jeden znak (buď x, nebo o), což znamená za jakého hráče má UI vymyslet tah. Když je tah vymyšlen, přepíše UI tento soubor do formátu x,y (číslo sloupce, čárka, číslo řádku). To jsou souřadnice, kam chce UI umístit svůj symbol. POZOR: hodnota x i hodnota y je v rozmezí 0-19, nikoliv v rozmezí 1-20. Levý horní roh hrací plochy má souřadnice [0,0].

TIMEOUTS.DAT:

Tento soubor obsahuje dva řádky. Na prvním řádku je časový limit na tah v sekundách. Nulová hodnota času na tah znamená, že UI má odpovědět pokud možno co nejdříve (měla by například jenom spočítat ohodnocovací funkci a už neprohledávat do hloubky všechny možné tahy). Na druhém řádku je zbývající čas do konce partie v milisekundách. Pokud UI překročí časový limit, pak zbývající čas může být záporný. Pokud čas na partii je neomezený, pak je na druhém řádku číslo 2147483647.

Soubor TIMEOUTS.DAT obsahuje čas na tah s přesností pouze na celé sekundy, zatímco v souboru INFO.DAT je čas na tah s přesností na milisekundy. Bohužel některé manažery vůbec nevytvářejí soubor INFO.DAT. Proto se doporučuje, aby se UI nejdříve pokusila otevřít soubor INFO.DAT, a jestliže tento soubor neexistuje, tak teprve pak používat soubor TIMEOUTS.DAT.

MSG.DAT:

UI během hry může posílat manažeru textové zprávy, které manažer loguje (např. pro ladění nebo pro pobavení). Před každým spuštěním UI manažer vytvoří prázdný soubor MSG.DAT. Do tohoto souboru UI zapíše jednu nebo více řádek textu. Nedoporučuje se používat více řádek, protože některé manažery umějí načíst jen jednu řádku.

INFO.DAT:

UI musí počítat s tím, že starší manažery tento soubor nevytvářejí a nebo v něm nejsou všechny zde popsané informace. Obsah tohoto souboru se může měnit i v průběhu hry. Každý řádek je ve tvaru [klíč] [hodnota].

timeout_turn  - limit na tah (v milisekundách, 0=hraj co nejrychleji)
timeout_match - limit na zápas (v milisekundách, 0=bez limitu)
max_memory    - limit na maximální spotřebovanou paměť (v bajtech, 0=bez limitu)
time_left     - zbývající čas do konce partie (v milisekundách)
game_type     - 0=hra proti člověku, 1=hra proti UI, 2=turnaj, 3=síťový turnaj
rule          - 0=pět nebo více v řadě vyhrává, 1=přesně pět v řadě vyhrává,
                2=kontinuální hra, 3=kontinuální a přesně pět v řadě
folder        - složka, kam si UI může zapisovat trvalé soubory
Složka pro trvalé soubory je společná pro všechny UI, případně i pro jiné aplikace. Proto je UI povinna si v dané složce vytvořit svoji podsložku, jejíž název je stejný jako název UI. Do ní si může ukládat například znalosti a zkušenosti získané během hry.

Příklad souboru INFO.DAT:
max_memory 83886080
timeout_match 180000
timeout_turn 2500
game_type 0
rule 3
time_left 148150
folder C:\Documents and Settings\All Users\Data aplikací