Gamedev
Andrey Apanasik
1826

В Construct 3 появится возможность писать скрипты на JavaScript

Команда Scirra анонсировали, что в следующей версии Construct появится возможность использовать JavaScript для написания скриптов.

В закладки
Аудио

Зачем кодить?

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

Многие инди разработчики используют Construct в качестве своего первого инструмента для ознакомления с миром разработки игр. После использования Construct в течение некоторого времени они могут решить перейти на другой движок, чтобы совершенствоваться. Возможность использовать JavaScript в Construct поможет им освоить навыки, которые им понадобятся в будущем.

Construct всё чаще используется в образовании. Для преподавателей и студентов важно охватить практические навыки, которые будут полезны в дальнейшем. JavaScript - один из самых популярных и широко используемых языков программирования в мире. Например, в течение последних 6 лет JavaScript был самым популярным языком программирования, судя по опросу разработчиков StackOverflow.

Почему JavaScript?

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

JS - один из самым популярных языков программирования, он широко используется и на серверах (node.js). Добавьте сюда скорость, JIT компиляцию, мощный V8 под капотом.

Скрипты в экшенах

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

Скрипты в событиях

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

Файл скрипта

Теперь можно написать полноценный скрипт.

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

Цель состоит в том, чтобы поддержать все необходимые API, чтобы вы могли реализовать всю игру на JavaScript, если захотите.

В заключение

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

Ранняя версия с возможностью писать на JavaScript появится в следующей бета-версии Construct в ближайшую пару недель.

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

Написать
{ "author_name": "Andrey Apanasik", "author_type": "self", "tags": ["scripting","javascript","construct3","construct"], "comments": 25, "likes": 22, "favorites": 33, "is_advertisement": false, "subsite_label": "gamedev", "id": 51979, "is_wide": false, "is_ugc": true, "date": "Mon, 27 May 2019 23:24:33 +0300", "is_special": false }
0
{ "id": 51979, "author_id": 1922, "diff_limit": 1000, "urls": {"diff":"\/comments\/51979\/get","add":"\/comments\/51979\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/51979"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }
25 комментариев
Популярные
По порядку
Написать комментарий...
3

дщерь это хто? )

Ответить
1

Это рщенок, очевидно же.

Ответить
0

Внезапно, но гугл отвечает легко на этот вопрос (что вам помешало выделить слово в браузере и поискать по нему — вопрос отдельный) — https://ru.wiktionary.org/wiki/%D0%B4%D1%89%D0%B5%D1%80%D1%8C

Ответить
1

Приятно иметь специально обученного человека который за тебя ищет всякое, сегодня ты оказался полезен, хвалю. Ааа, поймался? (☞゚∀゚)☞

Ответить
4

Вау! Это просто супер, на самом деле. У меня дщерь 11ти лет и два года, раз в неделю, по два часа изучает Construct 2. Так вот - она уже сделала сайд-скроллер на три уровня с разными концовками. Выглядит своеобразно, но плин - это тупо готовая игра. А с JS - это и будущее и просто супер)

Ответить
2

Интересный факт, что подобная фича есть и в C2, если поставить плагин от российского разработчика Валерия Попова. Плагин был довольно популярный, так что можно сказать, что разработчики Констракта вдохновились этим и просто запилили свою его версию для C3. Еще ходят слухи, что дальше C3 будет не только по подписке (как происходит сейчас), но и модули различные будут продаваться за деньги (к примеру, хочешь экспортировать в html5 - плати отдельно), как в том же GMS. В C2 они шли в комплекте с движком. Такие дела)

Ответить
1

Идет нахер C3 с его моделью подписки, C2 for the win!

Ответить
0

На самом деле это тема. Ещё бы поддержку html5 завезли.

Ответить
2

кажется проще сразу делать html5 игру, зойчем вам этот конструкт )

Ответить
1

не проще - в голом html5 нужно будет написать кучу сервисных функций

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

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

И это не реклама Phaser - даже с ним будет куча унылого сервисного кодирования, которое не относится ни к геймдизайну, ни к интересным алгоритмическим решениям.

Впрочем, если вы программист, как я - попробуйте ради расширения кругозора пописать именно на конструкторе игр, чтобы увидеть, как много boilerplate они решают за тебя. Только я не Construct советую, а Stencyl.

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

Как control freak и для развития я перешел N лет назад на чистое программирование, но до сих пор, раскладывая UI в коде или обрабатывая нестандартный случай загрузки, с легкой ностальгией вспоминаю конструкторы, в которых верстка UI и целых экранов занимает минуты, а масса работы вообще убрана - ты просто раскладываешь объекты на сцене и привязываешь к ним нужные скрипты, не заботясь ни о жизненном цикле экранов, ни о том, как анимировать смену экранов, ни о массе других вещей.

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

Ответить
0

а там еще и многострадальное обновление с HTML5 недавно подвезли ;) больше года его обещали и вот оно... правда я еще не пробовал - фри версия и устаревшая ось, пилю флеш в 2019 :( но надеюсь работает годно, тогда можно будет попробовать перейти на современную технологию )

Ответить
0

я тоже не пробовал, но как-нибудь заценю

Ответить
0

В принципе, вы правы.

Ответить
0

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

Ответить
1

Так 2 конструкт и есть хтмл5. Теперь просто разрешили писать код напрямую, а не через конструктор.

Ответить
0

Тогда уж сразу на Haxe.

Ответить
0

ну нахе
Шутка. Haxe - один из самых недоценненых и крутых языков. Жаль, что у него нет вакансий - поэтому я остаюсь на JS/TS, чисто только потому, чтобы коллеги могли спокойно читать код и править его в случае необходимости.

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

Ответить
0

Все версии "Construct" поддерживают выгрузку проекта в HTML5 или в приложение для "андроид", а отдельным плагином и в "айос".

Ответить
0

О, ништяк. Там второй Construct из стима выпилили, но новый вроде обещали запилить в стим.

Ответить
0

Хм, а зачем собственно тогда Construct, если есть Unity, в котором тоже можно использовать JS ?

Ответить
0

Констракт хорош для относительно простых 2D игр. Ну и, всё-таки, он построен изначально на визуальном программировании, а поддержка JS - это надстройка сверху. Юнити же наоборот. Да и нормальной event sheet системы для него нету, насколько я знаю.

Ответить
0

Чёт какой-то странный статья. Сам Construct2 - это и есть JavaScript, который сам в себя пишет Java-код по средствам условий и действий. Формально, если у вас проблема с вниманием (как у меня) и огромный массив условий может не работать, только потому что вы забыли поставить кавычку в конце очередного события, то "C2/3" - идеальное решение.
Так же, еще со времён "C1" в действия можно смело было вставлять код из JS.
В "C3" обещали реализовать работу с 3D-графикой и шейдерами, но что-то не срослось, и маркеты придумали ход конём, мол 3D-графику не завезли, но теперь у нас есть такая вот новая "фича", которая вообще-то часть механики движка, но это не важно.
Типа как уметь руками собрать модельку самолётика, а потом пиариться, что ты правша.

Ответить
0

Местами статья звучит, как перевод промтом.

Ответить
0

Я с констрактом не работал, его терминологию совсем не знаю =\

Ответить
0

Ну если будет опция использования TS, то я бы даже поюзал из интереса

Ответить

Прямой эфир

[ { "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": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "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, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "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": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "chvjx", "p2": "ftwx" } } }, { "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" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbl", "p2": "gnwc" } } } ]