[Перевод] История соревнований ИИ по Starcraft

image

Введение


Начиная с первого Starcraft AI Competition, проведённого в 2010 году, тема искусственного интеллекта в стратегиях реального времени (RTS) становится всё более популярной. Участники таких соревнований представляют своих ИИ-ботов Starcraft, которые сражаются в стандартной версии Starcraft: Broodwar. Эти соревнования по играм RTS, вдохновлённые предыдущими соревнованиями, такими как Open RTS (ORTS), стали примерами демонстрации текущего состояния искусственного интеллекта в стратегических играх реального времени. ИИ-боты Starcraft управляются с помощью интерфейса Brood War Application Programming Interface (BWAPI), разработанного в 2009 году в качестве способа взаимодействия и управления Starcraft: Broodwar с помощью языка C++. С ростом функционала и популярности BWAPI начали появляться первые ИИ-боты (агенты) для Starcraft и появилась возможность организации настоящего соревнования ИИ по Starcraft. Мы подробно расскажем о каждом крупном соревновании ИИ по Starcraft, а также о развитии UAlbertaBot, нашего бота, участвующего в этих соревнованиях. Следует учесть, что я был организатором соревнований AIIDE с 2011 года и, естественно, имею больше информации об этих соревнованиях. Каждое соревнование будет рассматриваться в хронологическом порядке проведения, с указанием полных результатов и ссылок на скачивание исходных кодов ботов и файлов ответов соревнований AIIDE и CIG.
При желании можно прочитать отчёт о AIIDE Starcraft AI Competition 2015 года здесь.

«Почему не StarCraft 2?»


Этот вопрос мне постоянно задают, когда я говорю, что мы устраиваем соревнования ИИ по Starcraft: BroodWar. В этих соревнованиях в качестве интерфейса программирования BroodWar используется только BWAPI. BWAPI был создан реверс-инжинирингом BroodWar и применяет считывание и запись в пространство памяти программы BroodWar для считывания данных и отправки команд в игру. Поскольку любая программа, занимающаяся подобными действиями, будет считаться хаком или чит-движком, Blizzard сообщила, что не разрешает нам делать что-то подобное для StarCraft 2. На самом деле, большинство версий лицензионных соглашений конечного пользователя (EULA) StarCraft 2 явно запрещает любое изменение программы. Мы рады, что компания Blizzard позволила нам проводить турниры с использованием BWAPI, она даже помогла нам, предоставив призы для турнира AIIDE, однако из-за изменения её политики мы не можем повторить то же самое для StarCraft 2.

Существуют и другие игровые движки RTS, которые можно использовать в соревнованиях. Один из таких движков — ORTS — бесплатный программный движок RTS, на котором проводились соревнования, пока в 2010 году не был выпущен BWAPI и проведены первые соревнования AIIDE Starcraft AI Competition. Ещё один движок — microRTS, это движок RTS на Java, который играет в упрощённую RTS на основе сеток. Он был разработан специально для тестирования техник ИИ.

Техники ИИ для RTS


Крайне рекомендую изучить замечательные обзоры современного состояния техник ИИ для StarCraft и описания архитектур ботов в следующих статьях:

  • StarCraft Bots and Competitions [2016]
    D. Churchill, M. Preuss, F. Richoux, G. Synnaeve, A. Uriarte, S. Ontanon, and M. Certicky
    Springer Encyclopedia of Computer Graphics and Games
  • RTS AI Problems and Techniques [2015]
    S. Ontanon, G. Synnaeve, A. Uriarte, F. Richoux, D. Churchill, and M. Preuss
    Springer Encyclopedia of Computer Graphics and Games
  • A Survey of Real-Time Strategy Game AI Research and Competition in StarCraft [2013]
    S. Ontanon, G. Synnaeve, A. Uriarte, F. Richoux, D. Churchill, and M. Preuss
    Accepted to TCIAIG (August 2013)


Благодарности


Исследования и соревнования ИИ по RTS требуют огромного объёма труда множества людей, поэтому я хочу поблагодарить тех, кто помогал в организации нынешних и прошлых соревнований, разрабатывал ботов и в целом помогал развитию ИИ для RTS. Во-первых, я благодарю исследовательскую группу ИИ RTS Альбертского университета (UofA), членом которой я являюсь. Университет участвует в изучении ИИ для RTS с момента выхода мотивирующей статьи Майкла Буро (Michael Buro) в 2003 году. UofA проводил ORTS AI Competition в 2006–2009 годах, и начиная с 2011 года ежегодно проводит AIIDE Starcraft AI Competition. Хочу лично поблагодарить бывших и действующих членов исследовательской группы ИИ RTS за всю их многолетнюю помощь в рекламе, организации и проведении этих соревнований, а также за то, что они продолжают проводить исследования мирового уровня в этой области. На фотографии ниже, слева направо: Николас Баррига (Nicolas Barriga), Дэвид Чёрчилл (David Churchill), Мариус Станеску (Marius Stanescu) и Майкл Буро (Michael Buro). На снимок не попали бывшие члены группы Тим Фуртак (Tim Furtak), Стерлинг Оерстен (Sterling Oersten), Грэм Эриксон (Graham Erickson), Дуг Шнайдер (Doug Schneider), Джейсон Лоренц (Jason Lorenz) и Абдалла Саффидин (Abdallah Saffidine).

cbfb8dfbef659388bea3a1e2738d191a.jpg

Я хочу также поблагодарить тех, кто организовал и провёл текущие и прошлые соревнования Starcraft AI Competition. Спасибо Бену Веберу (Ben Weber) за организацию первых соревнований AIIDE Starcraft AI Competition, которые зажгли международный интерес к области исследований ИИ для RTS. Михал Сертицки (Michal Certicky) ежегодно вкладывает большие усилия для проведения и поддержки Student Starcraft AI Tournament, а также постоянной турнирной лестницы и видеостриминга ботов. Также он сильно помог в популяризации области ИИ для RTS. Организаторами соревнований CIG Starcraft AI Competition стали Йохан Хагельбак (Johan Hagelback), Майк Преус (Mike Preuss), Бен Вебер (Ben Weber), Тобиас Мальман (Tobias Mahlmann), Гёнджун Ким (Kyung-Joong Kim), Хочхоль Чо (Ho-Chul Cho), Инсеок О (In-Seok Oh) и Манче Ким (Man-Je Kim). Благодарю также Красимира Крастева (Krasimir Krastev) (krasi0) за хранение оригинальной Starcraft AI Bot Ladder. Также большое спасибо Санти Онтанону за развитие системы ИИ microRTS. И особую благодарность я приношу Адаму Хайнерману (Adam Heinermann) за то, что он продолжает разрабатывать BWAPI. Без него все эти исследования были бы невозможны.

Соревнования Starcraft AI Competition


AIIDE 2010


9a775085c2ca4612afe9123c17b3bee0.png
[Прим. пер.: таблицы в оригинале статьи собираются джаваскриптом, поэтому переносить их в перевод было бы слишком трудоёмко. Если нужны рабочие ссылки в таблице, они доступны в оригинале.]

Соревнования AIIDE Starcraft AI Competition впервые были проведены в 2010 году Беном Вебером в Expressive Intelligence Studio Калифорнийского университета в Санта-Круз, как часть конференции по искусственному интеллекту и интерактивным цифровым развлечениям AIIDE (Artificial Intelligence and Interactive Digital Entertainment). 26 участников соревновались в четырёх различных игровых режимах, которые варьировались от простых боёв до игры в полный Starcraft. Поскольку это был первый год проведения соревнований и инфраструктура ещё была не развита, каждая игра турнира запускалась вручную на двух ноутбуках. Записывать результаты приходилось тоже самостоятельно. Кроме того, для ботов не сохранялась информация, которая позволила бы им узнавать больше о противниках между матчами. В соревнованиях 2010 года было четыре турнирных категории. Первый турнир представлял собой битву с микроменеджментом юнитов на плоской поверхности, состоявшей из четырёх отдельных игр с разными сочетаниями юнитов. Из шести соревнующихся победителем стал FreSCBot, а Sherbrooke занял второе место. Второй турнир тоже представлял собой микроменеджмент юнитов, но у же на сложном рельефе. В этой категории было два претендента, и в ней снова выиграл FreSCBot, обогнав Sherbrooke. Третий турнир представлял собой технически ограниченную игру в StarCraft на одной известной карте с отключенным «туманом войны». Игроки могли выбрать только расу протоссов и использование новых юнитов было запрещено. В этом турнире с выбыванием после двух поражений (double elimination) участвовало восемь ботов. В финале MimicBot занял первое место, победив Botnik. Поскольку это был вариант StarCraft с полной информацией, MimicBot выбрал стратегию «повторять порядок строительства противника, получая при возможности преимущество в экономике», и она сработала достаточно хорошо.

Четвёртый турнир считался основным соревнованием, в котором боты играли в полноформатную игру StarCraft: Brood War со включенным «туманом войны». Турнир вёлся в формате double elimination со случайными парами. Выбирались результаты лучших пяти игр. Противники могли играть за любую из трёх рас, в геймплее были запрещены только действия считающиеся «читерством» в сообществе StarCraft. Поскольку компьютерные программы, написанные на BWAPI, не имеют ограничений на количество отправляемых движку Starcraft команд, была возможны некоторые действия, не предусмотренные разработчиками, например, скольжение зданий и хождение наземных юнитов сквозь стены. Такие действия считались читерством и были запрещены в турнире. Набор карт из пяти хорошо изученных профессиональных карт объявлялся противникам заранее. Из них для каждой игры выбиралась случайным образом одна. Четвёртый турнир выиграл Overmind — бот зергов, созданный крупной командой из Калифорнийского университета (Беркли). Overmind победил в финале терранского бота Krasi0 Красимира Крастева.


Overmind активно использовал мощного и ловкого летающего юнита зергов муталиска (Mutalisk), которым он очень успешно управлял с применением потенциальных полей. В целом стратегия Overmind заключалась в первоначальной обороне из зерглингов (Zergling) и тонущих колоний (Sunken Colony) (неподвижных защитных башен) для защиты изначального развития и сбора ресурсов для создания первых муталисков. После создания муталисков они отправлялись на вражескую базу, патрулировали и атаковали её периметр. Если бот не выигрывал прямую первую атаку, он медленно патрулировал и уничтожал любых незащищённых юнитов, постепенно истощая врага до предела, после чего уничтожал его последней атакой. Занявший второе место бот krasi0 использовал глубоко защитную стратегию терранов. Он строил бункеры (Bunker), осадные танки (Siege Tank) и ракетные башни (Missile Turret) для защиты. После постройки определённого количества юнитов он отправлял армию механических юнитов на базу врага. Этот бот работал достаточно хорошо и в соревнованиях проиграл только Overmind. В 2011 году сайт Ars Technica написал превосходную статью об Overmind. Также проводился матч человека против машины, в котором участвовал профессиональный игрок и лучшие ИИ. Его можно посмотреть здесь:


Первая версия UAlbertaBot была выпущена летом 2010 года и отправлена на соревнования AIIDE 2010 в сентябре. Группа из шести студентов под моим с Майклом Буро из Альбертского университета руководством создала первоначальную версию UAlbertaBot с использованием BWAPI и стандартной библиотеки Brood War Standard Add-on Library (BWSAL), которая предоставляла такие функции, как простая планировка очереди строительства, размещение зданий и управление рабочими. Версия 2010 года бота UAlbertaBot играла за расу зергов и использовала одну основную стратегию, в которой активно применялся летающий юнит зерков муталиск. Хотя функции боя и микроменеджмента у бота были реализованы хорошо, серьёзные логические ошибки в начале игры и планировании порядка строительства привели к плохим результатам в соревнованиях 2010 года. Он был побеждён в третьем раунде сетки терранским ботом krasi0. Эта первая реализация UAlbertaBot страдала от технических проблем, поэтому после соревнований мы приняли решение полностью переписать бота к следующим соревнованиям.

CIG 2010


После успеха соревнований AIIDE 2010 была предпринята попытка проведения соревнований по ИИ для Starcraft в размках конференции Computational Intelligence in Games (CIG). В соревнованиях CIG 2010, организованных Йоханом Хагельбаком, Майком Преусом и Беном Вебером, использовался единственный режим игры, похожий на третий турнир с техническими ограничениями с соревнований AIIDE 2010, но вместо расы терранов боты играли за расу протоссов. К сожалению, первый год соревнований CIG пострадал от серьёзных технических проблем, что привело к решению использовать специально созданные карты Starcraft вместо традиционных, которые приводили к критическим ошибкам ПО Brood War Terrain Analysis (BWTA) многих ботов. Из-за этих частых «зависаний» было решено, что в соревнованиях невозможно определить победителя. UAlbertaBot не участвовал в этих соревнованиях, потому что находился в процессе полного переписывания.

AIIDE 2011


8f2c754920494d6b9ad04b9d9c7baa0d.png

В 2011 году соревнования AIIDE проводились в Альбертском университете и так продолжается и по сей день. Они ежегодно организуются и проводятся мной и Майклом Буро. Из-за малого количества участников в первом, втором и третьем турнирах соревнований 2010 года, мы решили, что в 2011 соревнования AIIDE будут состоять только из полнофункциональной игры в Starcraft (с теми же правилами, что и в четвёртом турнире 2010 года), а от более мелких турниров по микроменеджменту мы отказались. Изменены были и правила турнира: все участники должны предоставить исходный код своих ботов и разрешить его публикацию после завершения соревнований. Для этого было несколько причин. Во-первых, снижался барьер входа для будущих соревнований: программирование ИИ-бота для Starcraft занимает очень много времени, поэтому будущие участники могут скачать и изменить исходный код старых ботов, чтобы сэкономить время. Ещё одна причина — упрощение защиты от читов: на турнире теперь играются тысячи игр, поэтому мы не можем наблюдать за каждой и отслеживать использование читерских тактик, но их гораздо проще обнаружить исследованием исходного кода (слишком сильная обфускация кода запрещена). И последняя причина: помощь в развитии современных ИИ для Starcraft. Разработчики ботов могут заимствовать стратегии и техники ботов прошлого, изучая их исходный код. В идеале все боты в новых соревнованиях должны быть как минимум такими же сильными, как в прошлом году. В соревнованиях 2011 года участвовало 13 ботов.

Турниры 2010 года запускались Беном Вебером на двух ноутбуках. Приходилось вручную запускать Starcraft и создавать игры. Физическая нагрузка была довольно высока — в единственном турнире double elimination со случайными парами проводилось примерно 60 игр. Это привело к негативным отзывам: турнир в таком стиле сильно зависел от того, насколько повезёт с парой. Поэтому в соревнованиях 2011 года мы решили избавиться от любой случайности в турнирах и использовали формат кругового цикла. В таком формате нужно сыграть в гораздо большее количество игр, поэтому летом 2011 года Джейсон Лоренц (летний студент-бакалавр Майкла Буро) и я написали ПО, автоматически составлявшее график и запускавшее турниры кругового цикла в Starcraft на произвольном количестве компьютеров, соединённых в локальную сеть. В этом ПО использовалась клиент-серверная архитектура с одним сервером, создающим график игр и хранящим результаты, и несколькими клиентами, на которых была запущена игра Starcraft и ПО для мониторинга процесса игры и записи результатов после её завершения. Файлы ботов, повторы игр и окончательные результаты были доступны всем клиентам в общей папке Windows в локальной сети. Первоначальная версия ПО позволяла проводить 2340 игры за то же время, за которое мы провели 60 игр в соревнованиях 2010 года. Боты сыграли по тридцать раз с каждым из противников. В соревнованиях использовалось 10 карт, выбранных из профессиональных турниров и сбалансированных для всех рас. Их можно было скачать с веб-сайта соревнований заранее. Соревнования AIIDE были созданы по модели «человеческих» соревнований, в которых набор карт и противники известны заранее, чтобы можно было подготовиться и смоделировать действия оппонентов.


В конце пятидневных соревнований первое место занял Skynet, второе — UAlbertaBot, а третье — Aiur. Skynet — это бот протоссов, написанный разработчиком ПО Эндрю Смитом (Andrew Smith) из Великобритании, он использовал множество надёжных стратегий протоссов: раш зилотов (Zealot), армия драгунов (Dragoon)/зилотов в середине игры и армия из зилотов, драгунов и разорителей (Reaver) в конце игры. Его надёжная работа с экономикой и хорошая защита на ранних этапах позволили продержаться против намного более агрессивных ботов протоссов — UAlbertaBot и Aiur. UAlbertaBot тогда играл за расу протоссов, и подробно описан в следующем параграфе. Aiur был написан Флорианом Ришо (Florian Richoux), студентом магистратуры Нантского университета. Он тоже играл за протоссов и использовал несколько разных стратегий, таких как раш зилотами и армия из зилотов и драгунов. Между лучшими тремя финалистами возникла интересная ситуация «камень-ножницы-бумага»: Skynet выиграл UAlbertaBot в 26 играх из 30, UAlbertaBot победил Aiur в 29 играх из 30, а Aiur одержал победу над Skynet в 19 играх из 30.

Бот Overmind, выигравший соревнования AIIDE 2010, не участвовал в 2011 году, потому что обнаружилась его большая уязвимость к агрессии на ранних этапах игры и он легко побеждался рашами всех трёх рас. Команда разработчиков Overmind также сообщила, что не хочет раскрывать исходный код бота, поэтому не может участвовать в соревнованиях 2011 года. Вместо них команда студентов-бакалавров из Беркли участвовала с терранским ботом Undermind, занявшим седьмое место.

UAlbertaBot был полностью переписан в 2011 году мной и Стерлингом Оерстеном (студентом Майкла Буро) и вместо зергов начала играть за расу протоссов. Самой важной причиной перехода к протоссам заключалась в том, что мы обнаружили, что реализация стратегий протоссов гораздо проще с технической точки зрения, и эти стратегии гораздо более стабильны при тестировании. Стратегии расы зергов сильно зависят от умного расположения зданий и эту проблему в то время мы исследовали не очень хорошо. Поскольку зерги довольно слабы в защите на ранних этапах игры, их здания нужно располагать таким образом, чтобы они формировали «лабиринт» до базы, замедляющий продвижение врага к рабочим юнитам. У расы протоссов нет такой проблемы и её защита на ранних этапах достаточно хороша благодаря мощным юнитам — зилотам и драгунам. Ещё одна причина перехода к протоссам — добавление системы поиска порядка строительства, которую разрабатывали с учётом более простой инфраструктуры зданий протоссов, поэтому она не работала для зергов и терранов. Эта система планирования порядка строительства зданий имела цель построить определённое количество типов юнитов. Она могла автоматически планировать оптимальные по времени порядки строительства в реальном времени, и обеспечивала гораздо лучшие результаты, чем приоритетная система порядка строительства системы BWSAL, использованной в версии UAlbertaBot 2010 года. Добавленная в UAlbertaBot новая система планирования очереди строительства была первой версией комплексного подхода на основе поиска, сейчас используемого во всех ботах на соревнованиях ИИ для Starcraft. Эта новая версия UAlbertaBot реализовала очень агрессивную стратегию раннего раша зилотами, который ошеломлял противников и позволял выиграть многие игры всего за несколько минут. Если первоначальная стратегия раша зилотами не убивала врага, она переходила в создание дистанционных юнитов — драгунов для использования в стратегии на средних и поздних этапах игры. UAlbertaBot довольно хорошо работал и достиг второго места в соревнованиях. Соотношение побед и поражений у него было сравнимо только с результатами Skynet и Undermind. Боту Skynet удалось остановить ранние раши UAlbertaBot с помощью впечатляющего использования драгуна в начале игры, позволившего убить несколько зилотов одним драгуном. Стратегия Undermind заключалась в строительстве нескольких бункеров терранов в качестве начальной защиты, препятствующей агрессивному рашу UAlbertaBot.

CIG 2011


Соревнования CIG 2011 были организованы Тобиасом Мальманом из Копенгагенского университета информационных технологий и Майком Преусом из Дортмундского технического университета. Учтя уроки предыдущего года, на этот раз соревнования CIG проводили на стандартном «человеческом» наборе из пяти карт, однако в отличие от AIIDE, карты не были известны участникам заранее. В соревнованиях использовались те же правила, что и в турнире AIIDE 2011: полнофункциональная игра в Starcraft со включенным «туманом войны» и запретом читерства. Два важнейших отличия в правилах заключались в том, что для CIG необязательно было раскрывать исходный код ботов, а набор карт был неизвестен заранее. Поскольку и AIIDE, и CIG проходили в августе (из-за графика конференций) и в них часто участвовали одинаковые боты, организаторы CIG решили немного изменить правила турнира, скрыв набор карт, что привело бы к более интересным результатам. В соревнованиях участвовало десять ботов, и поскольку у организаторов CIG не было ПО для автоматизации, игры запускались вручную всего на нескольких компьютерах. Из-за этого вместо одного кругового турнира, как в AIIDE, соревнования были разделены на две группы из пяти ботов с десятью круговыми играми на каждую пару. После этого группового этапа лучшие два бота из каждой группы выходили в финальную группу и для каждой пары снова игрались по десять игр. Несмотря на то, что UAlbertaBot победил Skynet в первой группе, Skynet занял первое место в финале, второе место с незначительным отрывом занял UAlbertaBot, третье — Xelnaga, а четвёртое — BroodwarBotQ.

Поскольку между двумя соревнованиями был промежуток всего в пару недель, для CIG ни в Skynet, ни в UAlbertaBot не вносилось крупных изменений. Единственными изменениями в UAlbertaBot было удаление фрагментов введённой вручную информации о картах и расположении зданий на картах, участвовавших в AIIDE. Они были заменены алгоритмическими решениями.

b0808ef49a9e4e6db06cba8fb1b5f1e5.png

SSCAIT 2011 (подробные результаты)


Первый студенческий турнир по ИИ для Starcraft (Student Starcraft AI Tournament, SSCAIT) проводился зимой 2011 года и был организован Михалом Сертицки из Университета Коменского в Братиславе. Этот турнир был задуман как часть курса «Введение в ИИ», преподаваемого Михалом в университете. В качестве части курса каждый студент должен был написать бота для соревнований. Поскольку на курсе было много студентов, в соревнованиях приняло участие 50 человек. Все они были студентами. Специализированное ПО, написанное Михалом, использовалось для автоматического составления графика и запуска игр турнира. Формат турнира разделил 50 участников на десять групп по пять человек для групповых этапов. 16 финалистов переходили на этап сетки double elimination. Победителем финала стал Роман Даниэлис (Roman Danielis), студент Университета Коменского. О ботах и стратегиях на этих соревнованиях известно не так много, потому что они не получили широкой известности за пределами университета, поэтому бот UAlbertaBot в них не участвовал.

AIIDE 2012


61eb821636b14c27a685d320eecc9764.png

Соревнования AIIDE 2012 снова проводились в Альбертском университете. В них было внесено серьёзное изменение: постоянное хранилище файлов позволяло ботам обучаться в процессе всего времени соревнований. ПО управления турниром было улучшено, каждый бот получил доступ к папке чтения и папке записи, содержащимся в общей папке, доступной для всех клиентских машин. В течение каждого раунда боты могли считывать из папки чтения и записывать в папку записи, и в конце каждого кругового цикла (когда между всеми ботами было проведено по одной игре на одной карте) содержимое папки записи копировалось в папку чтения, предоставляя доступ ко всей информации, записанной в предыдущих раундах. Такой метод копирования гарантировал, что никакой из ботов не получит преимущества в информации в течение раунда благодаря графику. В соревнованиях 2012 года участвовало десять ботов, и к концу пятого дня было сыграно 8279 игр, по 184 для каждой пары ботов. Окончательные результаты были почти аналогичны результатам 2011 года. Skynet занял первое место, Aiur — второе, а UAlbertaBot — третье. Работа Aiur была усовершенствована введением новой стратегии под названием \textit{cheese}: стратегии раннего раша с фотонной пушкой (Photon Cannon), к которой другие боты оказались не готовы.


Матчи человека против машины 2012 года можно посмотреть здесь:
Для этих соревнований в UAlbertaBot было внесено одно серьёзное обновление — добавление SparCraft combat simulation package. В версии 2011 года UAlbertaBot просто ждал создания порогового количества зилотов, а затем постоянно отправлял их на вражескую базу и даже не отступал. В версии 2012 года был обновлён модуль симуляции боя, позволивший выполнять оценку результатов боя. Он применялся в битвах, чтобы предсказать, кто ней выиграет. Если прогнозировалась наша победа, то бот продолжал атаковать, если победа врага — бот отступал к своей базе. Эта новая тактика доказала свою силу на практике, однако защита Aiur на раннем этапе игры значительно улучшилась по сравнению с прошлым годом, когда UAlbertaBot занял второе место. В UAlbertaBot для соревнований 2012 года также реализовали три чёткие стратегии: раш зилотами из версии 2011 года, раш драгунами и раш тёмными тамплиерами (Dark Templar). Бот также использовал ввод-вывод в постоянный файл для хранения данных матчей против конкретных противников, и выбирал стратегию против соответствующего бота с помощью формулы UCB-1. Эта стратегия обучения работала довольно хорошо: 60% побед в начале турнира превратились к концу турнира в 68,6%. Одна из главных причин победы Aiur над UAlbertaBot в турнире заключалась в том, что стратегии рашей драгунами и тёмными тамплиерами были плохо реализованы. Поэтому алгоритм обучения выбору стратегий в конце концов пришёл к постоянному использованию стратегии раша зилотами, и исследование других стратегий на примере прошлых побед оказалось бесполезным. Если бы стратегия раша зилотами выбиралась в каждой игре, то UAlbertaBot занял бы второе место.

CIG 2012


d713c4eeed4f417fa3468a1de5490b47.png

В соревнованиях CIG 2012 года использовалось ПО управления турниром с AIIDE, поэтому в рамках турнира можно было провести гораздо больше игр. В соревнованиях было десять участников, причём многие боты участвовали и в AIIDE. Использовался набор из шести заранее неизвестных карт, которых не было в предыдущем турнире. Всего было сыграно 4050 игр, каждый бот сыграл со всеми остальными по 90 раз. Как и в AIIDE, ботам для обучения были доступны чтение и запись в постоянный файл, однако из-за различий в структуре сетевых папок соревнований AIIDE и CIG они работали не совсем так, как задумывалось. Также стоит заметить, что по сравнению с AIIDE здесь был в три раза больше сбоев ботов, поэтому стало очевидно наличие технических проблем с ПО управления турниром AIIDE. Skynet снова победил, UAlbertaBot занял второе место, Aiur — третье, а Adjutant — четвёртое. В этих соревнованиях UAlbertaBot не использовал файл данных и обучение, потому что эта техника проявила себя не лучшим образом на соревнованиях AIIDE 2012. Была реализована стратегия раша зилотами, позволившая боту взобраться на второе место.

SSCAIT 2012 (подробные результаты)


Несколько месяцев спустя, в декабре, был проведён второй турнир SSCAI, который гораздо шире рекламировался участникам за пределами Университета Коменского. В соревнованиях снова участвовало много ботов с курса Михала Сертицки по ИИ, а общее количество участников составило 52 бота. Формат турнира представлял собой простой круговой цикл, где каждый бот играл по одной игре с остальными, или по 51 игре на каждого бота. После завершения кругового цикла финальные бои были разделены на две категории: студенческий дивизион и смешанный дивизион. Для участия в студенческом дивизионе бот должен был быть написан единственным студентом. Очки распределялись следующим образом: 3 очка за победу, 1 очко за ничью. В финале студенческого дивизиона первое место занял Матей Истеник (Matej Istenik) (бот Dementor) из Жилинского университета (Словакия), второе — Марцин Бартницки (Marcin Bartnicki) из Гданьского технологического университета, а третье — UAlbertaBot. Смешанный дивизион был доступен для всех участников. Восемь лучших ботов соревновались в сетке с выбыванием после первого поражения. В финале IceBot победил Марцина Бартницки и занял первое место. В этих соревнованиях использовалась версия UAlbertaBot с CIG 2012, потому что в SSCAIT тоже применялся набор неизвестных карт.

CIG 2013


0b60924252f747dbb0d51e96d135f5d5.png

В 2013 году соревнования CIG проводились на несколько недель раньше, чем AIIDE. ПО управления турниром, которое должно было быть готово к соревнованиям AIIDE, переписывалось, поэтому в CIG использовали версию ПО 2012 года. Это значило, что система файла обучения не работала по тем же причинам, что и в предыдущем году. Из-за дополнительных технических трудностей с настройкой турнира была сыграна всего 1000 игр, всего четверть от количества прошлого года. Тройка лучших была такой же, что и в предыдущем году: Skynet — первое место, UAlbertaBot — второе, и Aiur — третье. Xelnaga переместился с прошлого шестого места на четвёртое. UAlbertaBot подвергался серьёзным изменениям (см. в разделе ниже), которые были ещё не завершены ко времени соревнований CIG 2013, поэтому участвовала версия бота с AIIDE 2012. Обновление было полностью завершено к соревнованиям AIIDE несколькими неделями позже.

AIIDE 2013 (подробный отчёт о соревнованиях)


57754132627446e6a9bbb34fdb626841.png

Для соревнований AIIDE 2013 ПО управления турниром было почти полностью переписано, чтобы быть более устойчивым в разных схемах сетей. Предыдущие версии ПО полагались на существование общих папок Windows для хранения файлов, теперь вместо них стали использовать обмен данными через сокеты Java. Все файлы ботов, повторы игр, результаты и папки чтения/записи запаковывались и отправлялись через сокеты Java. Это означало, что турнир теперь можно проводить в сети с любой конфигурацией, поддерживающей TCP (для сокетов Java) и UDP (для сетевой игры Starcraft). Руководство/демонстрацию этого ПО управления турниром можно посмотреть здесь:


В соревнованиях 2013 года участвовало всего 8 ботов, и это до сих пор остаётся минимальным количеством из всех турниров, хотя и качество ботов было довольно высоким. Всего было сыграно 5597 игр, что позволило провести 200 битв с каждым из ботов, по двадцать на каждой из десяти карт, оставшихся неизменными с прошлого года. Обычные фавориты снова хорошо себя проявили, однако UAlbertaBot занял первое место и сверг с трона Skynet, переместившегося на второе. На третьем месте — Aiur, на четвёртом — Ximp, новый бот, написанный Томасом Вайда (Tomas Vajda), студентом с курса по ИИ Михала Сертицки в Университете Коменского. Ximp играл за расу протоссов и его стратегия заключалась в очень раннем расширении экономики под защитой фотонных пушек. Он играл в глубокой защите и строил армию авианосцев (Carrier), очень сильных летающих юнитов поздних этапов игры. После создания определённого количества авианосцев они пролетали по всей карте, уничтожая всё на своём пути. К сожалению, ошибка в коде Ximp приводила к 100% сбоев игр на карте Fortress, дававших противникам лёгкую победу. Если бы не этот сбой, он бы запросто занял третье место. Примечательно также впечатляющее обучение стратегии бота Aiur: первоначальный уровень побед в 50% постепенно повысился к концу соревнований до 58,51%, что подняло его с четвёртого на третье место.

Для этих соревнований в UAlbertaBot внесли изменения, но более важной была обновлённая версия SparCraft. В UAlbertaBot раньше использовалась более простая версия SparCraft, но она давала намного менее точные результаты, чем новый модуль SparCraft. Он правильно симулировал все повреждения и типы брони, что не учитывалось в предыдущей версии. Это обеспечивало гораздо более точную симуляцию, значительно улучшившую поведение бота в начале игры. Бота избавили от стратегий драгунов и тёмных тамплиеров и оставили только раш зилотами, который по-прежнему был сильнейшей стратегией. Единственным исключением были бои со Skynet, где бот, выполнявший раш тёмными тамплиерами в прошлом соревновании продемонстрировал, что он довольно слаб к этой стратегии. В версии UAlbertaBot 2012 года был найден баг, заставлявший всех рабочих юнитов бота преследовать любых юнитов, что привело к победе Skynet и Aiur из-за недостатка ресурсов, когда такое происходило. Были исправлены эта серьёзная ошибка и несколько мелких, благодаря процент побед достиг своего максимума. UAlbertaBot обогнал Skynet почти на 10% побед.

SSCAIT 2013 (подробные результаты)


В соревнованиях SSCAIT снова участвовало много ботов с курса по ИИ 2013 года и более 50 участников. В турнире 2013 года было проведено почти в два раза больше игр, чем в 2012 году: игралось по два раунда кругового цикла между всеми ботами на выбранных случайным образом картах. Результаты снова были разделены на две категории, студенческую и смешанную, с теми же правилами, что и в прошлом году. В студенческом дивизионе первое место занял Ximp, второе — бот WOPR, написанный Сореном Клеттом (Soren Klett) из Университета Билефельда, а UAlbertaBot снова занял третье место. Технические проблемы и ошибки на ранних этапах игры Ximp с соревнований AIIDE были исправлены и он очень хорошо проявил себя на этапе кругового цикла. В смешанном дивизионе лучшие восемь ботов из этапа кругового цикла играли в сетке с выбыванием после первого поражения (single elimination). В четвертьфинале UAlbertaBot был побеждён ботом IceBot. Финал проводился между IceBot и krasi0. Бот krasi0 победил и IceBot занял второе место. Версия UAlberaBot для AIIDE использовалась в этих соревнованиях без всяких изменений.

CIG 2014


3492fd31e9d941e3b64efd7eb1d988cb.png

Соревнования CIG 2014 организовали Гёнджун Ким, Хочхоль Чо и Инсеок О из Седжонского университета. В них участвовало 13 ботов. В 2014&nb

© Geektimes