Gamedev Антон Самитов
10 535

Автор Braid и The Witness планирует начать бета-тест собственного языка программирования до конца 2018 года

Он создаёт на нём как минимум две собственных игры.

В закладки

По словам геймдизайнера Джонатана Блоу, один из главных факторов, сдерживающих развитие игровой индустрии — это распространённость C++, языка программирования, который зародился ещё в 1970-х.

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

Поэтому в 2014 году разработчик начал работу над заменой «поистине ужасного» C++ под названием JAI. Его цель — упростить устройство языка, повысить эффективность и «облегчить жизнь» программистам.

Люди почему-то уверены, что язык программирования обязательно должен быть некой очень сложной системой. Но мне не хочется знакомиться с экосистемой языка в течение года — я просто хочу перенести туда 3D-графику. […]

Многие из нас, программистов, — несчастные люди, а ведь так быть не должно.

Джонатан Блоу
геймдизайнер, программист

Блоу утверждает, что на данный момент с помощью JAI ему удалось увеличить продуктивность на 15%. Со временем он хочет довести этот показатель до 50 или даже 80 процентов, избавившись от необходимости постоянно «совершать ненужную работу».

Разработчик признаёт, что C++ — очень мощный инструмент, иначе бы его не использовали повсеместно. Но за долгие годы многие слишком свыклись с недостатками языка.

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

У компаний есть огромные игровые движки, менять которые слишком дорого. Я слышал пару лет назад, что игра вроде Assassin's Creed состоит из десяти миллионов строк исходного кода. Сейчас, наверное, и того больше.

Джонатан Блоу
геймдизайнер, программист

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

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

Прежде всего, я стараюсь всё упрощать. Но даже когда я начинаю вводить более сложные вещи, необходимые для работы, я каждый раз задумываюсь: «Какая именно от этого польза?»

Мы постоянно думаем о том, насколько наши игры просты в понимании для пользователей. «Как они поймут, что происходит, когда зайдут в эту комнату? Как мы можем помочь им разобраться в этом?» […]

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

Джонатан Блоу
геймдизайнер, программист

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

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

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

Закрытое бета-тестирование JAI собираются начать до конца 2018 года

#технологии

{ "author_name": "Антон Самитов", "author_type": "editor", "tags": ["\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438"], "comments": 235, "likes": 140, "favorites": 35, "is_advertisement": false, "subsite_label": "gamedev", "id": 22648, "is_wide": false, "is_ugc": false, "date": "Tue, 03 Jul 2018 17:18:39 +0300" }
{ "id": 22648, "author_id": 24538, "diff_limit": 1000, "urls": {"diff":"\/comments\/22648\/get","add":"\/comments\/22648\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/22648"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954 }

235 комментариев 235 комм.

Популярные

По порядку

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

Вот тут как раз картинка не работает. Блоу не "универсальный" язык делает, а для узкого круга задач - для геймдева.

Ответить
8

Он делает универсальный язык для геймдева))

Ответить
1 комментарий
3

А какие уникальные фичи ожидаются в JAI "для геймдева"?

Ответить
–1

По меркам геимдева - Блоу не сделал ничего. То есть он мог все свои игры делать и на Java. Ничего не поменялось бы.
Самое дорогое в геимдеве :
вызовы GPU
вызовы Lua-С-Lua-С
криворукие дизайнеры

Как он будет это решать? Похоже, что он сделал очередной D. Не более.

Ответить
1 комментарий
–6

Вы хоть понимаете разницу между стандартом и опцией? Никто не заставляет вас пользоваться всеми языками, достаточно выбрать один. При этом в некоторых случаях продукты написанные на разных языках можно будет использовать совместно.

Ответить
34

Вот тут много подробностей - https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md
И, да, Блоу очень умный и адекватный.

Ответить
5

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

Ответить
32

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

Ответить
–43

Ещё один язык программирования, ага, умный и адекватный, ага :)...

Ответить
41

Не понимаю претензии. Если человеку это по кайфу, то почему бы не создать новый язык программирования, заточенный под нужды, с которыми прочие потенциально справляются хуже?

Так можно эскалировать и вешать ярлыки неадекватности на студии, которые пишут собственные движки по сей день, а не довольствуются Unity / Unreal.

Ответить
17 комментариев
21

в 2014 году разработчик начал работу над заменой «поистине ужасного» C++...

Как у C++ программиста, у меня начался нервный тик. «Я смотрю на это и у меня огресия кокаята и зубы скрепят».

Ответить
18

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

Ответить
10

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

Ответить
1

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

Ответить
4 комментария
9

Господи, что же с тобой будет если кто-то упонянет Rust?

Ответить
0

А что такого ужасающего в Растике? о.о

Ответить
6 комментариев
6

Часто такое слышу от людей, которые не программировали на удобных языка.

Ответить
–1

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

Ответить
0

У C++ есть отдельные вполне прекрасные подмножества-диалекты, но взятый целиком, это совершенно ужасный монстр. Кроме разработки игровых движков (именно движков, а не игр) и, пожалуй, операционных систем, я не знаю ни один тип продукта, где когнитивная нагрузка от C++ стоила бы свеч. Вся парадигма языка, который «может всё», от работы с «голой памятью» уровня C, до шаблонов, множественного наследования (при том, что наследование само по себе уже сомнительное достоинство) и замыканий, уже обрекает его на судьбу монстра Франкенштейна.

Ответить
1

а что плохого в лямбдах? Нормальная же, удобная штука. И не шибко засоряющая язык. Как по мне, стоит ругатся на темплейты. Хотя, я на C++ не пишу и могу быть не в курсе

Ответить
10 комментариев
–10

Вообще где-то я слышал, что в разработке этих ваших движков участвует С, но никак не С++. А все потому, что С все-таки побыстрее.

Ответить
2 комментария
0

Какие диалекты? С++ вроде не lisp или вы о с-подобных языках?
Как то читал мнение, что несовершенство языка хорошо ложиться на особенности человечество мозга.
А с учетом zero cost абстракций в c++, чисто теоретически привнесение новых концепций для разработки не должно быть проблемой.

Ответить
3 комментария
0

при том, что наследование само по себе уже сомнительное достоинство

Ну эй :(

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

Ответить
5 комментариев
0

Перейдите на другой язык, может не таким нервным станете, а то вон уже тик развился.

Ответить
11

Ты короче пишешь игру на этом языке пару лет, потом как-то с отходишь от монитора за кофейком, смотришь на него из далека, а там:

Ответить
2

А там javascript?

Ответить
4

Отсылка к The Witness же, ну)

Ответить
1 комментарий
1

В полночь весь твой код превратился в javascript xD

Ответить
6

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

Ответить
26

Ты не поверишь, это реально работает. С++ появился точно так же, хотя был же C. А на момент выхода C был Фортран.
Так что повтори это в глаза C# (есть же Java), Python (есть же Perl), Swift (есть же такой замечательный и удобный Objective-C) и так далее.

Ответить
3

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

Ответить
3 комментария
–6

С# не нужен, Java сделана для того чтобы было легко выгонять сотрудников и нагонять новых (т.е. ее славят топ. менеджеры), perl почему-то не смог заменить менее совершенный php, назвать objective-c удобным - расписаться в аутизме. На все ответил?

Ответить
1 комментарий
0

А с чего ты взял, что в исходном комментарии я как-то сарказмирую или гиперболизирую?

Ответить
3 комментария
–1

Вы путаете тёплое с мягким. В каждом из перечисленных вами языков (кроме Perl, пожалуй) есть возможность вызова 3D API или использования multimedia-функций сторонней библиотеки (к примеру OGL в SDL). Этого достаточно для написания игр на вашем любимом языке. Учить другой не нужно

Ответить
16 комментариев
3

Но никто же не говорит об универсальности, откуда вы это взяли?

Ответить
0

Какие новые языки появились за последние два-три года? Хотя бы описание синтаксиса?
Мантра, о велосипедах каждый раз радует.
Какие есть новые альтернативы системным языкам? Кроме rust .
Вы действительно считаете что у c++ нет проблем?

Ответить
0

Наличие у С++ проблем никак не решает вопрос необходимости еще одного языка. Как минимум, надо доказать, что проблемы языка касаются геймдева и в свете геймдева новый язык их решает. Так если аффтар просто добавил два макроса на foreach в кресты, то это не решение проблем и язык не нужен. А у нас инфы нит.

Ответить
4 комментария
0

Kotlin - меньше года назад
Swift - 4 года назад
Go - 6 лет назад

Первые два стали стандартом для Android и iOS соответственно.

Ответить
4 комментария
3

Очередная нишевая хрень которая будет использоваться 1.5 гиками.

Ответить
18

Мнение анимешников не интересует!

Ответить
0

Ждем твои проекты на этом языке.

Ответить
5

Умный мужик этот Джонатан Блоу. Голова.

Ответить
1

Jai will not have:

Smart pointers
Garbage collection
Automatic memory management of any kind
Templates or template metaprogramming
RAII
Subtype polymorphism
Exceptions
References
A virtual machine (at least, not usually—see below)
A preprocessor (at least, not one resembling C’s—see below)
Header files

Я даже не знаю, как это может быть лучше c++

Ответить
12

Отсутствие header files, preprocessor и templates уже делает его лучше c++

Ответить
–1

Отсутствие templates

делает лучше

Да не гони.

Ответить
5

Отсутствие
Garbage collection

Automatic memory management of any kind

Важно в играх для предсказуемой производительности. А то у нас обсчёт 100500 коллизий и тут сборщик мусора решил память почистить вдогонку.
Exceptions

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

Ответить
5

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

Ответить
2 комментария
0

"А то у нас обсчёт 100500 коллизий и тут сборщик мусора решил память почистить вдогонку"
А зачем вы при обсчёте коллизий плодите объекты?

Ответить
3 комментария
0

Согласен со всем кроме исключений, идеального кода не бывает, что-нибудь всё равно обязательно сломается

Ответить
0

Да, странную вещь задумал. Такое "уже не C++, но еще не C#"

Ответить
0

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

Ну и уж конечно лучше никакого препроцессора, чем препроцессор C.

Ответить
4

А в чём особенность этого его JAI?

Ответить
1

"я просто хочу перенести туда 3D-графику"

Я так понял он пишет язык, чтобы было быстро и удобно с 3D в играх работать.

Ответить
0

В комментариях ссылки

Ответить
1

Столько языков создано исправить косяки C++, но лишь один из них может сравниться с C++ по скорости выполнения. По крайней мере я знаю лишь один такой язык - это Rust.

Ответить
2

Скорость выполнения это, строго говоря, свойство не языка, а имплементации. Лисп-машины тому примером.

Ответить
0

Строго говоря да, но я имел в виду язык с такими же низкоуровневыми возможностями как C++, но без потери в производительности. Разумеется, производительность не самое главное.

Ответить
1

С с++ может сравнится только с++

Ответить
1

Разные языки пытаются исправить разные косяки. Из популярного только Rust и D пытались соревноваться с C++ в категории AOT-компилируемых языков по оптимальности выводимого машинного кода -- чтобы с ручным менеджментом памяти и все прочее.

Ответить
3

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

Ответить
3

ну что он на гите показал имхо хуже с#, как по синтаксису так и по функционалу.

Ответить
3

Ну ок, одним больше языком одним меньше вообще без разницы. Но за := прям АААх как больно (не переношу).

Ответить
2

Непонятное поделие вроде и не плюсы, а выглядит страшно. Есть ведь отличный Haxe, в котором дохрена плюшек, синтаксис джавы и трансляция в плюсы.

Ответить
2

Я нашел тебя, человек, знающий хакс.

Осталось 150 из 152

Ответить
1

Авторы и там и сям как будто соревнуются, кто найдет фотку подурковатее.

Ответить
3

Нате вот, может для следующего раза подойдет

Ответить
2

Синдром Пелевина какой-то...

Ответить
0

Матрица сбоит

Ответить
2

Кто-нибудь, расскажите этому товарищу про D. Нет, это не смайлик.

Ответить
2

Ужасно недооцененный язык. После раскопок их JavaScript движка который в интерпретаторе работал быстрее JIT зауважал разработчика(ов)

Ответить
0

Уважение разработчикам, что до сих пор занимаются языком, хоть он и не популярен. Как говорил Уолтер
It's like the music business - you don't have to be the Beatles to have a very good career

Смог написать(на самом деле переписать с Си, но подводных камней хватало) на нём плагин для DeaDBeeF практически ничего не зная о Си, крестах и самом D. Надеюсь, что язык когда-нибудь стрельнет также, как JS, Go и Rust и тогда заживём

Ответить
1 комментарий
0

Может быть. Только нафига нам второй D?

Ответить
2 комментария
0

А он знает про него и упоминал в своей аргументации по созданию Jai, как и Golang кстати. Чето не понравилось ему.

Ответить
2

Вот уж точно, легких путей не ищет

Ответить
2

один из главных факторов, сдерживающих развитие игровой индустрии — это распространённость C++

Посмотрел на календарь и там вроде бы не 2002 год.

Ответить
1

Прочитал одну из целей создания языка:
designed for good programmers

А есть что-то для любителей ваять спагетти

Ответить
0

Юнити
Вчера ты писал говносайты на javascript, а сегодня уже гордый геймдевелопер на юнити

Ответить
0

Но... Я же... (Ну говно сайты на js это сильно. Все-таки на ноде CMS-ок я не видел адекватных. Это больше к пхп. Ну а фронт это фронт)

Ответить
2 комментария
0

похожая цель была у DigitalMars D

Ответить
0

Unreal Blueprints. Есть даже отдельный топик про различные сорта спагетти, созданные на нём.
https://blueprintsfromhell.tumblr.com

Ответить
1

Создаю свой язык программирования уже лет 5, и вот испугался, что вдруг кто-то понял каким он должен быть. Ан нет, оказался всё так же текстовым как и все остальные.
Поэтому сюда подходит картинка группы людей и надпись "Здравствуй, Джонатан!".

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

Ответить
1

А как это вообще позволяет хоть что-то запрограммировать? Или это только рисования? Как реализовать игровую логику?

Ответить
0

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

Ответить
1 комментарий
0

Хоспаде, визуальное программирование делаешь что ли? Никогда это серьезным инженерам не зайдет, имхо.

Ответить
0

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

Ответить
15 комментариев
0

Профессиональная работа через рисование мышкой? Спасибо, нет

Ответить
0

Профессиональная работа через дырки в бумажной ленте? Спасибо, нет
Профессиональная работа через набирание тысячи команд вручную? Спасибо, нет
Профессиональная работа через оконный интерфейс? Спасибо, нет
Профессиональная работа через blueprint? Спасибо, нет
<Вы находитесь здесь>
Профессиональная работа через рисование мышкой? Спасибо, нет
:D

Ответить
7 комментариев
0

Простой вопрос.
Скажем, есть Т.З. - платформер аля марио, с простейшей физикой, системой хитов, движущимися платформами, стрельбой, простейшими противниками, разбиваемыми блоками, сбором монеток, парой менюшек, и, скажем динамическим замедлением-ускорением времени.
Сколько у вас уйдет времени что-бы "закодить" это на вашем языке? (в идеале)
А сколько на то что-бы половину переделать под новое тз?

Ответить
0

Минут пять, если заранее держать этот список фич в голове и реализовывать подряд.
У меня цель изначально - чтобы человек "с улицы" сделал на экране телефона Тетрис за минуту.

Ответить
0

Я тоже игру делаю уже 20 лет... коллега по несчастью :)

Ответить
1

Ну он то себе брейдом на жизнь с маслицем уже заработал, витнесом закрепил, теперь может во все тяжкие.

Ответить
0

Все что он заработал на Braid он спустил на Witness. Если бы она не взлетела, обанкротился бы (нет конечно, но все равно финансовое положение сильно пошатнулось бы)

Ответить
0

То, что начиналось как игра, теперь без малого язык программирования? :)
А что за игра будет? Рогалик?

Ответить
1

Рогалик это я сейчас делаю, скоро прототип, анонс в этом году (надеюсь).
А там типичная «игра мечты», по жанру что-то близкое к играм Telltale и Dontnod.

Ответить
2 комментария
1

Match 3 наверное :)

Ответить
3 комментария
0

Эм... нет. У него 2 собственных успешных проекта и своя игровая студия

Ответить
0

Прежде всего, я стараюсь всё упрощать. Но даже когда я начинаю вводить более сложные вещи, необходимые для работы, я каждый раз задумываюсь: «Какая именно от этого польза?»

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

Ответить
0

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

Ответить
5

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

Ответить
1 комментарий
0

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

Ответить
–1

Я не пойму, чего он дергается? Есть же Java на которой можно реализовать полноценное консольное 4К! Это вам не это!

Ответить
2

Консольный(мобильный и W10 тоже) мк написан на плюсах

Ответить
0

Точнее переписан после того как его купили MS

Ответить
–1

Все версии, кроме Desktop Java написаны же на чем-то вроде C#, вроде как.

Ответить
0

Сорян, но неоднократно доказано зло вечн^W с++ never die.

Ответить
0

Пожалуйста, простите, но этот мужик выглядит так, словно его жена знает ещё один его секретный язык :)

А по теме — это круто, что двигается данное направление.

Ответить
0

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

Ответить
0

Можно сразу в машинных кодах писать ... Что не сможете? И даже на ассемблере?

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

Кажется для игродела программиста - давно должно быть нормой держать под рукой блокнотик как получить ту или иную фичу максимально дёшево.но ведь не все о них даже в курсе - пророждая знаменитые What the fuck is it! В комментариях к коду

Ответить
0

да здравствуют новые говнокодеры!

Ответить
0

К списку "каждый программист должен разработать свой" добавляется "свой язык программирования". Ах да, но он же не программист... =)

Ответить
–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" } } } ]
Невероятно! Skyrim портировали на...
Подписаться на push-уведомления