На Хабре уже рассказывали про замечательную игру CodeCombat, которая помогает изучать Javascript в нескучной игровой форме. Но в битве Greed столкнулись отнюдь не новички, а настоящие профессионалы.
Во время соревнования 545 участников написали более 126 000 строк кода. Каждый потратил в среднем 10 часов на подготовку заданий, что соответствует 7,5 человеко-месяцам разработки. Обсчёт итога происходил на 673-ядерном кластере, который за один час просчитал результат всех 153 439 игр. Победители заберут призов на сумму более $40 000.
Абсолютный чемпион Wizard Duke показал и вовсе уникальный результат: 363 победы, 0 поражений, 14 ничьих. В интервью организаторам 23-летний английский программист Майкл Хиселл (Michael Heasell) объяснил свою стратегию сбора монет. Вектор движения игрока вычислялся как сумма векторов, генерируемых окружающими монетами, в зависимости от их ценности, и векторов противоположного направления от границ игровой зоны и коллег-сборщиков монет. Результат сложения всех векторов показывал, в какую сторону сборщику совершить очередной ход.
Таким образом, сборщики Wizard Duke двигались в направлении наиболее плотных кластеров с ценными монетами, равномерно распределяясь по территории.
Вдобавок, ценность монеты вычислялась ещё и с учётом её расстояния до ближайшего врага, для максимизации прибыли.
Его стратегия производства юнитов тоже довольно сложная. Майкл задействовал продвинутую архитектуру категоризации для распределения приоритетов между типами и подтипами автономного поведения ботов. Например, один из типов поведения — зондирование. Некоторые игроки строят большую армию в ответ на появление любого агрессора. Для проверки противника Wizard Duke отправлял в середине игры единственного солдата к базе врага.
Запись напряжённой битвы между игроком Wizard Duke и канадским кланом Bellardia см. здесь. Интересно, что с середины игровой сессии сборщики монет с противоположных сторон двигаются почти синхронно парами, что указывает на схожесть стратегий, которые использовали Wizard Duke и Bellardia.