Gamedev Андрей Верещагин
11 735

Наполнение открытого мира

Быстрое создание красивых и правдоподобных локаций.

В закладки

Сотрудник студии Flying Wild Hog Кжижтов Нарковиц (Krzysztof Narkowicz) в блоге на сайте Gamasutra рассказал о создании инструмента, который позволяет наполнять игровые локации растительностью и объектами в короткие сроки.

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

Их создание поднимает вполне закономерный вопрос: как же эффективно их наполнить? Конечно, никто не хочет вручную расставлять каждое деревце, особенно небольшие команды. Когда мы смотрим на типичный открытый игровой мир, мы видим принцип Парето в действии — лишь 20% контента находятся на маршруте следования пользователя, а остальные 80% — это просто фон.

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

После того, как Flying Wild Hog закончили работу над Shadow Warrior 2, у команды появилось время для того, чтобы опробовать новые идеи. Разработчики решили потратить его на создание нового инструмента для размещения объектов. Они знали о том, как создавать базовую карту высот (basic heightmap) в World Machine. Вопрос был в том, как превратить эту карту в красивый пейзаж, не загнав при этом до смерти дизайнеров уровней.

Есть несколько способов: процедурное размещение (procedural placement), размещение, основанное на физике (physics based placement) и размещение на основе карт цвета (painted color maps based placement).

Первый предполагает генерацию контента на основе заранее заданных правил. Они, в свою очередь, могут быть разделены на методы, которые симулируют физические процессы (телеологические) и методы, которые симулируют конечный результат (онтогенетические). Примером использования телеологического метода могут быть леса в третьем «Ведьмаке», созданные с учётом того, как близко и в каком объёме находятся водные ресурсы и как много солнечного света получают растения. Ещё один пример такого подхода — UE4 procedural foliage tool. Этот инструмент моделирует рост нескольких поколений растительности.

Примером онтогенетического метода может быть процедурная генерация, основанная на Houdini. В таком случае художники отдельно прописывают все правила. Метод использовался в Ghost Recon Wildlands.

Размещение, основанное на физике — интересный способ. Объекты будто падают с некоторой высоты и рассеиваются по уровню. Такой метод включён в Object Placement Tool для Unity.

Размещение на основе карт цвета предполагает конвертацию вручную раскрашенных карт цвета в ассеты на основе определённого набора правил. Примером такого подхода может быть инструмент, использованный разработчиками Horizon Zero Dawn.

Первый инструмент Flying Wild Hog был основан на физике. Он использовался в шутере Hard Reset. Его события разворачивались в мрачных городах, выполненных в стилистике киберпанка, поэтому разработчики сделали инструмент, который просто разбрасывал мусор по улицам. Если результат их устраивал, они могли нажать клавишу «сохранить», а в противном случае процедура «разброса» повторялась. Тем не менее, у такого инструмента было много ограничений. Конечный результат тяжело было контролировать, к тому же необходимость раз за разом повторять симуляцию лишь замедляла процесс разработки.

В Shadow Warrior были открытые пространства, на которых росли трава и деревья, поэтому создатели игры сделали инструмент размещения на основе карт цвета. Базовые меши уровня создавались в 3ds Max. Затем художники разукрашивали вертексы (vertex paint) этих мешей, а во время импорта уровня эти вершины конвертировались в набор точек появления растительности.

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

Меш уровня Shadow Warrior

При работе над новым инструментом команда Flying Wild Hog хотела, чтобы конечный результата удовлетворял нескольким критериям:

  • быстрое прототипирование. Это позволит в короткие сроки создавать грубые наброски уровней. Художники, как минимум, должны были иметь возможность указывать, какие из локаций — это лес, а какие — пустыня;

  • простые и безопасные итерации. Разработчикам нужно было иметь возможность вносить какие-то изменения в последнюю минуту так, чтобы не надо было «перестраивать» весь мир;

  • возможность для роста. Небольшие студии не могут позволить себе запланировать разработку в один год, создать ассеты во второй, разместить их и выпустить игру — в третий. Компаниям нужна возможность работать над ассетами на протяжении всего процесса создания игры. Кроме того, необходимо, чтобы разработчики могли безболезненно менять и добавлять их в игру;

  • бесшовная интеграция с контентом, размещаемым вручную.

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

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

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

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

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

Правила биома

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

Правила текстурирования достаточно просты:

  • диапазон влияния биома с пользовательским уменьшением;

  • диапазон высоты рельефа с пользовательским уменьшением;

  • диапазон наклона рельефа с пользовательским уменьшением;

  • плотность.

К каждому правилу «привязана» конкретная текстура земли. Правила выполняются снизу вверх. Сперва весь биом покрывается основной текстурой. Затем, согласно правилам, производится оценка всех текстур и, если прочие условия соблюдены, одна текстура заменяется другой.

Правила размещения объектов несколько сложнее:

  • все указанные выше правила текстур;

  • выравнивание по земле или вертикальной оси. Например, деревья выравниваются по вертикальной оси (потому что они обычно растут вверх), а камни — по земле;

  • случайные смещения по оси выравнивания, которые позволяют избежать повторений;

  • случайное вращение по оси выравнивания;

  • случайное масштабирование;

  • смещение вдоль оси выравнивания;

  • следы (радиус коллизии объекта).

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

Пример распределения влияния для лесного биома

Интеграция биома

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

Так инструмент создания дорог работает с биомами

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

Рабочий процесс

Он начался с World Machine, в которой разработчики сгенерировали изначальную карту высоты. Следующим шагом стала грубая итерация карт цвета биома в Substance Designer. Система поддерживает автоматический ре-импорт карт, поэтому когда художник нажимает кнопку «сохранить» в Substance Designer, новая карта биома сама импортируется в редактор, и сразу можно увидеть изменения.

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

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

Реализация

Алгоритм размещения объектов сводится к зацикливанию заранее просчитанных точек появления, выборке данных мира в каждой из точек, расчёту плотности на основе правил появления (spawn rules) и сравнении этой информации с заранее рассчитанной минимальной плотностью в той или иной точке. На основе полученных данных принимается решение, нужно ли помещать какой-то объект в эту точку. Под объектами понимаются префабы, то есть сюда могут попасть как деревья, так и триггеры, звуки или спецэффекты, вроде светлячков.

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

  • размещение должно быть настолько плотным, насколько это возможно;

  • между точками должно сохраняться указанное минимальное расстояние;

  • близлежащие объекты не должны располагаться на одной прямой, так как это нарушит иллюзию правдоподобия;

  • вышеуказанные параметры должны быть актуальными и при снижении плотности.

Разработчики пытались сгенерировать расположение точек на основе распределения Пуассона, с дополнительным ограничением — точки не могут быть выровнены по одной прямой. Они остановились на координатной сетке, искривленной набором функций sin и cos. Кроме того, к каждой точке было привязано своё значение влияния, которое просто «размывало» алгоритм, так что параметры сохраняли свою актуальную, когда некоторые точки удалялись из-за снижения плотности появления объектов.

При размещении объектов на земле важно использовать не оригинальную карту высоты, но ту, у которой уже есть пользовательские меши. Для коллизий у разработчиков был двумерный Bitmap, и форма каждого объекта растрировалась под него до размещения.

#опыт

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

Написать
{ "author_name": "Андрей Верещагин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442"], "comments": 23, "likes": 77, "favorites": 72, "is_advertisement": false, "subsite_label": "gamedev", "id": 12843, "is_wide": false, "is_ugc": false, "date": "Sun, 26 Nov 2017 17:07:00 +0300" }
{ "id": 12843, "author_id": 22254, "diff_limit": 1000, "urls": {"diff":"\/comments\/12843\/get","add":"\/comments\/12843\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/12843"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "possessions": [] }

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

Популярные

По порядку

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

Сейчас будет минутка рпг занудства.

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

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

Реальность современного геймдева такова, что у нас уже есть охренительные технологии по созданию невероятно красивого опенворлда, но на заполнение всего этого банально нет ресурсов и технологий, потому что здесь необходима ручная работа людей, а не машин. Конечно, если вы не фанат концепций вроде Немезиса или системы данженов аля The Elder Scrolls с записками и "случайных" событий в путешествиях.

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

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

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

Ответить
19

Ну по идее описанный инструмент позволяет сэкономить время и потратить его на квесты и вручную добавленные POI. Но это в теории, как им воспользуется та или иная команда — неизвестно:)

Ответить
7

Согласен с вами. Только, мне показалось, что статья именно про один аспект. Заполнение мира несюжетным контентом, который создаёт фон

Ответить
10

Статья как раз про то как автоматизировать этот аспект, и потратить время и деньги людей не на рассадку пиксельных деревьев

Ответить
5

а на то где действительно человеческое мышление нужно, на создание квестов отличающихся от (принеси X itemname), например

Ответить
3

Хотелось бы верить в лучшее, но настораживают один момент. Для чего ИЗНАЧАЛЬНО было делать подобные гигантские безжизненные опенворлд миры (очевидно, когда ни ресурсов, ни технологий на их адекватное наполнение не было), а не сконцентрироваться на меньших масштабах, но с увеличением качества контента? Ответ, очевидно в растягивании геймплея и минимизации усилий, при этом сделав хорошую мину при плохой игре.

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

Ответить
3

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

Да ладно тебе, в Ведьмаке 3 и так с головой хватало чем заняться. Мир красивый, и делая опциональный контент (ну, или собирательство вопросиков) было приятно на него посмотреть и разок прошагать ключевые места, потом просто пользуешься фаст тревелом или галопом пролетаешь к нужной задаче мимо красивого фона. Чего нельзя сказать о DA:I, например. Количество однотипного и не удивляющего контента в последних свитках тоже неизмеримо.

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

^ Это мнение человека, не играющего в игры юбисофт с момента выхода первого AC и второго FC. Пара часов в FC3 не считается за полноценную попытку.

Ответить
5

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

по-моему, Ведьмак 3 нисколько не потерял бы в своём великолепии, если бы срезав лишнюю территорию (мне до сих по снятся бесконечные поля и "уникальные" леса с покачивающимися верхушками) по которой мы скачем, следуя по очередному следу с ведьмачьим чутьём.

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

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

Ответить
3

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

Ответить
3

Я бы сказал, что это типичная претензия с точки зрения пользователя, а не "минутка рпг занудства". С точки зрения рпг, как в какой-то степени симуляции реальности, вас вовсе не обязан каждые 10 метров ждать квест, хоть вручную созданный, хоть автоматически сгенерированный. Более того, это крайне маловероятно.
Меня наоборот, напрягало гигантское количество квестов на квадратный метр площади. Я из Ведьмака 3 вообще убрал бы все эти вопросительные знаки. И даже если бы их прописали вручную - тоже убрал бы.

Ответить
0

Тогда у мира должна быть классная симуляция и фидбек на действия игрока. Как у Зельды, к примеру

Ответить
1

Беда то не в отсутствии технологии заполнения мира контентом, а в том, что такие огромные безжизненные миры создаются потому что так проще продать игру. Вся проблема игр в открытом мире это постоянное их расширение в размерах для того, что бы трейлере сказать: "В нашей игре территория в три раза больше чем в Скайриме, и в 20 раз больше чем в предыдущей части". А народ ведется. И потому в трейлере следующей игры мы уже видим: "Мир нашей игры стал еще в два раза больше". И хомяки в восторге. Не важно, что кроме дорог и городов нет вообще никаких толковых квестов, а огромные территории на которых влезла бы Готика 1 (а то и вторая часть) просто пустой лес. Кого это волнует?

Ответить
1

Но, например, 4-ый фоллаут хорошо продался, хотя там карта не такая уж и большая. Или мне до фени "открытый мир" в последнем анче, я и так понимал что там красивая пустышка для растягивания времени прохождения, а продал игру мне ролик какого-то блогера, где была пара секунд погони и перестрелок на поездах. Надеюсь эти гонки открытых миров скоро закончатся.

Ответить
0

Вот вот! Потому я и не понимаю, рэдов, когда они говорят, что карта в киберпанке будет в 4 раза больше, чем в 3-ем ведьмаке... Куда ещё больше то?

Ответить
4

Такие статьи - украшения GameDev раздела!

Ответить
2

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

Ответить
2

А технология SpeedTree не является примером "настолько удобно что бы интегрировать"?

Ответить
2

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

Ответить
–2

Пусть берут пример с ELEX, всё вручную и игра года в итоге от 30 человек с крохотным бюджетом.

Ответить
0

Это та игра где крайне странные и неестественные возвышенности, будто в припадке брашем херачили? А, ну да.

Ответить
0

Они для тебя неестественные потому что ты заложник стереотипа, это не планета земля.
И столь многоуровневослойный открытый мир в RPG это приятная новинка. Думаю это будет и дальше применяться пираньями ибо их игры это hardRPG т.к. они сами хардгеймеры, а не просто разрабы. Здесь вот хорошо сказано о стереотипности из за которой наговаривают на элекс, не понимая, что так и задумано.
https://www.youtube.com/watch?v=VGxqsqQorzk

Ответить
0

"Конечно, никто не хочет вручную расставлять каждое деревце, особенно небольшие команды."

Больше процедурно-генерируемого безвкусного говна, пожалуйста!!!

Ответить
0

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

Они там совсем чтоль без кукушки сидят? Даже в редакторе Age of Empires 3 мы можем взять кисть, на которую уже нанизана текстура и модели. Водишь такой кистью и сами по себе появляются в случайном порядке модели. Те же леса вообще офигенно размещать. И всё оформлено в виде каталогов. А тут разрабы, которые это могут изначально сделать. Мне кажется в ИИ иногда попадают не совсем те люди.

Ответить
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" } } } ]
Уве Болл вернулся в кино
и начал экранизировать flash-игры
Подписаться на push-уведомления