Gamedev Антон Самитов
6 943

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

#технологии #ubisoft

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
Статьи по теме
Черты «умного» искусственного интеллекта в играх
{ "author_name": "Антон Самитов", "author_type": "editor", "tags": ["\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438","ubisoft"], "comments": 92, "likes": 66, "favorites": 1, "is_advertisement": false, "subsite_label": "gamedev", "id": 16856, "is_wide": false, "is_ugc": false, "date": "Mon, 05 Mar 2018 19:32:18 +0300" }
{ "id": 16856, "author_id": 24538, "diff_limit": 1000, "urls": {"diff":"\/comments\/16856\/get","add":"\/comments\/16856\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/16856"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "possessions": [] }

92 комментария 92 комм.

Популярные

По порядку

Написать комментарий...
15

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

Ответить
1

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

Ответить
1

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

Ответить
0

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

Ответить
3

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

Ответить
1

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

Ответить
4

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

Ответить
0

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

Ответить
2

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

Ответить
–1

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

Ответить
4

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

Ответить
5

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

Ответить
2

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

Ответить
0

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

Ответить
1

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

Ответить
1

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

Ответить
0

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

Ответить
4

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

Ответить
–1

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

Ответить
2

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

Ответить
0

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

Ответить
0

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

Ответить
1

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

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

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

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
3

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

Ответить
1

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

Ответить
0

Как и любой ИИ

Ответить
0

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

Ответить

3

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

Ответить
8

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

Ответить
1

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

Ответить
6

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

Ответить
3

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

Ответить
0

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

Ответить
3

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

Ответить
51

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

Ответить
2

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

Ответить
3

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

Ответить
0

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

Ответить
0

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

Ответить
2

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

Ответить
0

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

Ответить
1

А я в Magic Carpet и Syndicate.

Ответить
0

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

Ответить
1

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

Ответить
1

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

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

Ответить
1

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

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

Ответить
1

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

Ответить
0

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

Ответить
1

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

Ответить
1

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

Ответить
–8

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

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

Ответить
9

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

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

Ответить
–5

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

Ответить
3

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

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

Ответить
0

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

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
8

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

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

Ответить
5

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

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

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

Ответить
–6

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

Ответить
4

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

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

Ответить
2

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

Ответить
1

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

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

Ответить
3

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

Ответить
0

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

Ответить
5

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

Ответить
0

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

Ответить
5

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

Ответить
0

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

Ответить
1

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

Ответить
2

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

Ответить
1

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

Ответить

0

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

Ответить
0

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

Ответить
1

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

Ответить
1

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

Ответить
1

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

Ответить

0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить

0

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

Ответить
0

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

Ответить
0

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

Ответить
–1

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

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Узнавайте новости о мостах
Санкт-Петербурга первыми
Подписаться на push-уведомления