- PVSM.RU - https://www.pvsm.ru -
Вот уже месяц длится Russian AI Cup 2016. Это соревнование по программированию искусственного интеллекта, которое проходит в форме игры. Мы подробно рассказывали об идее и правилах нынешнего года здесь [1].
Но со старта чемпионата многое изменилось. Участникам пришлось попотеть, чтобы разобраться в непростых правилах игры, а нам — чтобы справиться с тестирующей нагрузкой. Редактировались правила, оптимизировался код, сменялись раунды и банились игроки. Рассказываем вам полную историю 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 часа. Во время них тестирующая система комплектовала и запускала игры. Итоговый рейтинг [2] основан на результатах 40 сражений.
Поздравляем победителей, прошедших во второй раунд! А остальным напоминаем о доборе участников из Песочницы. Оттуда во второй раунд попадут 60 лучших стратегий, не прошедших по итогам первого раунда.
Мы тщательно проанализировали стратегии участников раунда 1 и с сожалением обнаружили, что не все в нашем соревновании следуют правилам и соблюдают этические нормы [3] добросовестной конкуренции. Был выявлен ряд случаев совместной разработки либо использования одним человеком нескольких учётных записей в системе.
Такие участники есть и в Топ-300, что могло бы дать им право на получение двух или более футболок за прохождение в раунд 2. Даже зная об этом, ни один из таких участников не уведомил жюри соревнования о нарушении и не попросил заблокировать все свои учётные записи, кроме одной.
В этот раз мы решили ограничиться строгим предупреждением. Упомянутые участники не будут дисквалифицированы, однако они не пройдут дальше по итогам раунда 1. Вместо них в раунд 2 попадут следующие по списку; счастливчики, разумеется, будут уведомлены об этом по электронной почте.
Во время второго раунда мы открываем для волшебников доступ к прокачке заклинаний. Теперь они становятся сильнее с каждым уровнем и могут выбрать свою ветку скилов.
Новые правила. Кроме того, мы вновь внесли ряд изменений в правила.
Получалось так, что даже самые сильные стратегии просто не успевали сломать все здания из-за их прочности. Игры заканчивались ничьей. Теперь у магов будет значительно больше шансов.
Поскольку набор опыта зависит от количества урона, мы подняли этот коэффициент, чтобы не замедлять прокачку героев.
Подняв количество опыта до 200 в первом раунде, мы получили ситуацию, в которой во время появления бонуса все покидают битвы и бегут за ним. Теперь стоять на линии значительно выгоднее за счёт первых трёх изменений.
Получалось, что этот бонус был значительно выгоднее двух других. Мы добавили в игру немного баланса.
MOBA — командный жанр. Мы хотим увидеть взаимодействие между участниками игры, несмотря на то что зачёт в чемпионате личный.
Присоединяйтесь к CodeWizards 2016 [4]! Технически в игру можно загрузить крутую стратегию хоть за три дня до финала и выиграть. Дополнительный набор из Песочницы ждёт талантливых программистов!
Автор: Mail.Ru Group
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/218734
Ссылки в тексте:
[1] здесь: https://habrahabr.ru/company/mailru/blog/314594/
[2] Итоговый рейтинг: http://russianaicup.ru/contest/2/standings
[3] этические нормы: https://ru.wikipedia.org/wiki/%D0%A4%D0%B5%D0%B9%D1%80-%D0%BF%D0%BB%D0%B5%D0%B9
[4] CodeWizards 2016: http://russianaicup.ru/
[5] Источник: https://habrahabr.ru/post/317268/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.