Вот уже месяц длится Russian AI Cup 2016. Это соревнование по программированию искусственного интеллекта, которое проходит в форме игры. Мы подробно рассказывали об идее и правилах нынешнего года здесь.
Но со старта чемпионата многое изменилось. Участникам пришлось попотеть, чтобы разобраться в непростых правилах игры, а нам — чтобы справиться с тестирующей нагрузкой. Редактировались правила, оптимизировался код, сменялись раунды и банились игроки. Рассказываем вам полную историю CodeWizards 2016.
Открытый бета-тест первого раунда
7 ноября был запущен бета-тест. В течение недели участники писали стратегии по правилам первого раунда, а организаторы фиксили баги и балансировали правила.
Много объектов. CodeWizards — это первая игра с большим количеством объектов. Во все предыдущие годы мы ограничивалось десятками, сейчас их может быть около пятисот: это деревья, миньоны, строения, снаряды и так далее. Такое количество объектов плохо влияет на работу стратегий и тестирующей системы.
Большое потребление оперативной памяти. Описания объектов занимали слишком много места в ОЗУ. Игра долго загружалась и тормозила. Самое неприятное — она могла даже упасть из-за того, что не укладывалась в лимиты памяти, отведённые для одной вкладки браузера.
Основную работу мы провели над визуализатором. Вместо того чтобы заново загружать изменяемые объекты, мы стали хранить историю их изменений. Все положения 3D-моделей мы подсчитываем в начале игры. Это немного замедляет загрузку, зато увеличивает fps. Нам удалось снизить среднее количество потребляемой оперативной памяти почти вдвое: с 1 Гб до 500 Мб. Когда всё заработало, мы добавили в игру звуки, чтобы наблюдать за результатами было интереснее.
Медленная отправка данных. Ещё одна сложность, связанная с большим количеством объектов: необходимость их пересылки стратегии участника. Медленные языки, такие как Ruby или Python, едва успевали справиться с приёмом и передачей данных. Если в стратегию добавлялась какая-то логика, она не могла преодолеть временной лимит и отключалась тестирующей системой.
Мы внедрили специальный механизм кеширования. Он позволил не передавать объекты, которые не изменились со времени прошлой отправки. Это было непросто: мы обновили код взаимодействия на всех языках программирования. Сейчас у нас есть несколько участников, прошедших во второй раунд на Ruby. Python же используется многими топ-игроками и спокойно конкурирует с быстрыми языками вроде Java, C# или C++.
Изменения правил игры. Мы внимательно следили за отзывами игроков на форуме. Они помогли нам сбалансировать правила и сделать игру более ровной. Помимо некоторых незначительных изменений стоит отметить увеличение урона зданий, увеличение количества баллов за подбор бонуса со 100 до 200, а также появление бонусов парами, а не случайно в одной из двух точек. В начале игры никто не боялся башен, а ходить за бонусами было невыгодно: очков они давали мало, а могли и вообще не появиться.
Новые языки. Как и в прошлые годы, сообщество расширило список языков, на которых можно писать стратегии. Теперь Russian AI Cup поддерживает сразу 10 языков. Добавились D, Go, JavaScript и Scala. Спасибо авторам языковых пакетов!
Итоги бета-теста. В первую неделю на чемпионат зарегистрировалось 650 программистов. Мы внимательно читали форум и продолжаем это делать. Всё, что предлагается, мы оцениваем и большинство идей берём в разработку. Мы рады, что в чемпионате участвуют адекватные и лояльные игроки. В основном это разработчики со стажем. Спасибо!
Итоги первого раунда
25 и 26 ноября прошел первый раунд чемпионата. Для участия в нём мы отобрали 1090 лучших стратегий из 1500 поступивших к тому моменту. Первый раунд состоял из двух этапов по 12 часов с перерывом в 24 часа. Во время них тестирующая система комплектовала и запускала игры. Итоговый рейтинг основан на результатах 40 сражений.
Поздравляем победителей, прошедших во второй раунд! А остальным напоминаем о доборе участников из Песочницы. Оттуда во второй раунд попадут 60 лучших стратегий, не прошедших по итогам первого раунда.
Жулики :(
Мы тщательно проанализировали стратегии участников раунда 1 и с сожалением обнаружили, что не все в нашем соревновании следуют правилам и соблюдают этические нормы добросовестной конкуренции. Был выявлен ряд случаев совместной разработки либо использования одним человеком нескольких учётных записей в системе.
Такие участники есть и в Топ-300, что могло бы дать им право на получение двух или более футболок за прохождение в раунд 2. Даже зная об этом, ни один из таких участников не уведомил жюри соревнования о нарушении и не попросил заблокировать все свои учётные записи, кроме одной.
В этот раз мы решили ограничиться строгим предупреждением. Упомянутые участники не будут дисквалифицированы, однако они не пройдут дальше по итогам раунда 1. Вместо них в раунд 2 попадут следующие по списку; счастливчики, разумеется, будут уведомлены об этом по электронной почте.
Бета-тест второго раунда
Во время второго раунда мы открываем для волшебников доступ к прокачке заклинаний. Теперь они становятся сильнее с каждым уровнем и могут выбрать свою ветку скилов.
Новые правила. Кроме того, мы вновь внесли ряд изменений в правила.
- Количество жизненной энергии зданий во всех режимах игры уменьшено вдвое
Получалось так, что даже самые сильные стратегии просто не успевали сломать все здания из-за их прочности. Игры заканчивались ничьей. Теперь у магов будет значительно больше шансов.
- Коэффициент опыта за повреждение и уничтожение зданий увеличен в два раза
Поскольку набор опыта зависит от количества урона, мы подняли этот коэффициент, чтобы не замедлять прокачку героев.
- Количество опыта за подбор бонуса уменьшено с 200 до 150
Подняв количество опыта до 200 в первом раунде, мы получили ситуацию, в которой во время появления бонуса все покидают битвы и бегут за ним. Теперь стоять на линии значительно выгоднее за счёт первых трёх изменений.
- Мультипликатор урона от бонуса empower снижен с 2 до 1,5
Получалось, что этот бонус был значительно выгоднее двух других. Мы добавили в игру немного баланса.
- Длительность действия заклинаний «Ускорение» и «Щит» увеличена вдвое. Волшебник, накладывающий магический статус на любого дружественного волшебника, автоматически получает такой же статус
MOBA — командный жанр. Мы хотим увидеть взаимодействие между участниками игры, несмотря на то что зачёт в чемпионате личный.
Приглашаем принять участие в чемпионате
Присоединяйтесь к CodeWizards 2016! Технически в игру можно загрузить крутую стратегию хоть за три дня до финала и выиграть. Дополнительный набор из Песочницы ждёт талантливых программистов!
Автор: Mail.Ru Group