SlideShare a Scribd company logo
1 of 31
Спортивное программирование -
это не страшно!
Опыт участия в конкурсе
Russian AI Cup 2013
CodeTroopers
Russian AI Cup - соревнование по
программированию искусственного интеллекта
(AI).
Задача: написать AI, управляющий отрядом солдат
в пошаговой стратегии.
Стратегии соревнуются между собой в боях:
О конкурсе: постановка задачи
СЕРВЕР СТРАТЕГИЯ
СТРАТЕГИЯ
СТРАТЕГИЯ
Состояние игрового мира
Действие
О конкурсе: принцип боя
5 видов юнитов, 3 типа бонусов:
О конкурсе: правила игры
Юниты ходят по очереди, на ход дается 10-12 очков действия.
За нанесение урона / уничтожение юнитов противника начисляются очки.
Побеждает команда, набравшая больше очков (даже если все её бойцы
были уничтожены).
Лимит времени: 0.2 секунды на ход (в среднем).
Видимость несимметрична:
A не видит B, но B видит A
“Физический смысл” видимости:
О конкурсе: видимость
вид сбоку
О конкурсе: формат соревнования
• языковой пакет - скелет стратегии
• Local Runner
• Repeater
Набор участника
CodeTroopers (2013)
• игра пошаговая
• четкие, однозначные
правила позволяют
точно предсказать
состояние игрового
мира
• игра с неполной
информацией
Отличия от CodeTanks
CodeTanks (2012)
● игра реального времени
● симуляция физики с
неизвестными
параметрами
Отличия от “обычного” соревнования:
• продолжительность: не 4-5 часов, а 4-5 недель
• сравнительно большой обьем кода, итерационная разработка
• упор не на эффективность алгоритмов, а на способность к развитию
• поэтому архитектура, расширяемость и удобство отладки имеют большое
значение
Отличия от разработки AI для реальных игр:
• В реале обычно иная цель - чтобы AI играл интересно, развлекал игрока.
А не тупо выигрывал.
Отличительные особенности
• Нет смысла делать версию, которую потом придется
полностью переделывать. Эвристики - путь тупиковый,
поэтому нужно сразу писать перебор.
• Ключевые факторы - скорость развития и отсутствие
багов. Поэтому нужны хорошие средства отладки.
• Нюансы решают! Не усложнять!
• План развития: добавлять фичи, углублять перебор,
оптимизировать параметры (возможно генетическим
алгоритмом?)
Строим начальный план
Глобальный AI
Анализирует состояние игрового мира,
ставит глобальные цели,
меняет параметры локального AI для
достижения глобальных целей.
Архитектура базовой версии
Локальный AI
принимает решение по текущему ходу
Перебор всех возможных
действий
(с отсечением)
Оценочная функция
Базовая версия учитывает такие факторы:
• общее здоровье команды
• продвижение к глобальной цели
• “выгодность” занимаемых клеток (4x-3y)
• расстояние до остальных членов команды (особенно
для командира и медика
• стойку и возможность нанесения урона видимым
противникам
• невидимость для известных противников
• наличие бонусов
Оценочная функция
Отладчик-визуализатор
Логи перебора
При тестировании боя создается 200-400 Mb логов с описанием всех
перебираемых вариантов действий:
1. Протестировать очередной бой.
2. Что-то не так?
3. Выяснить причину неразумного поведения по логам
4. Проблема может быть решена оптимизацией
параметров?
5. Если нет - подумать над добавлением новой фичи.
Принцип доработки
Фичи, добавленные до 1-го раунда
• использование всех типов бонусов
• pathfinding для определения расстояния между
юнитами / целями
• сохранение позиций врагов в течение хода
• определение известных карт
• обнаружение скрытого урона
• стратегия “доения медика”
• стратегия избегания “доения”
• авиаразведка и стратегия добивания
Добавление фич
Оптимизация параметров редко позволяет добиться
принципиально иного поведения в бою. Уровень игры
стратегии упирается в потолок.
А добавление новых фич способно сломать слаженную
работу имеющихся параметров оценочной функции.
Фичи vs оптимизация
Чтение форумов позволяет узнать, над чем работают
другие.
Учиться лучше на чужих ошибках.
Наблюдение за соперниками
Общий рейтинг песочницы не дает хорошего
представления об уровне игры новых версий.
Можно создавать бои вручную на сервере:
Где мы находимся?
Ограничения Local Runner:
• доступна лишь одна карта
• ограниченность в выборе соперников
Что делать?
а) взломать и модифицировать Local Runner
б) написать свой аналог
Локальное тестирование
Проверка боем даёт самые достоверные сведения о
реальном положении дел!
1. Это уникальная возможность для сравнения версий.
2. Возможность проверки корреляции результатов
раунда с результатами локального тестирования.
1-й раунд!
Опираемся на результаты локального тестирования:
• масштабный тюнинг параметров
Новые фичи:
• Оценка вероятности гранатных атак
• Сохранение информации о врагах между ходами
• Базовое определение порядка ходов
• Определение возможных позиций невидимых врагов
при получении урона
• Возможность бросать гранаты в невидимые клетки
• Учёт уничтоженных врагов
• Waypoints
Дальнейшее развитие
Сумма линейных функций - линейна.
Максимум такой функции - всегда на краях диапазона.
Иногда это хорошо, но бывает так, что нужен
компромисс.
Проблема крайностей
Убегать Нападать
Риска практически нет, поэтому те же принципы, что и в
первом раунде:
• ручной сбор статистики
• сравнение версий между собой и с результатами
локального тестирования
2-й раунд!
Почему эволюционный алгоритм не годится:
• еще много нереализованных фич!
• слишком долго: выгоднее потратить время на фичи
• есть опасность, что “не сработает” в реальном бою из-
за нерепрезентативной / ограниченной популяции
• люди говорят, что именно так оно и выходит :(
Что делать?
Оптимизировать параметры путём “ручной эволюции”
(похоже на линейное программирование).
Эволюция
Углубление перебора - FAILED! (а ведь предупреждали!)
Почему так?
• Игра с неполной информацией - неопределённость
слишком велика.
• Большое количество нюансов делает задачу крайне
сложной как в реализации, так и в дебаге.
Итог: 3 дня (из 5) потрачено впустую :(
Дальнейшее развитие
Новые фичи:
• Поле вероятности врагов
• Динамическая карта выгодности/опасности
• Более точное определение порядка ходов
• Режимы: разведка, бой, отступление, суицид.
• Вейпоинты и параметры, зависящие от карты и типа
юнита.
• Учет промежуточных положений (разведка)
Дальнейшее развитие - 2
Причины (на мой взгляд) неудачи в финале:
• потеря времени на углубленный поиск
• отсюда: недоработанность фич, баги, недостаточная
оптимизация параметров
• локальное сравнение версий уже не дает хорошего
результата
А как надо было делать?
• Формат финала сильно отличается - начинать работу над
ним следовало еще задолго до 2-го раунда (а ведь так и
планировал!)
• Необходимо было оставить хотя бы 2 дня на подгонку
параметров и проверку работы стратегии на реальных
противниках.
ФИНАЛ
После завершения конкурса все любят рассказывать:
“Как я это сделал!”
Оказалось что:
• Большинство стратегий устроены и работают
примерно одинаково.
• Многие топы (но не slash!) делали визуализаторы.
• Реализация перебора у slash’а весьма оригинальна.
• Никто из участников финала, рассказавших о своих
стратегиях, не использовал перебор глубже чем на 1
ход (зато со свистелками!)
• Большинство финалистов не реализовали всё, что
хотели.
А что же другие?
Очень хороший уровень организации. Никаких накладок
и сбоев.
Интересная задача: достаточно глубокая, с
разнообразными подходами к решению.
Впечатления от конкурса
Вопросы?
Кстати, их можно задать и по почте: cooler@tut.by ;)
А рассказ победителя можно почитать тут:
http://habrahabr.ru/post/206680/
Спасибо за внимание!

More Related Content

Viewers also liked

Russian internet audience in 2010
Russian internet audience in 2010 Russian internet audience in 2010
Russian internet audience in 2010 Fedor Virin
 
Как перестать мотивировать персонал
Как перестать мотивировать персоналКак перестать мотивировать персонал
Как перестать мотивировать персоналDaniil Kolesnikov
 
Обучение взрослых
Обучение взрослыхОбучение взрослых
Обучение взрослыхDaniil Kolesnikov
 
Открытые данные: Рычаг экономического развития или неэффективная растрата гос...
Открытые данные: Рычаг экономического развития или неэффективная растрата гос...Открытые данные: Рычаг экономического развития или неэффективная растрата гос...
Открытые данные: Рычаг экономического развития или неэффективная растрата гос...Natasha Khramtsovsky
 
Sales for Startups
Sales for StartupsSales for Startups
Sales for StartupsYesware
 
Impact mapping - типичные проблемы
Impact mapping - типичные проблемыImpact mapping - типичные проблемы
Impact mapping - типичные проблемыArtem Serdyuk
 
Customer journey, пиратские метрики и лестница узнавания
Customer journey, пиратские метрики и лестница узнаванияCustomer journey, пиратские метрики и лестница узнавания
Customer journey, пиратские метрики и лестница узнаванияArtem Serdyuk
 
White Sales School - About Sales Management
White Sales School - About  Sales ManagementWhite Sales School - About  Sales Management
White Sales School - About Sales ManagementMark&Sales
 

Viewers also liked (9)

Russian internet audience in 2010
Russian internet audience in 2010 Russian internet audience in 2010
Russian internet audience in 2010
 
Как перестать мотивировать персонал
Как перестать мотивировать персоналКак перестать мотивировать персонал
Как перестать мотивировать персонал
 
Обучение взрослых
Обучение взрослыхОбучение взрослых
Обучение взрослых
 
Открытые данные: Рычаг экономического развития или неэффективная растрата гос...
Открытые данные: Рычаг экономического развития или неэффективная растрата гос...Открытые данные: Рычаг экономического развития или неэффективная растрата гос...
Открытые данные: Рычаг экономического развития или неэффективная растрата гос...
 
Sales for Startups
Sales for StartupsSales for Startups
Sales for Startups
 
Impact mapping - типичные проблемы
Impact mapping - типичные проблемыImpact mapping - типичные проблемы
Impact mapping - типичные проблемы
 
Development of the russian sea port infrastructure.
Development of the russian sea port infrastructure. Development of the russian sea port infrastructure.
Development of the russian sea port infrastructure.
 
Customer journey, пиратские метрики и лестница узнавания
Customer journey, пиратские метрики и лестница узнаванияCustomer journey, пиратские метрики и лестница узнавания
Customer journey, пиратские метрики и лестница узнавания
 
White Sales School - About Sales Management
White Sales School - About  Sales ManagementWhite Sales School - About  Sales Management
White Sales School - About Sales Management
 

Similar to Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian Al Cup 2013, Поляков Иван

Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Daria Oreshkina
 
Моделирование продукта с использованием бумажного прототипирования. Agilecamp...
Моделирование продукта с использованием бумажного прототипирования. Agilecamp...Моделирование продукта с использованием бумажного прототипирования. Agilecamp...
Моделирование продукта с использованием бумажного прототипирования. Agilecamp...Andrew Shapiro
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 
UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...
UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...
UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...DevGAMM Conference
 
Алексей Тарасенко - Zeptolab
Алексей Тарасенко - ZeptolabАлексей Тарасенко - Zeptolab
Алексей Тарасенко - Zeptolab.toster
 
Dota Science: Роль киберспорта в обучении анализу данных
Dota Science: Роль киберспорта в обучении анализу данныхDota Science: Роль киберспорта в обучении анализу данных
Dota Science: Роль киберспорта в обучении анализу данныхromovpa
 
Feedback collection proper way. How to avoid data garbling
Feedback collection proper way. How to avoid data garblingFeedback collection proper way. How to avoid data garbling
Feedback collection proper way. How to avoid data garblingDevGAMM Conference
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)Ontico
 
Тестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покерТестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покерSQALab
 
King's Bounty 2: Tools and tech for open world game
King's Bounty 2: Tools and tech for open world gameKing's Bounty 2: Tools and tech for open world game
King's Bounty 2: Tools and tech for open world gameDevGAMM Conference
 
How to organize game design department in a right way
How to organize game design department in a right wayHow to organize game design department in a right way
How to organize game design department in a right wayDevGAMM Conference
 
Tech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игруTech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игруTech Talks @NSU
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИСYandex
 
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)DevGAMM Conference
 
Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...
Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...
Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...Lviv Startup Club
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».
Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».
Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».Андрей Бростовский
 
Game design analytics: case studies
Game design analytics: case studiesGame design analytics: case studies
Game design analytics: case studiesDevGAMM Conference
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковDevGAMM Conference
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаAnton Volkov
 

Similar to Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian Al Cup 2013, Поляков Иван (20)

Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!
 
Моделирование продукта с использованием бумажного прототипирования. Agilecamp...
Моделирование продукта с использованием бумажного прототипирования. Agilecamp...Моделирование продукта с использованием бумажного прототипирования. Agilecamp...
Моделирование продукта с использованием бумажного прототипирования. Agilecamp...
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...
UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...
UX дневник как инструмент тестирования игры / Мария Амирханян, Екатерина Лисо...
 
Алексей Тарасенко - Zeptolab
Алексей Тарасенко - ZeptolabАлексей Тарасенко - Zeptolab
Алексей Тарасенко - Zeptolab
 
Dota Science: Роль киберспорта в обучении анализу данных
Dota Science: Роль киберспорта в обучении анализу данныхDota Science: Роль киберспорта в обучении анализу данных
Dota Science: Роль киберспорта в обучении анализу данных
 
Feedback collection proper way. How to avoid data garbling
Feedback collection proper way. How to avoid data garblingFeedback collection proper way. How to avoid data garbling
Feedback collection proper way. How to avoid data garbling
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
 
Тестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покерТестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покер
 
King's Bounty 2: Tools and tech for open world game
King's Bounty 2: Tools and tech for open world gameKing's Bounty 2: Tools and tech for open world game
King's Bounty 2: Tools and tech for open world game
 
How to organize game design department in a right way
How to organize game design department in a right wayHow to organize game design department in a right way
How to organize game design department in a right way
 
Tech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игруTech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игру
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
 
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)
 
Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...
Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...
Олександр Дзюба та Євгеній Тур "Майстер-клас “Вивчення гравців. DIY” Ми реаль...
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».
Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».
Докладчик: Пётр Камышников, глава команды интерфейса на проекте «Аллоды Онлайн».
 
Game design analytics: case studies
Game design analytics: case studiesGame design analytics: case studies
Game design analytics: case studies
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типа
 

More from solit

Jazz team cooperation roadmap
Jazz team cooperation roadmapJazz team cooperation roadmap
Jazz team cooperation roadmapsolit
 
JazzTeam company presentation
JazzTeam company presentationJazzTeam company presentation
JazzTeam company presentationsolit
 
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко АнтонSolit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антонsolit
 
Solit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко АнтонSolit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко Антонsolit
 
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...solit
 
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...solit
 
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...solit
 
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...solit
 
Solit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович ЮлияSolit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович Юлияsolit
 
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...solit
 
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...solit
 
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко АнтонSolit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антонsolit
 
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter ReitsmaSolit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsmasolit
 
Solit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов АлександрSolit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов Александрsolit
 
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...solit
 
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...solit
 
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...solit
 
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...solit
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...solit
 
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил solit
 

More from solit (20)

Jazz team cooperation roadmap
Jazz team cooperation roadmapJazz team cooperation roadmap
Jazz team cooperation roadmap
 
JazzTeam company presentation
JazzTeam company presentationJazzTeam company presentation
JazzTeam company presentation
 
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко АнтонSolit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
 
Solit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко АнтонSolit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко Антон
 
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
 
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
 
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
 
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
 
Solit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович ЮлияSolit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович Юлия
 
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
 
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
 
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко АнтонSolit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
 
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter ReitsmaSolit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
 
Solit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов АлександрSolit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов Александр
 
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
 
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
 
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
 
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
 
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
 

Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian Al Cup 2013, Поляков Иван

  • 1. Спортивное программирование - это не страшно! Опыт участия в конкурсе Russian AI Cup 2013 CodeTroopers
  • 2. Russian AI Cup - соревнование по программированию искусственного интеллекта (AI). Задача: написать AI, управляющий отрядом солдат в пошаговой стратегии. Стратегии соревнуются между собой в боях: О конкурсе: постановка задачи СЕРВЕР СТРАТЕГИЯ СТРАТЕГИЯ СТРАТЕГИЯ Состояние игрового мира Действие
  • 4. 5 видов юнитов, 3 типа бонусов: О конкурсе: правила игры Юниты ходят по очереди, на ход дается 10-12 очков действия. За нанесение урона / уничтожение юнитов противника начисляются очки. Побеждает команда, набравшая больше очков (даже если все её бойцы были уничтожены). Лимит времени: 0.2 секунды на ход (в среднем).
  • 5. Видимость несимметрична: A не видит B, но B видит A “Физический смысл” видимости: О конкурсе: видимость вид сбоку
  • 6. О конкурсе: формат соревнования
  • 7. • языковой пакет - скелет стратегии • Local Runner • Repeater Набор участника
  • 8. CodeTroopers (2013) • игра пошаговая • четкие, однозначные правила позволяют точно предсказать состояние игрового мира • игра с неполной информацией Отличия от CodeTanks CodeTanks (2012) ● игра реального времени ● симуляция физики с неизвестными параметрами
  • 9. Отличия от “обычного” соревнования: • продолжительность: не 4-5 часов, а 4-5 недель • сравнительно большой обьем кода, итерационная разработка • упор не на эффективность алгоритмов, а на способность к развитию • поэтому архитектура, расширяемость и удобство отладки имеют большое значение Отличия от разработки AI для реальных игр: • В реале обычно иная цель - чтобы AI играл интересно, развлекал игрока. А не тупо выигрывал. Отличительные особенности
  • 10. • Нет смысла делать версию, которую потом придется полностью переделывать. Эвристики - путь тупиковый, поэтому нужно сразу писать перебор. • Ключевые факторы - скорость развития и отсутствие багов. Поэтому нужны хорошие средства отладки. • Нюансы решают! Не усложнять! • План развития: добавлять фичи, углублять перебор, оптимизировать параметры (возможно генетическим алгоритмом?) Строим начальный план
  • 11. Глобальный AI Анализирует состояние игрового мира, ставит глобальные цели, меняет параметры локального AI для достижения глобальных целей. Архитектура базовой версии Локальный AI принимает решение по текущему ходу Перебор всех возможных действий (с отсечением) Оценочная функция
  • 12. Базовая версия учитывает такие факторы: • общее здоровье команды • продвижение к глобальной цели • “выгодность” занимаемых клеток (4x-3y) • расстояние до остальных членов команды (особенно для командира и медика • стойку и возможность нанесения урона видимым противникам • невидимость для известных противников • наличие бонусов Оценочная функция
  • 14. Логи перебора При тестировании боя создается 200-400 Mb логов с описанием всех перебираемых вариантов действий:
  • 15. 1. Протестировать очередной бой. 2. Что-то не так? 3. Выяснить причину неразумного поведения по логам 4. Проблема может быть решена оптимизацией параметров? 5. Если нет - подумать над добавлением новой фичи. Принцип доработки
  • 16. Фичи, добавленные до 1-го раунда • использование всех типов бонусов • pathfinding для определения расстояния между юнитами / целями • сохранение позиций врагов в течение хода • определение известных карт • обнаружение скрытого урона • стратегия “доения медика” • стратегия избегания “доения” • авиаразведка и стратегия добивания Добавление фич
  • 17. Оптимизация параметров редко позволяет добиться принципиально иного поведения в бою. Уровень игры стратегии упирается в потолок. А добавление новых фич способно сломать слаженную работу имеющихся параметров оценочной функции. Фичи vs оптимизация
  • 18. Чтение форумов позволяет узнать, над чем работают другие. Учиться лучше на чужих ошибках. Наблюдение за соперниками
  • 19. Общий рейтинг песочницы не дает хорошего представления об уровне игры новых версий. Можно создавать бои вручную на сервере: Где мы находимся?
  • 20. Ограничения Local Runner: • доступна лишь одна карта • ограниченность в выборе соперников Что делать? а) взломать и модифицировать Local Runner б) написать свой аналог Локальное тестирование
  • 21. Проверка боем даёт самые достоверные сведения о реальном положении дел! 1. Это уникальная возможность для сравнения версий. 2. Возможность проверки корреляции результатов раунда с результатами локального тестирования. 1-й раунд!
  • 22. Опираемся на результаты локального тестирования: • масштабный тюнинг параметров Новые фичи: • Оценка вероятности гранатных атак • Сохранение информации о врагах между ходами • Базовое определение порядка ходов • Определение возможных позиций невидимых врагов при получении урона • Возможность бросать гранаты в невидимые клетки • Учёт уничтоженных врагов • Waypoints Дальнейшее развитие
  • 23. Сумма линейных функций - линейна. Максимум такой функции - всегда на краях диапазона. Иногда это хорошо, но бывает так, что нужен компромисс. Проблема крайностей Убегать Нападать
  • 24. Риска практически нет, поэтому те же принципы, что и в первом раунде: • ручной сбор статистики • сравнение версий между собой и с результатами локального тестирования 2-й раунд!
  • 25. Почему эволюционный алгоритм не годится: • еще много нереализованных фич! • слишком долго: выгоднее потратить время на фичи • есть опасность, что “не сработает” в реальном бою из- за нерепрезентативной / ограниченной популяции • люди говорят, что именно так оно и выходит :( Что делать? Оптимизировать параметры путём “ручной эволюции” (похоже на линейное программирование). Эволюция
  • 26. Углубление перебора - FAILED! (а ведь предупреждали!) Почему так? • Игра с неполной информацией - неопределённость слишком велика. • Большое количество нюансов делает задачу крайне сложной как в реализации, так и в дебаге. Итог: 3 дня (из 5) потрачено впустую :( Дальнейшее развитие
  • 27. Новые фичи: • Поле вероятности врагов • Динамическая карта выгодности/опасности • Более точное определение порядка ходов • Режимы: разведка, бой, отступление, суицид. • Вейпоинты и параметры, зависящие от карты и типа юнита. • Учет промежуточных положений (разведка) Дальнейшее развитие - 2
  • 28. Причины (на мой взгляд) неудачи в финале: • потеря времени на углубленный поиск • отсюда: недоработанность фич, баги, недостаточная оптимизация параметров • локальное сравнение версий уже не дает хорошего результата А как надо было делать? • Формат финала сильно отличается - начинать работу над ним следовало еще задолго до 2-го раунда (а ведь так и планировал!) • Необходимо было оставить хотя бы 2 дня на подгонку параметров и проверку работы стратегии на реальных противниках. ФИНАЛ
  • 29. После завершения конкурса все любят рассказывать: “Как я это сделал!” Оказалось что: • Большинство стратегий устроены и работают примерно одинаково. • Многие топы (но не slash!) делали визуализаторы. • Реализация перебора у slash’а весьма оригинальна. • Никто из участников финала, рассказавших о своих стратегиях, не использовал перебор глубже чем на 1 ход (зато со свистелками!) • Большинство финалистов не реализовали всё, что хотели. А что же другие?
  • 30. Очень хороший уровень организации. Никаких накладок и сбоев. Интересная задача: достаточно глубокая, с разнообразными подходами к решению. Впечатления от конкурса
  • 31. Вопросы? Кстати, их можно задать и по почте: cooler@tut.by ;) А рассказ победителя можно почитать тут: http://habrahabr.ru/post/206680/ Спасибо за внимание!