23 февраля российская компания Nival представила Бориса — первый в мире нейросетевой искусственный интеллект для стратегий. В начале марта DTF отправился на экскурсию в петербургский офис разработчиков, чтобы поподробнее узнать о том, как работает этот ИИ и почему никто не создал ничего подобного раньше.
Фото: Анастасия Степанова
Несмотря на то, что штаб-квартира Nival переместилась в Лимасол (там в основном проводит время глава компании Сергей Орловский), петербургский офис по-прежнему остаётся её самым крупным подразделением: в нём трудится около сотни человек, и только часть из них работает над «Блицкригом 3».
Офис Nival находится в массивном бизнес-центре рядом с метро Пролетарская. Хоть из окон разработчиков и есть вид на Неву, это тот Петербург, о котором говорят меньше всего. Если рядом с Пролетарской открыть Foursquare, то почти все ближайшие кафе и рестораны будут содержать слово «шаверма» в названии.
Сам офис Nival тоже на первый взгляд не слишком похож на место, где делают игры. С тем же успехом здесь могла бы размещаться какая-нибудь транспортная компания. Название Nival можно встретить только на небольшом лого у лифта да на табличках.
После небольшой экскурсии по офису меня пригласили в одно из помещений, чтобы показать в действии Бориса — главный PR-инструмент, с помощью которого будут продвигать «Блицкриг 3».
К моему удивлению, глава разработки Павел Науменко не начал играть против Бориса сам, а заставил двух Борисов сражаться между собой. Матч длился около 15 минут: два ИИ активно захватывали точки и водили небольшие пехотные отряды и технику по карте.
Отличить происходящее на экране от игры живого человека практически невозможно, но недоработки ещё есть: например, некоторые юниты могут никак не реагировать, если по ним из дальнобойного оружия стреляют из тумана войны. Павел Науменко знает о проблеме и обещает исправить её в ближайшее время.
Пока идёт бой, глава разработки «Блицкрига 3» обращает моё внимание на то, как ИИ с умом использует расположенные на карте пушки, и пытается спасти свою технику, если она встретилась с превосходящими силами противника.
Силы в матче оказались далеко не равными: один Борис проиграл другому с треском. По словам Науменко, боты помогают студии тестировать и сами карты: если в симуляциях у одной стороны слишком много побед, значит, у карты плохой баланс. Если двух Борисов поставить в абсолютно равные условия, то большую роль будет играть простая случайность.
В перспективе Бориса будут предлагать пользователям как услугу: после нескольких неудачных попыток на экране должна появиться плашка с предложением поиграть с нейросетевым ИИ.
После демонстрации меня отвели в комнату отдыха, где сотрудники расслабляются за Mortal Kombat и HTC Vive. У студии есть доступ почти ко всем самым популярным VR-играм, так как она и сама работает в этой области.
Тут у меня появилась возможность задать главе разработке «Блицкриг 3» все накопившиеся вопросы.
В прошлом ноябре Google DeepMind и Blizzard объявили, что будут делать нейросетевой ИИ для игры в Starcraft II. Чем их решение отличается от вашего?
Павел Науменко: У DeepMind решает задачу на ранг выше, потому что у них есть экономика. Они хотят сделать не крутой ИИ, который будет играть классно в Starcraft, а сделать нейросетку, которая будет классно решать экономические задачи. Вот их цель, а игра — всего лишь полигон.
Мы же решаем другую задачу. У нас нет цели поставить суперкомьютер с двадцатью видеокарточками, который будет просчитывать огромную нейросеть с миллионом нейронов и выигрывать чемпиона мира.
Допустим, у нас есть пять карт для PvP, и под каждую из них у нас отдельные «мозги». Можно, конечно, сделать одну сетку побольше, которая будет уметь играть на всех этих картах, но она будет требовать больше ресурсов, а мы решаем прикладную задачу — например, чтобы тысяча игроков могла одновременно играть с нейросетью.
То есть локально с Борисом поиграть не удастся?
В «Блицкриг 3» к сожалению без интернета не поиграть. У нас вообще клиент очень тонкий, игра крутится не на компьютере игрока, а на серверах. Игрок получает только картинку и информацию о том, что происходит, и сам отдаёт указания.
Вам не кажется, что это немножко ограничивает идею Бориса? Разве он не создан для того, чтобы в «Блицкриг» играли те, кому живых оппонентов не найти — в том числе из-за отсутствия интернета. Почему игрок должен выбирать Бориса, а не живого человека?
Иногда игрок не хочет играть против живого человека, хочет потренироваться, но не хочет проигрывать, или хочет получить практику без влияния на рейтинг.
В большинстве ботов задача решается тривиально: например, они знают, где расположены все юниты противника, или получают больший стартовый капитал, чем игрок.
Очень много жалоб на ботов в Civilization: как только пользователь «съедает» гандикап, выданный ИИ, играть становится неинтересно. Именно эту задачу мы решаем.
Борис отличается от обычных ботов тем, что видит только то, что видит человек?
Я немного углублюсь в историю его создания. Начинали мы, конечно, с алгоритмического ядра. Это не первый наш подход к ИИ для PvP-режимов, но предыдущие нам ничего толком не принесли.
С лета 2016 года мы плотно начали заниматься этим вопросом, озаботившись архитектурой этого бота, сделав его максимально универсальным.
Его структура и навыки похожи на человеческие. Он умеет в терминах самой игры перемещаться, прицеливаться, стрелять, приседать — какие-то такие простые кванты действий, которые при этом никакими жёсткими связями не завязаны.
Когда мы сделали первое приближение, мы увидели поведение, которое уже существенным образом отличалось от поведения классического бота.
У нас всё построено на оценочных функциях, связях, многомерных пространствах решений — на таких вещах. Нигде не указано, что, например, три юнита должны идти вместе.
На первых этапах бот видел всё, потому что так проще строить саму игровую модель. Мы увидели большой потенциал в том, чтобы сделать его действительно честным и просто отрезали все эти вещи, которые ему знать не полагается.
Хорошим примером может служить расположение юнитов соперника в «тумане войны» — это достаточно непростая задача, она не имеет точного решения, но зато очень хорошо подходит под нейросеть, которая ищет максимально вероятное решение при заданных условиях.
Борис тренируется, играя с пользователями? Или он в каком-то статичном состоянии находится?
Конечно тренируется и становится лучше.
А как тогда регулировать сложность?
В нескольких местах. Например, набором юнитов. Сейчас мы тестируем бота на эквивалентных наборах: стартовые войска у игрока и ИИ одинаковые. Для начала мы можем просто забрать у него часть юнитов. В версии, которую мы будем выпускать в марте, именно такой метод и будет использоваться.
А глупее его можно как-нибудь сделать?
Очень сложно.
Допустим, ограничить ему количество принимаемых решений в секунду.
Это тоже решение, которое лежит на поверхности, но если увеличить задержку с одной секунды до трёх, игрок разницы не увидит. Если раз в десять секунд, то да — будет заметно.
Допустим, у вас есть начинающий игрок. Он зайдёт поиграть к этому боту, бот надерёт его несколько раз, и человек просто не захочет возвращаться.
Справедливое замечание. Поэтому мы в обучении не планируем использовать последние версии бота. Мы не знаем, как сделать так, чтобы игрок не получил очень жёсткую боль, не ограничивая количество и качество юнитов. Поэтому в туториале у нас бот, который умеет хорошо передвигаться, но ничего больше. Он, например, не умеет использовать поддержки, такие как артудар, бомбардировщик и прочие, пехота не умеет занимать фортификации.
Если бот постоянно тренируется, он может упереться в определённый потолок и обыгрывать всех со стопроцентной вероятностью?
Нет, я так не считаю. Это хороший вопрос, чтобы прояснить, чем мы отличаемся от DeepMind. У них это чисто нейросеть, в которую ты загружаешь свёрнутую в каком-то виде картинку, и которая должна на выходе давать действия.
У нас есть алгоритмическое ядро, бот, который умеет выполнять какие-то функции, а нейросетка выдаёт ему недостающую информацию или информацию, которую алгоритм очень плохо описывает. То есть, мы отрезаем алгоритмические куски, но не все.
То есть у вас нейросеть по сути смотрит на картинку игры, как это делает живой игрок? Первичный захват основан на визуальных образах?
Да. Предсказание положения вражеских юнитов в тумане войны именно так и построено. Учитывается положение твоих юнитов, положение юнитов, которые ты видишь и та зона, которая тебе открыта — её геометрия.
Но в то же время у нейросети есть преимущество. Ведь она сразу видит всю карту, а не только то, что на условном мониторе видел бы живой игрок, чей обзор ограничен?
Да, у ИИ тут есть определённое преимущество, но оно не такое большое, как может показаться. У нас игра не про огромные армии. Но если увеличивать количество сущностей, то компьютер будет получать всё большее и большее преимущество, потому что у него банально «больше рук».
Вы думали о том, чтобы вынести свою технологию за пределы «Блицкрига 3»? Продавать отдельно.
Да. Этот вопрос рассматривался. Текущую архитектуру, которая у нас есть, мы можем портировать в сжатые сроки, месяца за три, на любую игру, связанную со сражением армии против армии, но без экономики, без строительства баз.
С базами сделать обучение намного сложнее, так как в этой ситуации решение с очень большой задержкой воздействует на результат. Чем короче эффект, тем проще обучаться.
Поэтому мы ничего не сможем сделать, например, для Starcraft. Точнее, мы можем сделать для них бота, который будет неплохо сражаться, но поведение с точки зрения экономики получится либо не гибким, либо предсказуемым.
По поводу гибридной системы. Получается, что у вас есть обычный бот, который играет в игру и нейросеть, которая выступает в роли его глаз?
Да, это хороший пример. Но самого бота я бы не назвал обычным. Давайте считать так: это очень хорошо написанная модульная система, которая может очень тонко настраиваться и содержит большое количество сущностей, связи между которыми тоже похожи внутри на нейроны, но они несколько проще, чем большая нейросетка.
Тогда получается, что в вашей системе бот — это узкое место?
Нет, он достаточно обще написан. Он тоже умеет обучаться. Давайте на пальцах. Вот мы учим пехоту: «Ты можешь залезать в окоп, и делается это таким-то образом». Допустим, мы на уровне здравого смысла понимаем, что окоп должен давать укрытие. Юнит в окопе более защищён.
Соответственно, есть некая карта угроз, какие-то вещи, которые при каких-то тригерных значениях рекомендуют юниту, если он рядом с окопом, садиться в окоп. Так вот эти пороговые значения могут варьироваться в очень широком диапазоне.
Это довольно большая сущность, набор параметров, которой мы тоже управляем с помощью нейросетей, выбирая оптимальные комбинации, выискивая стратегии.
То есть у вас одна нейросеть управляет другой?
В конечном итоге так и будет, но не в мартовском релизе. Не знаю, когда это будет. Может, успеем, а может и не успеем. Я здесь не рискну подписаться.
Давайте вернёмся к более общим вопросам. А откуда вообще этот тренд на нейросетевой ИИ взялся? Раньше это было невозможно сделать или было никому не нужно?
У нас есть свой интерес к нейросетям — в том числе прагматический. Если брать коммерческую сторону, компании, которые не пытаются делать персонализированные предложения, это компании прошлого века.
А вы уверены, что вы первые сделали нейросетевой ИИ для стратегий?
Я не могу утверждать, но Сергей Орловский так точно считает. Пока других решений мы не видели.
Я заметил, что западные СМИ как-то сдержанно отреагировали на анонс Бориса.
Лучше всего отреагировали в России, а ещё очень интересно в Венгрии, Чехии и Турции. Там прям некоторые СМИ написали, что можно будет границы государства охранять с помощью Бориса. Про нас ещё несколько заметок написал Rock, Paper, Shotgun.
А Бориса можно в реальной жизни применить?
Конечно. Управление трафиком, потоками людей.
А управлять реальной армией?
В теории возможно. Идеологически я вам скажу так: наш бот при принятии решений вообще не использует координаты юнитов. Представьте себе это. Он оперирует другими сущностями.
Для него важно влияние, которое он оказывает в той или иной зоне, а это очень сильно похоже на реальные войска. Тебе не нужно понимать, что у тебя юнит находится в этой координате, тебе нужно знать, что у тебя вот здесь преимущество двукратное, а здесь у тебя сил меньше, и враг имеет более мобильные силы. Координаты используются только при отдаче приказов.
Там многослойная система принятия решений, которые конкурируют между собой. Конкретно при принятии решений координаты не используются.
Сколько времени ушло на разработку Бориса? И сколько человек над ним работало?
Полгода. Над ботом в общей сложности трудились пять человек, но основная работа сделана силами двух. Мы первые несколько месяцев только обсуждали то, как это будет выглядеть на практике.
Тогда снова возникает вопрос, почему до вас никто это не реализовал?
Причина может быть в следующем. Люди пытались решить задачу от решения: «Я хочу, чтобы в этой ситуации танк начинал отступать». Это приводит к скриптовой модели поведения, которая достаточно жестка и очень хорошо читается, против неё очень легко играть.
Мы не пытались никак закладывать в поведение бота те действия, которые мы хотели бы, чтобы он совершал. Мы создали набор действий, а потом управляющие факторы, которые на эти действия могут влиять, и получили неожиданный эффект очень быстро.
Я очень хорошо знаю нашего бота, потому что уделил ему огромное количество времени. Но при этом не готов сказать, каким будет его решение в каждый конкретный момент.
Я точно знаю как минимум три зоны для существенного усиления игры, и мы планируем в ближайший месяц как минимум один, а то и два этих вопроса закрыть. Как я уже говорил, это настройка этого самого диджейского пульта, и сейчас наш бот учитывает не все сущности, которые есть в игре.
А саму игру когда выпустите в финальном виде?
Она у нас готова на 95%. Не хватает буквально одной миссии из 69. Нам предстоит ещё доделать обучение. У нас ещё не готов чистовой звук. Это переозвучка, локализация на большое количество языков, вот такие вещи. Но в целом ядро игры уже готово, и мы занимается полировкой.
Многие говорят, что выход в ранний доступ — это релиз, потому что больше внимания уже не привлечёшь. Как вы собираетесь продвигать готовую игру, если её уже давно можно потрогать?
Вопрос спорный. Игра вышла в ранний доступ Steam в 2015 году, а в 2017-м это уже совсем другая площадка. Из-за того, что количество продуктов стало намного большим, что из себя будет представлять релиз, не так уж просто сказать.
Плюс, в 2015 году наша игра была совершенно другой. С новой версии у неё общего — некоторое количество графических ассетов. Ставим мы в том числе и на Бориса.
Вчера мы его натравили на топового игрока — человека, который наиграл тысячи часов. Одну из партий Борис выиграл. Пользователь говорит, что ему было интересно наблюдать за тем, что бот делает, и некоторые его действия для него были удивительными. В общем, челленж там был, и это при том, что речь идёт не о финальной версии бота. Дальше мы планируем поиграть с обычными игроками.
Получается, что у вас Борис требует серверные мощности, и если игра, допустим, станет очень популярной, вам придётся закупаться?
Ничего страшного. С этой задачей мы справимся.
Я так понимаю, у вас игра с конечным ценником и без встроенных покупок. Как вы будете это всё поддерживать?
Помните я говорил, что у нас будет много мозгов, а не один большой? Одна большая нейросеть на двух игроков жрёт больше ресурсов, чем две маленьких. Конечно, мы учитываем стоимость машинного времени, загрузку ЦПУ. Мы потом переедем на GPU: как раз сейчас по этому поводу ведём переговоры.
Вот у нас есть 69 миссий. За первые четыре месяца прошлого года мы сделали пять, за вторые четыре сделали 15, а за последние четыре — ещё штук 40.
Мы можем выдавать контент достаточно быстро — раз в квартал. Например, дополнительную кампанию за Японию.
Так вы потом перейдёте к следующей части или будете поддерживать игру по сервисной модели, как сейчас всё чаще делают?
Второй вариант нам ближе. Скажу так, мы никогда не считали «Блицкриг» игрой исключительно о Второй мировой. Когда-то она планировалась игрой про Вьетнам. У нас большое количество ассетов джунглей. Мы будем развивать эту серию по другим конфликтам.
Мобильными играми уже наелись в прошлом году. Если посмотреть на выручку и затраты. То чудо, из-за которого все стремились в игры, высокая монетизация трафика, это уже всё позади. Это теперь нормальный бизнес. Нужно заниматься покрытием, дистрибуцией, аналитикой.
С момента выхода в ранний доступ игра создавалась исключительно совместно с игроками. Мы во многом прислушивались к их мнению и учитывали многие комментарии.
Естественно, если мы достигнем международного успеха, продадим миллион копий, мы не будем бросать проект, мы будем развивать его в рамках текущей аудитории. Мы это умеем.
Как вам в целом эта мода добавлять нейросети куда попало?
Простым людям — очень не люблю слово «обывателям» — кажется, что это какое-то чудо, которое решает все проблемы.
Я рассматриваю нейросети как отличный инструментарий для приближённого решения некоторых типов задач, не имеющих точного ответа. Скажем, нейросетка плохо подходит для поиска абсолютного минимума сложной функции, но найти несколько локальных минимумов она в состоянии.
А у вас нет страха, что получится как с другими приложениями на нейросетях? Люди две недели поиграются и забудут.
У нас другая задача, и решаем мы её иначе. Мы не хотим сделать нейросетевого бота, который всех победит. Это следствие. У нас задача сделать ИИ, с которым будет интересно играть. Почитайте отзывы ко всем недавним стратегиям: все воют. С людьми долго играть, они медленно думают и могут в любой момент выйти.
А с ИИ сейчас проблема какая — неинтересно. У нас задача сделать так, чтобы было интересно. И в итоге мы получили очень низкую детерминированность сражений.
Предположим, что у вас человек играет против нейросети при одинаковых наборах юнитов, и человек действует по шаблону — почти идентично, насколько это возможно. Матчи будут отличаться друг от друга?
Даже если человек будет действовать идентично, результат будет меняться. Игра очень слабо привязана к жёстким сущностям.
Если игрок делает то же самое, почему нейросеть может выбрать какое-то другое решение?
Потому что мы её научим. Это совсем не сложно. Давайте объясню на простом примере. Предположим, есть три стратегии игры — играть от обороны (окопаться, удерживать), играть от атаки (уничтожить максимальное количество вражеских юнитов) и третий промежуточный (много передвигаться, не пытаясь победить в каждом отдельном сражении).
В нашем случае этим трём стратегиям соответствует набор параметров на нашем диджейском пульте. И против каждой стратегии обязательно существует контр-стратегия — как в «Камень-ножницы-бумага». Не бывает универсального решения.
В нашем случае диджей будет не только знать стратегии, но и то, когда их использовать. Это последняя по рангу задача, которая позволит ему противодействовать игрокам. Людям ведь существенно сложнее переключаться между стратегиями.
Я когда смотрю на симуляцию, вижу, что ИИ предполагает, что где-то там в тумане войны на четырёх клетках едут четыре четвертинки танка, и это нормально. Человек также думает: «Вот где-то здесь едет танк».
В идеале конечная задача в данном случае должна быть в виде какого-то бегунка с настройкой сложности?
Это вполне реально. У нас сейчас уже будет три уровня сложности, которые мы пока настроили наборами юнитов.
В перспективе мы сможем удовлетворять потребности конкретных категорий людей. Представим себе какого-нибудь японца: он после тяжёлого рабочего дня хочет прийти домой и кого-нибудь победить — взломать оборону ИИ, который будет только обороняться. А другому пользователю мы дадим максимально сложного и непредсказуемого противника. Каждый сможет получить опыт, который захочет.
Источник: