Souboj pro nenasytné

Před necelými dvěma týdny skončil souboj Greed, který se odehrál pod projektem CodeCombat. Proběhl v období 20. května až 8. června 2014 a účastnilo se ho přes 540 hráčů z celého světa.

Úkolem bylo napsat kód v jazyce javascript, který ovládal vaši strategii. Ve hře proti sobě vždy stojí dva hráči, jeden za tým humans, druhý ogres. Hra se odehrává na malém ostrůvku, kde se s postupem času náhodně rozmisťují mince s různou hodnotou. Každý hráč má začátku vlastní základnu a $50, s nimi může začít stavět první postavy, kterých je 6 typů, jedna z nich slouží jako sběrač mincí, ostatní jsou bojové jednotky. Na jedné straně bylo zapotřebí zajistit vaší základně dostatečné množství financí pro stavbu jednotek, na druhé straně šlo o zajištění bezpečí vaší základny a poražení nepřítele zničením jeho základny v průběhu 180 vteřin.

Prvních několik dní se strategie nijak výrazně nelišily, hráči své sběrače posílali pro nejbližší mince. Postupem času přicházely nové strategie, které využívaly rozdělení mapy do několika sektorů, které každý ze sběračů hlídal, sběrači se naučili preferovat hodnotu mince před její vzdáleností a objevovali se hráči, jejichž sběrači uměli na základě volby mince nepřítelova sběrače rozhodnout, zdali má cenu tuto minci sbírat. Každému novému vynikajícímu nápadu jednoho hráče se ostatní hned pokoušeli přizpůsobit a tak probíhalo neustálé, krásně viditelné „opisování“. Některým hráčům, umístivším se na prvních místech, se však podařilo přijít na úchvatnou strategii, kdy využili Newtonova gravitačního zákonu, každé minci přidělili na základě její hodnoty hmotnost a jejich sběrači tak byli „taženi“ za velkými shluky mincí, které se, především ze začátku hry, přirozeně tvořily, většina sběračských strategií je však nedokázala identifikovat. Takový postup pak dokázal výrazně ovlivnit začátek hry, kdy mohl hráč rychle vyrobit dostatek sběračů na pokrytí mapy a zamezil k nim tak přístup teprve několika sběračům nepřítele.

Má strategie sběru spočívala v rozdělení mapy do pěti sektorů, čtvrtin a jeden ze sběračů osidloval prostřední část a překrýval tak částečně ostatní. Pokud sběrač neměl ve své oblasti žádnou minci, přesunul se do středu své oblasti a výčkával. Pokud měl ve své oblasti několik mincí, vybral nejhodnotnější z nich jako cílovou a podíval se, jestli v oblasti elipsy s ohnisky v pozici cílové mince a jeho pozice není mince bližší. Pokud byla, sebral nejprve tu. Kontroloval přitom také, zdali nepřítel nevybral tu samou minci jako jeho cíl, pokud ano, pokoušel se ji sebrat jen pokud k ní byl blíže než nepřítel. Na znepříjemnění počítání mého cíle nepřítelem jsem cíl nevolil přímo ve vybrané minci, ale mírně mimo její pozici.

Strategií pro bojové jednotky jsem měl několik. Zakládaly se na množství financí, blízkosti nepřítelovy armády a množství vlastních typů bojových jednotek.

Pro zkoušku jsem vždy vkládal mírně odlišné kódy do týmu humans a ogres, ve výsledku si nakonec nejlépe vedl kód za tým ogres, díky kterému jsem se umístil na 24. místě. Ceny byly velmi pěkné, takže s výsledkem jsem byl spokojen. Budu se těšit na další soutěže, které CodeCombat přichystá.

Pro všechny kdo mají zájem, na CodeCombat.com najdete mnoho her, které slouží jako výuka základů jazyka JavaScript (v současnosti přibývá podpora dalších [Python, CoffeeScript, Clojure, Lua, IO,…]), v minulosti pořádané soutěže jsou stále k dispozici, každý si tedy může vyskoušet jak by obstál.

Také vřele doporučuji popis strategie výherce souboje přímo na blogu výherce michaelheasell.com.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.