Мы делали ремастер
целый год
Gamedev
Антон Самитов

Ubisoft научила искусственный интеллект прогнозировать ошибки программистов в коде

Экспериментируя с ИИ, в компании планируют не только уменьшать число багов, но и помочь техническому прогрессу как таковому.

Far Cry 5

Во время конференции в Монреале Ubisoft представила специальную программу-помощника под названием Commit Assistant, призванную помогать разработчикам.

Искусственный интеллект будет «отлавливать» баги прямо во время написания кода игры. Это сэкономит как время, уходящее на доработку проектов, так и средства — по данным компании, на исправление ошибок может требоваться до 70% производственного бюджета.

Создатели программы из La Forge, отдела научно-исследовательских и опытно-конструкторских работ Ubisoft, «скормили» ей огромный массив данных, которые собирались в компании в течение десяти лет.

Commit Assistant анализирует изначальный код и все внесённые в него правки. На основе этой информации он будет оповещать программиста, заметив, что тот может допустить ошибку.

В Ubisoft лишь начали предоставлять «помощника» разработчикам, и на данный момент нет никаких данных о том, насколько он эффективен. Тем не менее, Commit способен к самообучению, и в будущем число «ложных тревог» будет становиться меньше.

Для нас сейчас очень важно показать всем нашим сотрудникам, которые будут работать с программой, что мы не скрываем, как она работает. Всё абсолютно прозрачно: как производит анализ, откуда берёт данные.

Программистам будут показывать статистику и говорить: «Эй, похоже, у тебя тут ошибка!» И мы хотим, чтобы в такие моменты он или она понимали, что это — лишь инструмент, ускоряющий его работу.

Искусственный интеллект просто помогает достичь цели. Если кто-то не хочет им пользоваться — не надо.

Ив Жакье
глава La Forge

Исследовательский отдел Ubisoft сотрудничает с несколькими университетами в Монреале, и принцип действия Commit Assistant изложен в нескольких научных докладах, которые будут опубликованы в открытом доступе.

Тем не менее, технология пока что будет полезна лишь крупным студиям, так как должна опираться на огромные объёмы данных со множеством примеров ошибок и верных решений в коде.

В La Forge исследуют и другие возможности и области применения ИИ. Однако, по словам главы подразделения, подобные системы лучше всего проявляют себя, если перед ними стоит очень узкая задача.

Watch Dogs 2

К примеру, во время работы над Watch Dogs 2 в Ubisoft пришлось «учить» машины на улицах тормозить. Программа просто не считала, что это «хорошее решение», ведь её целью было достичь пункта назначения или нарезать круги по городу.

По словам сотрудников Ubisoft, эксперименты La Forge также будут задействованы в одной из грядущих игр — Far Cry 5. Благодаря им, NPC в игре действуют исходя из принципа самосохранения, описанного психологом Абрахамом Маслоу.

Доверие к главному герою и боевой дух будут влиять на поведение персонажей. Исходя из различных факторов, люди будут оценивать угрозу от игрока и могут напасть первыми из страха за свою «жизнь». А во время перестрелки отдельные члены банды обратятся в бегство, если поймут, что ситуация складывается не в их пользу.

Как утверждает Жакье, совершенствование искусственного интеллекта в играх поможет техническому прогрессу в целом.

Я думаю, что игровая индустрия будет очень полезной с точки зрения этики в науке.

Пытаться понять, как, например, поведёт себя беспилотный автомобиль в ситуации с пешеходами или другими автомобилями — это примерно как пытаться решить «проблему вагонетки». В реальности такой эксперимент чаще всего не проведёшь, либо из моральных соображений, либо из-за того, что это слишком дорого.

Но, возможно, какие-то ответы можно получить из симуляции в видеоигре — просто посмотрев, как поведёт себя ИИ.

Ив Жакье
глава La Forge
0
92 комментария
Популярные
По порядку
Написать комментарий...

А в итоге эта штука окажется обычным статическим анализатором кода)

15

Не смотрел презентацию, оно работает в реалтайме внутри IDE или просто как внешний инструмент проверяет код перед коммитом?

1

А в чем принципиальное отличие?

1

Во всём!!! Или вы никогда не писал 1000 кода в день для какой-нибудь геимплейной фичи с нуля? Когда код затрагивает и скрипты, и движок и тулзы? И всё в разных репах.

0

Ну и в чем отличие-то, ты так и не сказал)

3

Отличия в том, что большие ошибки в коде состоят из множества простых. И это попытка уменьшить количество простых. Но ошибки рантайма они всё равно не решат. Только всякие каком кейсы и корнер кейсы контейнеров и арифметики.

1

Ты опять ударился во что-то не в тему.
Вот принципиальное отличие между "отлавливать баг при написании" и "отлавливать баг при коммите" для тебя есть? Чтобы об этом нужно было уточнять
Runtime Error, который ты упомянул, вообще не про это

4

Конечно есть. Обычно когда делают пулл-реквест, то считают, что работа сделана и его можно проверять. Пересаживаются на другую задачу. Везде есть проверки на всяких сборочных машинах и и целевых платформах. Может стоять хук, что пулл-реквест сразу собирается на целевой платформе. Короче, когда человек делает коммит (пулл-реквест) в мейн - он говорит что всё готово юзайте, точа.

0

1) Так в чем разница?
2) Ты коммит и пулл-реквест не отличаешь?

2

Я тебе еще в самом начале написал. Если ты "вот этого" не делал - НЕ ОТВЕЧАЙ. Ты ответил. Сейчас сидишь и ничего не понимаешь.

–1

Я же тебе с самого начала сказал - я не понимаю, у тебя не получилось объяснить. И вместо объяснений ты пишешь что-то левое.
Писать код, который разом задевает движок, скрипты и тулзы - имхо, говнокод какой-то.
И нет, я не понимаю даже в условиях такого кода, какая тебе принципиальная разница, на каком этапе ты получишь сообщение о потенциальной ошибке в коде. Выдаст ли она комментарии для код-ревью, или сообщит в IDE.

4

Если что, я - программист из b2b и подход "сделал пуш, забыл про задачу" не вызывает у меня ничего, кроме истерики

5

Как минимум - время на исправление. Когда говорит ideшечка, ты "тут же" исправляешь помарки. При коммите еще нужно обратно вернутся в редактор, опять комитить и ждать фидбека от тулзы

2

У кого как. Когда мне IDE начинает сразу подсвечивать какие-нибудь очевидные вещи, она нарушает концентрацию и выталкивает из головы то в чем заключается основная сложность задачи и возможность оставить баг – то, что компилятор и статический анализатор не поймают. А опечатки и прочие очевидные вещи, спасибо, я сам после того, как все напишу, поправлю уже на автомате.

0

у каждого свои тараканы) я без уютненьких решарперов уже не могу, всё через шоткаты

1

Шорткаты это хорошо. А вот непрошенное отвлечение внимания – плохо. Можно и решарпер нормально настроить)

1

Вообще я имел ввиду, что по сути, два подхода - подключение как плагин (см. решарпер) и подключение как сторонней утилиты (cppcheck). Проверять при коммите - значит штука может спокойно вызываться при сборке.
Оба подхода используются в разработке, и никто еще не умер, оттого, что их инструмент работал другим подходом. Понятно, в чем отличия, но блин, это же просто доп.инструмент, неужели так критично, чтобы он был плагином?

0

Если для разработчика становится рутинным делом писать код, который лежит в разных репах, то тот, кто разбивал проект на репы — долбоёб.

4

Вот Макс дело говорит

–1

100 строк отлаженного кода - очень круто.
Обычная скорость разработки - ДЕСЯТОК строк отлаженного кода.
Тысяча - удел джуниоров.

2

Зависит от многих вещей: какой язык, какой уровень кода, какая стадия развития проекта.

0

Поясните за язык, пожалуйста.
На каком языке больше всего кода получится?

0

На C, по-моему опыту, дело обычно идёт с очень низкоуровневыми вещами, и за каждой строчкой скрывается много вещей, которые надо сконцентрированно держать в голове - так что тысячу в день явно не напишешь. Какой-нибудь Haskell, с другой стороны, просто по своей натуре очень лаконичный, хоть и с буферами и аллокациями напрямую не работает.

Зато вот нежно любимый C# (который, по моему глубокому убеждению, до сих пор лучшая рабочая лошадка для банальной бизнес-логики) прекрасно пишется лошадиными темпами.

Сейчас посмотрел статистику по текущей ветке, где вдвоём с другим разработчиком занимаемся очень масштабным рефакторингом и написанием нового - где-то примерно тысяча строк в день и выходит. Но за сколько из них ответственны автоматические рефакторинги, сказать не берусь.

$ git diff --shortstat "@{4 weeks ago}" -- **/*.cs
572 files changed, 36018 insertions(+), 13997 deletions(-)

1

Ну с одной стороны удобнее, когда оно в IDE и сразу подсказывает. Меньше телодвижений. С другой – сколько будет занимать сам анализ и какая нагрузка будет на процессор при этом? Не получится ли так, что реалтайм проверка будет слишком медленной.

0

Не, нечему там тормозить по идее. Решарпер же справляется) А тут все то же самое, только база знаний формируется в процессе (вот она наверняка изменяется не в реал-тайме).

0

Нейросеть же. Может и будет делать тоже самое, но сама этому научится.

0

Или не этому (шутки про особенности обучения сетей)

3

Нейросеть - в текущем состоянии - это всего лишь экспертная система с неявно заданными весами решений при обучении. Любые попытки приблизить к реальному интеллекту - добавить работу с памятью, автоассоциации - насмерть вешают даже суперкомпьютеры.

1

Как и любой ИИ

0

Причем хреновым анализатором.

0

Комментарий удален

Вот чего мне не хватало со времён xp!

3

Ура! Теперь благодаря оптимизации бюджета компания сможет зарабатывать ещё больше!

8

Ну или игры будут выходить быстрее

1

Ничего против не имею. Вполне разумное следствие. Сам на продукции Юбиков подсиживаю :)

6

Женька, вот ты бомбанул. Пять минусов мне кинул. И не поленился.

3

Ура, теперь у компании будет больше средств и времени на создание большего количества скинчиков!

0

Где Мулинье сейчас работает?

3

Программа отлавливает ошибки, а не п*здаболов

51

Смешно читать такие комменты. Мулинье сделал для индустрии столько, сколько другим и в сладких снах не снилось. Поменьше слушайте местных клоунов из ЕБМ (и прочих недалеких людей), которые сами толком ничего не могут сделать, только языками трепать.

2

Да Молиньё сам не раз говорил, что ему стоит поменьше общаться с прессой - увлекается, обещает слишком много. Вспомни Project Milo - то, что они выдавали за прототип, было простой срежиссированной записью, а обещанное так и не получилось сделать. Заслуги Молиньё нельзя отрицать, но то, что он - трепло, тоже)
Но багов - багов в его играх никогда особо много не было.

3

Ну тогда и Бартини тоже трепло. Напридумывал итальяшка кучу летающих авианосцев и прочих пепелацев и где они...

0

Вы сейчас тоже самое делаете, я согласен что он много что сделал для индустрии, но это не отменяет того факты что он не выполнил много того чего обещал да блин если вы помните как рекламировала и говорили про фейбл И что вышло в итоге(здесь не про то что игра плохая, она очень хороша) то должны знать почему его так назвали.

0

Я смотрю на то, что он сделал. Конечно печально, что удалось далеко не все из задуманного, но это еще не повод поливать человека грязью. Просто ребята молодые и не играли в игры Мулинье когда они выходили, вот и не понимают какой это был прорыв для своего времени.

2

Парень, я играл в DK2, когда он вышел

0

А я в Magic Carpet и Syndicate.

1

В них играл не на релизе. И что, авторитет Молиньё как-то отвергает тот факт, что он мечтатель, и часто обещает невыполнимое?

0

Он не обещает от злого умысла. Все что он обещал, он действительно хотел реализовать, но в силу технологий или обстоятельств не получилось. Лично я ему буду всегда благодарен за Fable - эта игра навсегда осталась в моем сердце.

1

Fable, Syndicate, Theme Park, Dungeon Keeper, The Movies, Black & White 2 - вот мой топ.
но в силу технологий или обстоятельств не получилось

Поправка: он обещал также вещи, о которых знал, что они нереализуемые. Потому эпитет "трепло" к нему уместен)
Я не из тех, кто хейтит Молиньё или припоминает ему невыполненные обещания. Просто отношусь к нему соответственно - каждую его новую игру надо просто ждать и не слушать, что он там обещает сделать.

1

каждую его новую игру надо просто ждать и не слушать, что он там обещает сделать.

Тут соглашусь))) Я вообще все игры так жду, что бы потом не разочаровываться.

1

Я говорю что он мечтатель и в свое время сделал для индустрии кучу прорывных проектов, заложивших целые направления для последователей. То что не удалось сделать - ну не удалось. Сделают другие.

1

https://geektimes.ru/post/289263/
Там не просто "не удалось сделать", если верить Lionhead'авцам, часть обещаний всегда была выдумкой)

0

Садишься за комп, а там во весь экран — «Ты ошибка»

1

Главное отключить автоматическое исправление ошибок

1

Программу ничему научить нельзя, можно задать ей последовательность триггеров, всё. Она будет отлавливать только те ошибки, которые ей вбили в базу данных. То бишь, сделанные самими разработчиками в их проектах или умышленно написанные для программы. Для любой другой игры / проекта это работать не будет. Прежде всего, каждая студия использует свой движок. Само собой, есть общие типа Unreal Engine, но даже там конечные разработчики вносят правки.

К тому же, это Юбисофт... От одного только ихнего лаунчера все 'просто в восторге'. И все мы прекрасно знаем, как они любят на конференциях показывать одно, а в итоге продавать совсем другое. Или все резко забыли про Watch Dogs? Умного ИИ не было в играх со времён создания этих самых игр и никогда не будет. А причина логичная и понятная каждому — чтобы создать действительно разумный искусственный интеллект, нужно чтобы он был умнее тебя. А для этого нужно самому быть умнее себя. Парадокс.

–8

Программу ничему научить нельзя, можно задать ей последовательность триггеров, всё.

На дворе что, 2008 год? А нет, погодите, уже в 2008 было генетическое программирование и прочие генеративные AI-вещи.

9

Я-то смотрю, какие умные мобы сегодня в играх, ух! А какие умные программы повсюду, ах! Гены... Что в 1008, что в 2008, что в 2018 лапша одинаковая. Было оно в сми и новостях, а у нас на руках всё стандартно.

–5

То, что называется AI в играх и то, как используется термин AI в принципе — это две разных и совершенно не связанных друг с другом вещи. Игровой AI делается для того, чтобы развлечь игрока, и эта работа наполовину гейм-дизайнерская (правда, в процессе гейм-дизайнерам приходится учить, что такое стейт-машины, деревья поведений и прочие хитрые вещи, но гейм-дизайнеры не такие уж и дураки, как иногда кажется разработчикам).

Общий AI — это метод решения задач, обычно направленный на уменьшение loss function, которая определена намного более понятнее и яснее, чем какой-то субъективный fun. Я ещё не видел удачного использования этих методов в игровом интеллекте, и сомневаюсь, что когда-либо увижу.

3

Я ещё не видел удачного использования этих методов в игровом интеллекте, и сомневаюсь, что когда-либо увижу.

The Director в Left4Dead, который занимается организацией fun'а для игроков

0

Так там, насколько я помню, простейшая стейт-машина была: то пожестче, то послабей, то ещё что-нибудь особенное, типа затишье и ведьму. Никакого хитрого AI.

0

Он еще умел направлять потоки зомби. Если один отобьется от группы, 100% зомби повалят так, чтобы отрезать его.
С хитрым AI Блицкриг 3 хвалились, что сделали нейросеть. Ранее, еще во времена второго или первого, говорили, что их ИИ способен уделать любого, если убрать ограничения.
Потом, OpenAI сейчас развлекается, делая ИИ для Доты, кто-то делал для SC2. У людей проснулся интерес, а значит ИИ будет. Большинству же компаний такое не нужно, вот и не делали.
Ubisoft использовали ИИ в какой-то форме для Grow Home, для анимации героя

0

У мобов нет задачи победить тебя, только создать некоторую напряженность на пути к цели.
Вот прикрутишь ты нормальный ИИ боссу рейда в MMO - он отбросит свою "агро-шкалу", и будет первым делом убивать хилов. И хрен какая группа его положит после этого. Для этого, вообще говоря, нейронная сеть не нужна, но с ней босс придет к такому решению самостоятельно.
В шутерах - просто выстави мобам те же показатели урона и здоровья, что и игроку. Посмотрел бы я, какими "легкими" после этого они тебе покажутся.
В RPG - то же, что и для шутеров + убери паттерны поведения.
В современных RTS уже больше 10 лет специально ограничивают ИИ, так как он легко побеждает. Причем обыгрывает честно, а не как старые (в которых ИИ всегда знал расположение твоих войск и все остальное)

0

Она будет отлавливать только те ошибки, которые ей вбили в базу данных

О, человек, который не слышал про нейросети!

8

То бишь, сделанные самими разработчиками в их проектах или умышленно написанные для программы. Для любой другой игры / проекта это работать не будет. Прежде всего, каждая студия использует свой движок. Само собой, есть общие типа Unreal Engine, но даже там конечные разработчики вносят правки.

Если коротко, как работают нейросети:
- ты скармливаешь системе большую базу хороших и плохих примеров, комментируя ей, где какой (обучение с учителем)
- надеешься, что система правильно научилась, и используешь ее.
Потому - такая система будет работать с любым движком и проектом, если те используют схожие языки программирования в своей основе (а они используют).
Сложности подхода - система может научиться в процессе обучения совсем не тому, что нужно, и переобучить ее будет затруднительно. Также сложно спроектировать нейросеть под задачу, но этим, по идее, занимается как раз Ubisoft. Ну и невозможно сказать, глядя на код нейросети, какие именно ошибки она умеет отлавливать (в отличие от цепочки тригеров, о которых ты писал). Но вообще и до прихода популярности нейросетей были решения, умеющие отлавливать не забитые в базу вещи (эвристический анализ).
К тому же, это Юбисофт...

И? У компании база опыта такая, что другие могли бы позавидовать. Надо понимать, что анализаторы кода существуют уже давно, Ubisoft предлагает просто добавить туда ИИ (и в теории, так как геймдев, эта штука будет анализировать разом стек технологий, а не конкретную часть)

5

Да, красивые слова. Нейросети, генные программы, обучаемые системы. Давайте так, пример мне, игровой, хоть один. С этой ваше нейросетью. Раз они так давно существуют.

–6

Да, красивые слова. Нейросети, генные программы, обучаемые системы. Давайте так, пример мне, игровой, хоть один. С этой ваше нейросетью. Раз они так давно существуют.

Alpha Go. И вылезайте уже из криокамеры, пожалуйста.

4

Нейросети придумали в 80х. В последние 10-15 лет просто наконец появились технические возможности их использовать. В 80х железо было слабее, а больших массивов данных для обучения не было.
Игровой пример - а почему именно игровой, ведь речь-то про внедрение ИИ в инструменты разработчиков? Siri, Alexa, распознавание картинок, распознавание текста - это все нейросети.
Но если нужен именно игровой - "Борис", Блицкриг 3

2

"Ubisoft пришлось «учить» машины на улицах тормозить. Программа просто не считала, что это «хорошее решение», ведь её целью было достичь пункта назначения или нарезать круги по городу."

Тормоза придумали биологические трусы! (с) ИИ

1

До сих пор помню историю ботов для гонок на геймдеве, где бот решил что лучшая тактика - это не ехать вообще. Все равно же точка старта и финиша на круговых трассах совпадает.

3

Пока никто не пошутил, я это сделаю. А этот ИИ будет также забагован?

0

Конечно. Разрабатываться забагованными программистами в забагованной IDE, а потом запускаться на забагованной ОС на забагованном железе

5

Где-то в этом уравнении минус на минус должен дать плюс, ха)

0

Если после этого предложения добавить "и мы с этими программами запускаем ракеты в космос", то какой-нибудь Фома Аквинский назвал бы это шестым доказательством существования Бога.

5

Насколько мне известно там все довольно разделено, вплоть до того, что ставят несколько дублирующих микрокомпьютеров, которые сами решают кто из них прав.
Даже если сыпятся критические ошибки на одном из них, аппарат может сохранять работоспособность месяцами.

0

Так-то да, но условия работы этого добра на Земле не смоделируешь, и в реальных условиях до запуска не протестируешь. Потому - не чудо ли, что все это работает?)

1

Это все божественные происки не иначе!

2

Вот только в Far Cry 5 ИИ вообще не изменился, это видно по футажам, особенно крупным. Поглядите у PC Gamer, к примеру, там и медведь толкает NPC-рассказчика на стуле, и водитель авто нелепо наезжает на труп волка, пугается и с криком убегает куда-то.

1

Комментарий удален

Это вы не поняли, он толкает стул NPC, на котором тот сидит и дальше глаголит свою речь.

0

Я боюсь представить, что будет если скормить этому ИИ PUBG, DayZ или ARK. Прям вижу как разработчики данных игр матерятся, потому что он постоянно пишет про их ошибки.

0

Он "изобретет" нулевой закон робототехники

1

Он придет к выводу, что этих разработчиков нужно уничтожить, ибо только так можно избавиться от ошибок)

1

Ранее Джон Кармак (разработчик Doom'ов и иже с ним) писал об опыте внедрения статических анализаторов кода. Как поначалу вызывало раздражение то, что он считал их "гениальный код" говном. Но пересилили себя, и количество багов уменьшилось, да и в целом на разработку полезное влияние оказало.

1

Комментарий удален

Террористический месяц

Задумываешься, есть смысл учить программирование или скоро программы будут писать сами себя

0

Эммм это что-то вроде реал тайм логик компилятора ?... и логические ошибки он берет на примере исправлений в другом коде ?... ну ок.

0

До чего дошел прогресс... )))

0

Обычную отладку выдают за нейронную сеть?

0

Это не отладка, это статический анализатор кода, только с обучением внутри.
Учится на примерах конкретной студии, запоминая "стандартные ошибки" и "удачные приемы" коллектива.
С одной стороны, сомнительный подход, так как люди серьезные ошибки редко повторяют, а мелочь умеют отлавливать существующие анализаторы. С другой стороны, так можно получить анализаторы кода непопулярных языков и прочих внутристудийных штук

0

Комментарий удален

все жду ИИ который будет вразумительно покрывать код юнит-тестами

0

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

0

Программисты написали ИИ который правит программистов. Выход из порочного круга ошибок?

0

О, вот теперь новый Far Cry выглядит интересно, побольше бы такого.

–1
Читать все 92 комментария
null