Сегодня после работы успел немного покопать бота в BotG. Обнаружил что прилично протупил в прошлый раз, когда добавлял поочередную покупку вещей для героев. Очерёдность затрагивала не только покупку, но и выбор целей, соответственно каждый ход только у одного героя была возможность выбрать и атаковать свою цель. На DPS это конечно сказывалось плохо.
Вообще логика очень сильно разрослась, даже с введением призм в архитектуру (если просто: каждый герой видит поле несколько по-своему, без лишней ненужной ему инфы, и каждое такое представление генерится из состояния игры чистой функцией). Надо снова переносить часть кода в призмы и может быть сделать этап после призм максимально упрощённым, чтобы выдавить в них всю логику по выбору целей.
Пока эти правки позволили подняться в серебре примерно на 45 позиций, но этого мало. Боссу лиги я по прежнему проигрываю. Из-за нежелания пока бороться со впиливанием в код kd-деревьев (нужных для более оптимального выбора целей) остаётся реализовывать всякую постороннюю логику типа отстрела блуждающих крипов, более частого притягивания за нашу линию вражеских дальнобойных юнитов и движения по линиям кустов вместо пробежек по дороге вместе с крипами (а то много файрболов ловим от вражеского Iron Man'а).
Кстати, надо бы пособирать статистику по эффективному расходу маны Iron Man'ом и понять, стоит дальше использовать Поджигание или всё-таки забить на него и пользоваться только файрболом. Боты противников вроде как поджигание не жалуют, возможно оно действительно не так сильно как я думаю.
Помимо допиливания логики сделал визуализатор поля с позициями юнитов и радиусами атаки. Взял для этого d3.js и удивился насколько удобная библиотека. Первый прототип набросал реально минут за 20. Документация вообще отличная.