Блог разработчиков: очеловечивание ботов

  • Hexagun

    Hexagun «Глобальный ньюсмейкер» Отдел редакции

    [​IMG]
    Всем привет!
    Рад представить вам новую запись в блоге разработчиков League of Legends. Сегодня мы оставим в покое команду, занимающуюся геймплеем, и поговорим о ботах, игры с которыми - хотите верьте, хотите нет - составляют немалую долю от всех матчей в LoL. Недавно мы сделали ряд изменений, целью которых было научить ботов вести себя более по-человечески - и нам кажется, что это интересная тема для разговора.
    Ну что же, давайте, наконец, узнаем, как сделать более совершенного, более человечного бота! Я уступаю микрофон нашему дизайнеру-аналитику RoamingNumeral- одному из создателей новых ботов. Вперед!
    [​IMG] Pwyff

    • Зачем обновлять ботов?
    Матчи с ботами составляют довольно большой процент от всех игр, даже среди игроков 30-го уровня. Люди проводят много часов в обществе компьютерных друзей, так что мы решили сделать их чуть более интересными.
    Мы опросили людей, играющих как против ботов, так и в обычном PvP-режиме. Самым частым пожеланием с их стороны было создание более "человеческих" ботов: менее предсказуемых, сосредоточенных на тех же вещах, что и реальные игроки (например, добивании миньонов или использовании комбинации умений). Что удивительно, сравнительно мало кто просил более "сложных" ботов. На основании полученных данных, мы задались целью заставить ботов вести себя более по-человечески, что, в свою очередь, сделает сложных ботов еще интереснее.
    Игроки также отметили, что боты оценивали опасность и собственные силы не так, как это делают люди. Оказалось, что они были совершенно правы.
    Как улучшить оценку угрозы

    Оценкой угрозы мы называем систему, используемую ботами для определения собственной силы и силы врага. На этой системе основаны все решения, которые бот принимает во время матча.
    Предыдущая система использовала один очень популярный в играх метод (чаще всего его используют в шутерах от первого лица). Бот оценивал величину полученного урона и на основании этого оценивал будущую опасность. В шутерах это оправдано: если бот, выйдя из-за угла, теряет под вражеским огнем половину здоровья, ему лучше убежать обратно - иначе велика вероятность потерять и вторую половину.
    Но League of Legends работает немного иначе. Если Вейгар разрядит все свои умения в бота и тот выживет, ему вовсе незачем будет убегать. Наступит время раздавить этого маленького #$@&^%@! Во время перезарядки Вейгар почти неспособен наносить урон, так почему бы не перетерпеть парочку (ну, или дюжину) автоатак, пока он уязвим?
    Наша новая система будет обрабатывать такие ситуации, принимая во внимание не только здоровье, но и доступные боту и ближайшим врагам умения. Мы уже заметили явные улучшения в оценке ботами угрозы (что, несомненно, расстроило Вейгара).

    Однако улучшения в этом вопросе не являются панацеей для ботов. League of Legends создавалась для людей, а не для искусственного интеллекта, и это порождает немало интересных проблем. К примеру, игра не знает, как работает умение до того, как оно будет использовано. Когда Моргана использует Оковы души [R], запускается скрипт, проверяющий состояние цепей; когда время действия умения заканчивается, скрипт говорит всем, кто не успел их разорвать: "Эй, ты! Замри-ка и получи урон". Но до того, как Моргана использует свое абсолютное умение, игра не знает, что Оковы души умеют наносить урон и оглушать.
    У людей есть большое преимущество: они могут читать описание умений и продумывать действия наперед. В результате игра может себе позволить не помнить, что делает умение, все время, пока оно не используется. Однако для ботов это представляет огромную проблему: они ведь не умеют читать и не учатся на собственном опыте.
    В результате боты могут только очень приблизительно оценивать, какой урон способны нанести чемпионы. Даже после обновления они будут иногда делать самоубийственные вылазки или убегать от легкой схватки из-за неверного расчета опасности... как это часто делают реальные игроки. :-P

    • Почему мы не реализовали лесников и прыжки через стены?
    Ответ на этот вопрос сводится к одному простому факту: боты не знают, где находятся стены. Они не знают даже, что это такое (тяжело быть ботом, не так ли?).
    Здесь такая же ситуация, как и с заклинаниями: LoL создавалась для игроков-людей, которым не нужно объяснять, почему нельзя все время бежать прямо - они же видят стены! Бот же просто двигается по тем координатам, которые ему выданы. Он не знает, где именно стоит стена, насколько она широка - он даже не знает, что именно ему преграждает путь (вдруг это куча миньонов?). Бот просто беззаботно бежит по прямой, соединяющей две точки, о которых ему сообщает система поиска пути.
    Как видите, прыжки сквозь стены с помощью Скачка или умений представляют собой огромную проблему для бота: не имея представления о толщине стены, не зная пути к ближайшему узкому месту, мы не можем автоматизировать этот маневр. Нам потребуется внести множество изменений в системы, отвечающие за топографию карты, чтобы научить ботов прыгать сквозь стены (и это произойдет очень-очень нескоро).
    Лесники - часть этой же истории. Для лесника очень важно правильно выбирать маршруты, исходя из их безопасности или других параметров, отличных от простого расстояния между двумя точками. Если мы не изменим системы, управляющие поиском пути и топографией, бот-лесник превратится в ходячий кошелек с тремя сотнями золота - берите кто хочет.
    Мы считаем, что было бы очень круто научить ботов прыгать через стены и зачищать лес, поэтому продолжим изучать этот вопрос. На данный момент мы решили сфокусироваться на тех вариантах поведения, которые смогут превратить ботов в более серьезных противников.


    • Направленные умения
    Одно из самых заметных различий в поведении настоящих и виртуальных игроков (до обновления последних) заключалось в реакции на направленные умения. Реальные игроки почти всегда стараются уклониться от них, боты же встречают их грудью и не морщатся. Это совершенно нечеловеческая модель поведения, поэтому мы очень хотели научить ботов уклоняться. Как вы уже наверняка догадались, нам пришлось основательно потрудиться над этой задачкой, ведь боты не "видят" направленных умений.

    Вот как бот Энни реагировал на Бросок копья [Q] Нидали.

    Видеопример.


    К счастью для бота Энни, специальная команда Riot разработала способ учета доступной информации, который поможет ИИ время от времени избегать направленных умений. Отслеживая направление, в котором смотрел враг, и учитывая, какие умения только что начали перезаряжаться, бот теперь сможет по крайней мере попытаться избежать урона.

    Вот как сработает Бросок копья [Q] после обновления бота Энни.

    Видеопример.

    После обновления боты будут пытаться увернуться от направленных умений... но, конечно, не во всех случаях. Например, Мгновенная заморозка [Q] Анивии не начинает перезаряжаться до тех пор, пока не взорвется сфера льда, поэтому боты не смогут засечь ее использование. Сфера обмана [Q] Ари возвращается обратно, и в этот момент боты уже не смогут от нее уйти. Существует еще немало умений, с которыми текущая система не может справиться, но способность увернуться от части направленных умений - лучше, чем полное ее отсутствие.

    • Комбинации умений и предметы
    Даже если не рассматривать описанные выше сложные ситуации, мы могли бы серьезно улучшить поведение ботов, потратив достаточное количество времени на обновление их комбинаций умений и наборов предметов. Один из тестеров по имени Riot Afic оказал нам неоценимую помощь, поделившись с нами знаниями, достойными игрока алмазной лиги. Обновленные боты теперь будут использовать современные комбинации и собирать более подходящие для игры предметы.
    К слову, бот Энни теперь будет использовать волшебное трио "Скачок-оглушение-Тибберс", так что готовьте подгузники, ребята.

    • Более человечные боты
    Неудивительно, что боты, пытающиеся отследить еще больше переменных, становятся большим вычислительным бременем для процессора. Наши инженеры RiotAaronMike и RiotWooTang проделали огромную работу по оптимизации нашего кода, так что обновление не окажет заметного влияния на производительность серверов.
    Хорошим способом сделать ботов более эффективными и более похожими на людей является уменьшение частоты проверки переменных и реакции в зависимости от игровой ситуации. Боты-новички теперь проверяют окружение в три раза реже, а боты среднего уровня - с частотой от 50% до 100% от старого значения, в зависимости от текущего уровня опасности. Ни одно из этих значений нельзя назвать словом "медленно", но все равно их скорость реакции значительно уменьшилась - соответственно, стала больше похожа на человеческую.
    Эти и многие другие (незаметные глазу) изменения помогли, на наш взгляд, создать ботов, чья игра похожа на человеческую. Конечно, им еще рано в алмазную лигу (они и до серебра, наверное, не дотягивают) - но на данном этапе мы добились своих целей. На следующем этапе мы попытаемся развить успех и сделать первые игры новичков против компьютерных соперников более интересными. Скоро мы расскажем вам подробности о новом проекте!

    Автор:[​IMG] RoamingNumeral
     
Комментарии
  1. |||||||||||
    Такими темпами Энни-бот скоро будет одежду и мотоциклы у людей отбирать.
    [​IMG]
    MadSplinter нравится это.
  2. Ilgor
    Сделайте бота уровня фейкера, чтобы тренироваться.
  3. Tachibana
    Офигительно, Изумительно, Поразительно, Опупительно, дайте два ! :wub:

    Я то думаю то ли стрелять не умею то ли меня плющит, а оно вот что оказалос.
    Зделайте ХардБотов.
    Что бы у них зашкаливал скил они всю карту сканировали о местоположении врагов и стреляли по кустам в зайцев.
    Хочу что бы они Аннигилировали все живое в радиусе действия их умений, а убить их было неимоверно трудной задачей.
    Хочу играть против терминаторов предсказывающий дествия игроков и воопще чтоб они попаболь устраивали.
    Tulshe и Ambu5h нравится это.
  4. Sergalius
    Теперь Анечка бот будет полезней любой другой Анечки хех
  5. @dept
    Давно пора, скоро, народ перестанет играть с людьми.
  6. SkyFoxGG
    Против ботов играть легко. Не думаю, что даже обновленные боты будут создавать какие-то проблемы.
    Попросил друга пару раз сыграть против меня со скриптами. Честно, если бы боты использовали такие скрипты, то это была нереально сложная тренировка. Скорость реакции и попадание скиллами на уровне Diamond-Challenger. Жаль, что таких ботов не будет...
    MadSplinter нравится это.
  7. Vadkin
    Боты и сейчас иногда чудеса показывают, чего только стоит бот фидл ультующий с флеша из куста, я чуть со стула не упал когда он такое сотворил)
    --- добавлено: 16 апр 2014 ---
    Реакция попадания скилами у ботов как раз отличная (попробуй подойти на рейндж каста к ботам вейгару, бренду, райзу в игре длящейся больше 20 минут)), они просто микрить не умеют, их движения очень предсказуемы, но попадают они более метко и быстро, чем люди.
    ПС. На днях смотрел стрим Вингсофдеса, он проиграл ботам на смурф акаунте, челенджер НА, хехехе)
  8. momus
    Рито оффициально признали, что игроки на серебрянке играют хуже ботов.
  9. Nirkas
    В Dota 2 боты прекрасно понимают против кого они стоят,и на хук пуджа попадают даже реже чем обычные игроки.Все упирается в умения программистов,не более.
  10. BigMousy
    Ну я видел, как сильвер 1 посан сделал 0-3-0 против бота на миду :awesome: