Зачем учить бота распознавать кошек
Лекция была организована совместно с Высшей школой бизнес-информатики НИУ ВШЭ. Подробнее узнать про обучение созданию игр в Вышке можно на странице образовательной программы «Менеджмент игровых проектов».
В 2014 году я выиграла стипендию шведского правительства на обучение в магистратуре Стокгольмского университета и училась на программе Media and Communication Studies. Там я устроилась в компанию FEO Media, где работала с мобильной викториной «Борьба Умов», придумывала для нее вопросы и варианты ответов. Потом я перешла на позицию QA: мне показалось это интересным. А потом я ушла в King.
Работа QA в Кинге сильно отличается от других компаний. Традиционно QA расшифровывается как Quality Assurance. Иными словами, это человек, который отвечает за качество продукции. Тебе дают продукт перед выпуском, тебе нужно его протестировать и заапрувить. В Кинге QA расшифровывается как Quality Assistance. Мы считаем, что один человек или группа людей не могут быть ответственны за качество всего продукта. Над качеством должны работать все: разработчики, дизайнеры, продюсеры, художники. Каждый должен тестировать свою часть работы. Моя задача — помочь команде выпустить продукт хорошего качества: подсказывать разные идеи для тестирования, предугадывать, какие риски могут возникнуть в результате того или иного решения.
Над чем работает игровая компания
King вплотную занимается казуальными играми и именно они вывели такой тип игр во франшизу. Примечательно, что их игры часто содержат интересный сюжет. Среди известных примеров можно выделить: Candy Crush, Pet Rescue, Farm Heroes, Bubble Witch и ещё ряд франшиз, полюбившихся игрокам.
На сегодняшний день в Candy Crush уже 3700 уровней. Есть игроки, которые были с самого начала игры и уже успели пройти весь контент, поэтому нельзя заставлять их ждать, а уж тем более терять часть аудитории. Таким образом, нужно стабильно продолжать выпускать уровни, не теряя внимания игроков.
Именно поэтому каждые две недели в игре Candy Crush выходят 50 новых уровней. Задача разработчиков перед релизом — убедиться, что уровни не слишком сложные и в то же время не слишком легкие. Как можно оптимизировать процесс, чтобы не нанимать под каждое обновление пул тестировщиков? В King нашли свой способ: в компании внедрили AI (искусственный интеллект) для тестирования Candy Crush.
Как использовать искусственный интеллект в игровой индустрии
Компания King далеко не первая, которая начала пользоваться подобными технологиями. Задача здесь не соревноваться с кем-то, а понять и сыграть так, как это бы сделали 80% игроков, не лучше и не хуже. При этом важна аккуратность и скорость бота. Можно осуществить тестирование несколькими подходами:
- Heuristics (эвристический подход) – ввести код, который проверит проходима ли вообще игра, но не получаем информации о том, пройдет ли его среднестатистический игрок, и плюс к тому в этом случае код приходится переписывать под каждый уровень.
- Monte Carlo tree search (MCTS) — дать боту пройти все возможные комбинации в одном уровне и сравнить результаты с опытом реальных людей (здесь больше аккуратности, но дольше, чем все остальные подходы).
- Deep Learning (глубокое обучение) — получить данные от реальных людей (об их прохождении других уровней, поведении при выборе комбинаций) и научить бота проходить новые уровни, как они.
- Reinforcement Learning (обучение с подкреплением) — дать боту возможность научиться самому играть в Candy Crush, но со временем его навыки игры развиваются, и он может начать играть лучше среднестатистического пользователя.
Самые главные критерии к боту — это скорость, продуктивность, процесс игры как у человека. А также будет не лишним решить, кто будет отвечать за бота: управлять им, чинить и обновлять. Сейчас мы осуществляем тестирование с помощью Deep Learning и планируем перейти на стратегию Reinforcement Learning, когда решим проблему с тем, что бот станет слишком умным и обгонит среднестатистического игрока, на которого мы ориентируемся при разработке новых уровней.
Если вы разрабатываете AI-бота, то первое, чему вы его учите – это распознаванию кошек. Подобная традиция есть у программистов, которые, начиная осваивать новый язык программирования, пишут на нем первый код – программу, выдающую на экран текст и приветствующую всех фразой “Hello, world!”. Так разработчики AI-бота сначала дают ему проанализировать определенное количество разнообразных фотографий кошек, а затем различных других животных, чтобы он научился различать объекты и смог определить его, даже если ему дадут для анализа незнакомую фотографию. Однако AI-бот делает это не как человек, а выдает процентное соотношение: на сколько этот объект похож на кошку, а на сколько – на собаку и так далее.
При чем здесь Candy Crush? По такой же технологии мы анализируем поведение игроков, отправляя боту закодированную информацию об игровом поле, а он в свою очередь выдает нам в виде процентного соотношения информацию о том, сколько пользователей сделают тот или иной ход из нескольких возможных.
Кейс Candy Crash
Сама игра строится из первоначальной модели, где каждый элемент должен быть исправен и приносить какие-то результаты. Проблема Candy Crush в том, что она была создана еще до появления искусственного интеллекта, поэтому для него игра слишком медленная, с какими-то привязанными элементами. Задачей было отвязать все эти элементы для того, чтобы игра могла работать с интеллектом. Еще важной задачей было выбрать, на чем будет реализоваться проект. В случае с данной игрой – это мобильная платформа.
В игре присутствуют различные сладости — более 100 видов. Их надо расположить определенным способом в каждом новом уровне. Можно использовать технику морского боя: для каждого вида конфет берется свое поле и на эти поля наносятся элементы по оси X и Y. Далее нужно закодировать сами ходы, то есть все варианты того, как игрок может передвигать сладости. Так каждое возможное перемещение элементов на игровом поле обозначается числом.
Следующим шагом будет пропуск через специальные IOI фильтры, то есть разбивка исходных данных на более маленькие части. После этого происходит анализ и выявление процентов нужных данных. Поскольку бот может определять картинки, ему нужно в общем поле находить возможные варианты хода. Чтобы это случилось, следует задать ему нужные фрагменты изображений для распознавания, после чего он сможет опознать наилучший вариант хода. Благодаря этому определению можно понять, насколько в процентном соотношении будет предпочтителен тот или иной ход для человека.
Самое главное в конечном счете – это убедиться, что бот играет примерно так же, как живой человек. Благодаря этому можно понять, сколько процентов прошли уровни, до какого момента и так далее.
Результаты работы ИИ
Сегодня использование искусственного интеллекта сильно облегчает задачу компании и позволяет вовремя отследить все возможные баги. Подобный подход позволяет задействовать мощности в тысячи раз превосходящие человеческие возможности и позволить направить силы специалистов для решения других, не менее важных задач, тем самым ускоряя разработку проектов и нового контента. С учетом темпов развития искусственного интеллекта, в будущем мы увидим сильный прогресс этого направления, что позволит еще больше облегчить ряд процессов, освободить больше времени и добиться лучших результатов, которые игроки наверняка смогут оценить в самом ближайшем будущем.
Чтобы подробнее разобраться в вопросе, советуем посмотреть закрытую видеозапись лекции. Если вы хотите лично посещать открытые мероприятия об игровой индустрии, то следите за анонсами на странице Высшей школы бизнес-информатики.
Окончили Вышку и тоже хотите прийти в университет с лекцией? Тогда пишите нам на почту alumni@hse.ru. Мы придумаем подходящий формат.