Программа для программирования construct
Возможно, вы уже задавались вопросом, как инвестировать в киберспорт. Но, поскольку это все еще модальность, в некотором роде новая, вы найдете мало информации. Ниже дадим советы о том, как инвестировать в киберспорт. Как инвестировать в киберспорт: насколько велик.
Ценные бумаги
На сегодня корпоративные конфликты в акционерных обществах, которые пренебрегают интересами мелких акционеров подрывают доверие к основному инструменту рынка капиталов - акций. Акции преимущественно выполняют функцию перераспределения и поглощение, а не привлечение.
С чего начинать свой путь в игре Valheim?
Несколько месяцев назад в Steam была анонсирована и выпущена в релиз игра Valheim, которая побила рекорды по продажам в первые три недели, обогнав по этому показателю даже GTA 5, и на сегодняшний день хоть и снизилась в рейтинге, но все равно привлекает игроков. Это симулятор.
Почему выгодно обучение Unity 2D и 3D разработчиков
Если вы хотите научиться создавать игры, то вам обязательно надо пройти обучение по курсу Unity2D. В отличии от курса Unity3D, курс 2D Unity более короткий и не требует знания 3D, а также не требует навыков программирования, он является наиболее удобным для начинающего.
Покупка бу сервера через интернет
Brawl Stars: всё, что нужно знать об этой игре
Сколь бы не выпускали различные игры, удивляющие своей реалистичностью, среди огромного количества геймеров всегда будут востребованы и те, которые сделаны в формате самого что ни на есть мультфильма. И доказательством этого является Brawl Stars, выпущенная около трёх лет.
Как правильно продвигать мобильное приложение
Мобильные телефоны становятся все более доступными для потребителя. И именно их используют в большей мере для выхода в интернет. Это обусловлено доступностью устройств, а также наличием мобильного трафика для выполнения операций. В телефоне пользователи проводят.
Полезные и интересные обучающие материалы для программистов любого направления и уровня
В современном мире можно легко заметить стремительное и полноценное развитие техники, с каждым годом на многочисленных торговых площадках и рынках появляются обновленные и существенно усовершенствованные модели тех или иных устройств, которые превосходят по.
Опытный фотограф на фотосессию в Воронеже
В настоящий момент можно однозначно отметить огромную востребованность и популярность услуг профессиональных фотографов, которые очень часто приглашаются для работы на самых памятных, ярких и важных мероприятиях. При этом такие специалисты стали востребованными.
Полезный сайт для начинающих и продвинутых программистов
Все больше людей любого возраста начинают интересоваться программированием. Профессия разработчика всегда будет актуальна. Поэтому специалисты других сфер деятельности задумываются о смене работы. Доступная литература и видео в помощь программисту Программист -.
После официального релиза обновления, изменяющего основы изучения мира, разработчики опубликовали две дополнительные версии. Несмотря на то, что в 1.11.2 нет нововведений, апдейт был необходим для стабильной работы клиента. Пользователи Майнкрафта знают, что любое крупное.
Стартовая страница конструктора
Здравствуйте, если вы это читаете, то наверное у вас есть мечта создать свою игру.
А может вы просто странник случайно открывший эту статью? \_^-^_/
Первым делом стоит уточнить. Сегодня мы не будем создавать AAA-игру с открытым миром и огромным сюжетом на 2000 страниц сценария. Нет, сегодня мы создадим обычную игру жанра - платформер в котором не будет ничего сверхъестественного. Ну что же. Приступим!
Первый проект
Проект создать не сложно. С самого начала следует выбрать проекту имя, потом выбрать разрешение экрана и наконец ориентацию проекта (Landscape - горизонтальная, portrait - вертикальная)
Далее следует выбрать как мы будем писать логику игры. Есть два варианта.
Использовать внутреннюю систему "листа событий" где вся логика будет строиться на основе простых блоков.
система скриптов на основе языка программирования JavaScript.
Не хочется огорчить опытных программистов, но сегодня мы прибегнем к первому варианту.
Настройки сцены
Создав проект первое что вы увидите, это сцену, на которой и будут находиться все игровые объекты.
Долго по настройкам проходится не буду, ведь это и правда долго, но все же без них никуда.
Во вкладке About необходимо заполнить всю контактную информацию.
На вкладке Startup следует выбрать первую сцену, которая будет запускаться в начале и загрузочный экран, который будет показываться в самом начале игры. Рекомендую вам его убрать, чтобы никакие знаки в начале игры не всплывали и не отвлекали внимание игрока от основной сути происходящего.
Думаю с основными настройками мы закончили но подождите. Что это за серый фон? Так не пойдет.
Слои и их свойства
Слои в Construct - это настоящая магия.
Мы можем изменить parallax, цвет, прозрачность, эффекты и много много еще того, что сегодня пройдет мимо нас.
Нам будет достаточно выбрать приятный глазу цвет и пойти изучать основы дальше.
Сцена и видимая область
Обратите ваше внимание на контур в сцене. Видите? Так вот. Это та область, которую мы указывали еще при создании проекта, вопрос. За что она отвечает? Все просто. Эта та территория, которую видит игрок на своем экране, все остальное - размер сцены, проще говоря размер уровня. Давайте размер сцены уменьшим и поставим значения к примеру 1560 x 720
Стоит еще рассказать про лист событий. Лист событий - это среда программирования в Construct. На листе событий мы задаем логику игры и определяем то, как будут себя вести объекты на сцене.
Давайте не будем гнаться за всем и сразу и первым делом создадим первый объект.
Первый объект
Двойным кликом мыши и взмахом волшебной палочки мы открыли меню объектов и плагинов. Здесь мы можем добавить в наш проект плагины и объекты. Так же можно подключить устройства ввода и вывода. В общем. Это меню вы будете открывать часто при разработке игры.
Нам необходимо добавить объект Sprite и дальше будет интересно.
Графический редактор
О да. Ещё одно незнакомое нам окно, как же это интригует!
Это графический редактор, здесь вы можете рисовать и настраивать анимации. Так же здесь вы можете выбрать центр спрайта и настроить Collision polygon.
Обо всем по порядку. Справа сверху вы видите анимации, а справа снизу настройки этой самой анимации. Вы можете настроить скорость анимации, её имя, включить или выключить зацикленность и число повторений анимации. Далее по центру внизу вы можете увидеть кадры анимации, в этой панели будут отображаться все кадры, которые вы добавите в анимации. Слева вы видите цветовую палитру, но это не все. Совсем ненадолго я упомянул про центр спрайта. Так вот.
центр спрайта - origin. Он определяет центральную точку вашего спрайта. По этой точке конструктор смотрит координаты объекта и его угол поворота. Рекомендую ставить origin по центру снизу, так будет проще работать.
Ой. Совсем забыл. Я же еще говорил про Collision polygon.
Конструктор не видит границ объекта если вы их не укажите сами. Это границы объекта, за счет них и определяется то, где у персонажа ноги, а где голова. Рекомендую много точек в коллизии не ставить, ведь это может плохо повлиять на производительность игры, но если это необходимо, то так уж и быть.
Поведения и их свойства
Ух ты. Мы добавили первый объект на сцену! Я вас поздравляю, но радоваться рано. Слева у объекта появилось множество настроек, давайте познакомимся с ними.
Object type properties - Тут будет достаточно указать имя вашего объекта. Рекомендую называть все объекты на английском языке.
Common - Вот тут интересное, мы можем указать позицию объекта, размеры, его угол наклона, прозрачность, цвет, слой на котором будет этот объект и расположение по Z - координате.
Instance variables - Это локальные переменные объекта, мы можем за счет локальных переменных добавлять перемнные индивидуально для каждого объекта. К примеру можно добавить переменную на игроке, чтобы она хранила в себе информацию о количестве здоровья персонажа. В общем применений может быть много.
Behaviors - поведения объекта. Если говорить проще, то это свойства объекта, буквально в два клика мыши мы можем оживить наш объект и научить его ходить. Я повторю. В два клика!
Effects - Эффекты объекта, за счет них можно сделать красивую воду или к примеру добавить в игру Виньетку. Эффекты очень плохо могут сказаться на производительность.
Ну что же. Не устали? Предлагаю немного отдохнуть и составить формулу Гидроксида кальция. Кхм. Шучу, не расслабляйтесь, впереди интереснее.
Поведение "Platform"
Перейдем в окно behaviors у нашего игрока и добавим туда поведение platform.
хо-хо-хо. Вот и все, наш объект стал игровым персонажем и мы научили его ходить, падать, прыгать и так далее. Но почему так просто? В этом и заключается особенность этого конструктора. Однако мы еще успеем взорвать голову в процессе программирования.
Платформа и первый тест
Давайте добавим второй объект на сцену и вместо поведения platform наденем на него поведение solid. Отлично, теперь игру можно протестировать.Сверху на панели инструментов есть маленький треугольник, нажав на него вы сможете запустить игру и протестировать её.
Юхуу! Мы сделали это. Нажимая на стрелочки клавиатуры мы можем ходить и прыгать. Однако. Это было слишком просто :(
Давайте попробуем немного программирования :)
Лист событий и плагин клавиатуры
Хорошо, давайте научимся строить логику игры и управлять персонажем через кнопки клавиатуры, которые укажем сами. Никаких стрелочек, только WASD!
Открыв лист событий можно добавить первое событие, но подождите. Что за события?
Все очень просто. У каждого события есть свои последствия и именно по таким правилам происходит процесс программирования в Construct.
Давайте сделаем так, чтобы при удержании какой-либо клавиши наш персонаж бы двигался влево и наоборот.
Вот так будет выглядеть наше событие. Но этого мало и поэтому добавим еще несколько событий.
Теперь мы сделали полноценное управление за счет привычных клавиш на клавиатуре. Но что дальше? Дальше я предлагаю добавить камеру и немного больше платформ.
Камера
Давайте добавим еще один объект на сцену и назовем его "camera" Далее установим у этого объекта прозрачность на 0% и добавим новое поведение "MoveTo" а так же "ScrollTo"
Отлично, теперь перейдем в лист событий и добавим простое событие.
Добавим событие every tick и сделаем так чтобы камера постоянно двигалась к объекту (нашему игроку)
P.s every tick - Событие будет вызываться каждый кадр.
Вот и все. На самом деле можно просто добавить поведение "ScrollTo" на нашего персонажа, но такой способ немного не подходит нам, ведь тогда камера будет следовать за нами не плавно, а это не круто.
Перезагрузка уровня
Что будет если наш персонаж упадет вниз при попытке пройти этот уровень? Хмм. Да, он продолжит падать вниз и игрок не сможет пройти этот уровень с самого начала, давайте это исправим.
Добавим новое событие и инвертируем его. Я знаю, у вас появились вопросы, давайте по порядку. Я добавил событие is on-screen. Потом я инвертировал его и звучит оно так: если не на экране. Я надеюсь что вы поняли. Это трудно понять новичкам, но вы уже не новички, вы уже почти создали свою первую игру!
P.s Событие is on-screen выполняется тогда, когда определенный объект находится на экране.
Доделаем это событие и в условии поставим restart layout - перезагрузка сцены. Таким образом если наш игрок будет вне видимости экрана, то сцена просто начнется с самого начала.
Оптимизация игры под разные экраны
Вот и все.
Я рад тому, что кто-то дошёл до конца этой статьи и прочел её полностью. Если вам что-то осталось непонятным, то задавайте вопросы в комментариях. Постараюсь помочь. Окей, удачи тебе, странник.
В данной статье я опишу процесс создания мобильной игры с нуля, от зарождения в голове этой мысли до публикации приложения и работы с рекламой. Статья подойдет для людей, у которых отсутствует даже намек на опыт и знания в области разработки мобильных игр (а также программирования), так как именно таким человеком являлся автор в момент начала работы над этим проектом.
Основные и важные моменты:
— Приложение разработано с помощью Construct 2 – игровом движке на HTML5, позволяющем портировать приложение на все популярные мобильные (и не только) платформы;
— Навыки программирования для реализации подобным функционалом не требуются вовсе;
— Повторюсь: статья описывает путь человека неопытного, поэтому если вы хотите начать – эта статья может показаться полезной и вам;
— Описаны следующие этапы создания приложения: разработка, портирование на мобильную платформу Android, интеграция с рекламными сетями, публикация приложения, продвижение (некоторое бесплатное подобие этой активности).
— Все сроки по данным активностям указаны с учетом того, что в данный момент я не занят на основной работе, поэтому мог посвящать этому целые дни.
Начало, Идея, основная концепция
Начало было заложено после прочтения статьи о самом инструменте Construct 2, после чего было принято решение посмотреть на возможности этой программы. Несколько недель ушло на изучение функционала Construct 2. Бесплатной версии Free Edition для этого вполне достаточно. В ней существуют ограничения на количество эффектов, слоев и пр., но для изучения программы это не сильно мешает. Вот портировать на мобильные платформы с бесплатной версией уже нельзя.
Пробы с различным поведением спрайтов и физическим движком помогли неплохо освоиться в программе, а заодно послужили источником вдохновения для нескольких идей. На одной из них я решил остановиться – было решено делать игру, главный герой которой мог бы передвигаться по городу с помощью веревки – по принципу spiderman.
При беглом просмотре в GooglePlay аналогов найдено не было, что и послужило решающим толчком к началу разработки. Впоследствии оказалось, что с изучением уже существующих приложений поторопился. При поиске я ориентировался только на словосочетание spiderman и его вариации, что было ошибкой. Позже по другим ключевым словам нашел с десяток подобных приложений и несколько из них были очень популярные.
При более детальном построении логики игры я старался не отходить от основного принципа: игра должна быть простой и быстрой в реализации — чтобы не тратить много времени на первый ком и набрать весь минимально необходимый опыт для последующих проектов. С учетом того, что по характеру игра напоминает runner, хотелось обойтись без головной боли в виде построения десятков разных уровней и сделать один бесконечный.
Создание игры
Для дальнейшей работы потребовалась расширенная лицензия Personal License. Иначе недоступен экспорт на мобильные платформы, а также запрещено использование в коммерческих целях.
Сделал набросок в один экран, продолжил прорабатывать физику главного Героя. В результате получилось следующее: при движении Героя вправо случайным образом генерируются разные по фасаду и размеру здания. При нажатии на здании создается условная веревка, соединяющая Героя и упомянутую точку касания. Остальное делает встроенный в Construct 2 физический движок. При нажатии на свободное от строений пространство условная веревка исчезает, Герой вылетает по касательной. Конец игры при падении на землю.
Впоследствии убогая палка, на которой качался Герой, была заменена на менее убогое подобие веревки (состоящей из последовательно соединенных мелких палок).
После реализации задуманной физики движения (т.е. осознания того, что задуманную игру действительно можно сделать посредством Construct 2) я приступил к внедрению некоторых деталей – необходимого минимума для любой мобильной игры:
— Нормальная графика (в качестве редактора использовал бесплатный Inkscape – очень приятный векторный редактор, работал с ним впервые и с удовольствием);
— Экран меню;
— Кнопки с рестартом уровня, паузой, выходом из приложения и всего такого;
— Экран с информацией об игре;
— Счет и локальное хранение лучшего результата на телефоне;
— Оптимизация «кода»;
— Доработка геймплея, создание препятствий (фонари, рвущие веревку и сбивающие героя голуби);
— Усложнение игры с каждым новым уровнем (голуби становятся быстрей и встречаются чаще, фонарей также становится больше, здания – реже);
— Сделал корректным отображение элементов HUD на устройствах с различным разрешением.
Одной из значительных трудностей была реализация одного бесконечного уровня на всю игру. Проблема заключалась в том, что layout сделать бесконечным нельзя. Игры типа infinite runners делаются по принципу движения космического корабля из небезызвестного сериала Futurama: не герой двигается относительно всего остального, а все окружающее пространство движется относительно героя, а герой стоит на месте. В таких играх физика как таковая отсутствует, поэтому в моем случае это было фактически нереализуемо. В итоге я пошел по пути наименьшего сопротивления – длина layout’а считается одним уровнем, при его достижении с героя снимаются все данные о его движении, спрайт с Героем удаляется, в начале layout создается новый с теми же характеристиками движения, и это считается следующим уровнем.
Большая часть всего перечисленного была сделана за полторы недели (напомню, я делал это не по вечерам, а по 10-12 часов каждый день с перерывами на чай/кофе/потанцуем). Остальное допиливалось на последующих этапах.
Ниже представлены иллюстрации эволюции игры:
Экспорт
Игру, созданную на Construct 2, можно портировать на Android, iOS, Windows Phone. Это помимо не интересующих меня в данный момент Facebook Games, Chrome Web Store и пр.
Выбор мобильной платформы для портирования, разумеется, был сделан в соответствии с используемым мной в быту телефоне, поэтому это оказался Android.
Для экспорта есть несколько альтернатив, мой выбор пал на Intel XDK. Удобный и понятный XDK, быстрое тестирование на телефоне без необходимости переустанавливать приложение после каждого изменения.
Однако в моем случае результат оказался весьма плачевным – игра жутко тормозила, играть в нее было очень грустно, прорисовка графики также оставляла желать лучшего. Протестировал то же приложение на iphone брата – результат отличался колоссально.
Очень много времени я потратил на изучение форумов, пытаясь решить проблему с производительностью, по максимуму оптимизировал и упростил «код», на эту тему написано немало статей – открыл для себя множество интересных мелочей. Например, что отображение постоянно изменяющегося текущего результата (score) посредством текста очень сильно грузит приложение, и вместо текста нужно обязательно использовать Fonts.
В результате оказалось, что Intel XDK ведет себя так только в случае использования физического движка Box2D web. Для решения этой проблемы они создали отдельный движок Box2D asm.js, однако мое приложение с этим движком упорно отказывалось запускаться. В результате в качестве инструмента экспорта я переключился на CocoonJS. Construct 2, насколько я понял, уже не особо с ними сотрудничает (в самом конструкторе в перечне инструментов экспорта CocoonJS скрыт как deprecated exporter). Однако в случае использования физики это единственный работающий (хорошо работающий) вариант. Да и со стороны CocoonJS плагины для Construct 2 все еще создаются и обновляются.
Отдельно отмечу, что для подключения рекламы при экспорте через CocoonJS Вам потребуется премиум аккаунт. Он бесплатный, однако, для его получения потребуется написать им заявку с указанием описания Ваших текущих проектов, планов на будущее, а также обоснованием того, зачем Вам потребовался премиум аккаунт. Поэтому советую заранее озаботиться этим вопросом – на получение аккаунта уходит некоторое время. В моем случае это заняло около суток.
На поиски и изучение способов экспорта, оптимизацию “кода”, внесение доработок в приложение после тестирования на телефоне, а также адаптацию под различные возможные разрешения ушло около двух недель.
Надеюсь, моя статья сэкономит некоторым из вас это время.
Монетизация
В качестве способа монетизации я решил использовать наименее простой, на мой взгляд, способ – рекламу.
Я решил, что рекламу обязательно подключить сразу. Было бы подло выкладывать впоследствии обновление бесплатного приложения, после установки которого у пользователя появляется отсутствующая ранее реклама.
Единственный способ подключения рекламы к созданной в Construct 2 игре под Android и экспортируемой через CocoonJS – это связка рекламных сетей Mopub + Admob и остальные. Реклама MoPub подключается к приложению при экспорте в CocoonJS. Однако эта рекламная сеть, помимо своих объявлений (которых у нее мало, и оплата за них небольшая), может служить посредником между другими сетями, выставляя при этом для каждой сети минимальную стоимость за показ. Таким образом, можно в одном приложении показывать рекламу нескольких рекламных сетей, и для показа будет выбрана одна из наиболее дорогих. Admob, безусловно, является фаворитом среди рекламных сетей для Android, поэтому в качестве дополнительной я остановился на ней.
Сразу отмечу, что для тестирования рекламы публикация в App Store не нужна, можно встраивать и тестировать рекламу на любом удобном этапе разработки приложения.
Мой выбор формата показа рекламы пал на Full screen ads в момент нажатия кнопки Back или Restart, но не чаще чем раз в 2 минуты. Использование баннеров на экранах меню бессмысленно, ибо никто там надолго не задерживается; баннер на экране с уровнем в случае с динамичной аркадной игрой еще более бесполезен.
По данной причине я решил не ждать и выйти из сложившейся ситуации достаточно простым способом. Очевидно, никто не будет показывать рекламу в приложении каждые 10 секунд. Независимо от реализованного вами способа выбора момента показа рекламы (будь то нажатие определенной кнопки, или показ каждые n минут), между двумя показами проходить сколько-нибудь существенное время. Допустим, 2 минуты. В Construct 2 при подключении рекламы делаем следующую вещь: заводим переменную AdsLoadTrigger, обозначающую, была ли подгружена реклама, и, если нет – каждые 10-20 секунд пробуем загрузить снова, вплоть до удачной попытки. Таким образом, при фактическом Fill Rate в 20% можно без труда достичь близкой к 100% вероятности показа рекламы в нужный вам момент.
На подключение рекламы я потратил уйму времени. Анализ множества различных рекламных сетей, регистрация и освоение в каждой из них, интеграция рекламы в приложение, ее тестирование и настройка оптимальных мест и частоты показа занимают очень много времени. Однако если вы сразу пойдете по указанному выше пути – справитесь за несколько дней.
Публикация
Напомню, что портирование производил на устройство под Android: разумеется, самой популярной площадкой для распространения мобильных приложений является Google Play, однако существует немало альтернатив, про которые не стоит забывать. Таким образом, помимо очевидного выбора в пользу Google Play, я использовал также одни из наиболее популярных альтернативных магазинов: SlideMe и GetJar.
Учитывая, что для продвижения в наиболее перспективном Google Play очень важен мощный уверенный старт (для попадания в топы разделов) – альтернативные площадки можно использовать для обкатки приложения на пользователях, устранения основных замечаний и сбора данных для аналитики (конечно, если такая возможность была учтена в приложении).
Несколько слов о локализации: как минимум описание игры следует перевести на 4 языка – японский, английский, корейский и китайский. Таким образом, Вы охватите больше половины всех потенциальных пользователей Вашего продукта.
Продвижение
Как водится, я решил не тратить деньги на продвижение вовсе. Учитывая, что это первый опыт публикации мобильного приложения – я бы не стал возлагать особые надежды на финансовый успех этого предприятия, и потому деньги тратить посчитал бессмысленной затеей. Главное – набраться опыта.
Таким образом, в качестве инструментов продвижения были выбраны бесплатные обзоры. Был подобран перечень тематических сайтов и блогов, и разосланы предложения с обзором моей игры. К сожалению, на данный момент я не смогу сказать, каков результат этих действий, и сколько процентов обращений увенчались успехом – обзоры рассылались сразу с публикацией приложения, произошедшей на днях.
В качестве примера приведу полезную, на мой взгляд, ссылку на перечень платных и бесплатных сайтов-ревьюверов приложений для Android, iOS и Windows Mobile.
К описанию игры во всех магазинах приложений была указана ссылка на необоснованно-патетический промо ролик игры с изображением основных моментов геймплея. При создании промо ролика использовался видеоредактор «Camtasia Studio 8». Его возможностей более чем достаточно для создания подобного материала, при этом в программе можно очень быстро и самостоятельно разобраться. Для меня приятной особенностью является то, что в ней возможна запись экрана компьютера (я делал запись геймплея, запуская созданную игру в браузере) с возможностью удаления курсора. К сожалению, программа не бесплатна, однако 30 суток на пробу этого продукта вы имеете.
Затраты
Ниже приведен минимальный перечень финансовых затрат, с которыми нужно будет смириться:
— Personal license для Construct 2: 130 USD;
— Аккаунт разработчика Google Play: 25 USD;
— Лицензия разработчика Apple: 100 USD/year (она только в планах);
— Время – бесценно. Хотелось бы сразу отметить, что не стоит питать иллюзий насчет временных затрат на основании потраченного на саму разработку игры времени. В моем случае оно оказалось существенно меньше, по сравнению с остальными пунктами. Однако я уверен, что с последующими играми разница уменьшится.
В предыдущей статье мы рассказали о создании приложения для изучения английских идиом, в процессе которого мы приняли решение поменять формат приложения и развернуться в другую сторону. Мы решили применить наши рассуждения об онлайн-образовании и добавить гораздо больше игровой составляющей. Встал вопрос об инструменте для разработки игры.
Этой статьей мы открываем цикл постов о разработке первой игры для нашей образовательной платформы Learzing. Первый «скриншот» из игры — выше, а скоро мы анонсируем первую версию игры.
Работая по методологии lean startup (подробнее о ней — в статьях о команде и бизнес-модели), нам необходимо регулярно проводить тестирование нашего продукта заинтересованными в нем пользователями и получать от них обратную связь. Проще всего проводить тестирование на веб-версии (не теряя при этом в кросс-платформенности), также нужно, чтобы игра работала на любом современном устройстве. Сочетание HTML5 + JavaScript отлично удовлетворяет этим требованиям.
Инструмент для разработки HTML5-игр Construct 2 казался отличным выбором при старте разработки новой игры. Огромное сообщество, активный форум, сборка игры для всевозможных платформ, JavaScript SDK со стабильным интерфейсом и достаточным набором функций, открытый код игрового движка, плагины от разработчиков Construct 2 (а также сообщества и разработчиков коммерческих плагинов), стабильность, регулярные бесплатные обновления и никакой подписки (~135 долларов за лицензию).
В топе HTML5-игровых движков Construct 2 занимает первое место. На сайте декларируется 1,5 миллиона скачиваний. Возможно, такая популярность связана не только с качеством движка, но и с повсеместным использованием WYSIWYG-редакторов. В них и кроется проблема, которую мы решаем в статье.
Пример кода на визуальном языке программирования Construct 2
Для описания логики игры в Construct 2 используется непривычный визуальный язык программирования. Начнем с того, как исполняется программа. Вспомним, что такое game loop pattern. Код, который мы «накидали» в редакторе, исполняется на каждой итерации цикла игры после этапа обработки пользовательского ввода. То есть на каждом шаге эмуляции игрового времени (и обсчета состояния объектов игры) движок Construct 2 исполняет все конструкции программы.
В языке есть переменные и константы, циклы и функции, реализованные через события, условные операторы и сами события, и даже области видимости переменных. Это почти что набор стандартного структурного ЯП. Си успешно применяется в разработке сложных проектов (таких как Linux kernel). Возможностей ЯП Construct 2 могло бы быть достаточно и для нашей игры, если бы не:
- Отсутствие структур (в терминах Си). Вы не можете объединить данные, чтобы описать какую-либо сущность, работаете только со строковыми и числовыми переменными.
- Громоздкий визуальный код.
- Слабая применимость устоявшихся практик из общепринятых ЯП — поддержка IDE, архитектурные шаблоны, модульность, рефакторинги и т. п.
Архитектура плагинов Construct 2 на примере некоторых стандартных плагинов и их интерфейсов к визуальному ЯП
Базовый компонент времени исполнения Construct 2 игры представлен файлом c2runtime.js, который мы можем увидеть после сборки проекта. c2runtime занимается моделированием времени, расчетом collisions, созданием/уничтожением объектов, исполнением визуального кода игры, реализует интерфейсы JavaScript SDK и т. п.
JavaScript SDK определяет понятие плагина. Плагин — это, как не трудно догадаться, JavaScript-компонент, реализующий дополнительную функциональность, доступную из визуального кода Construct 2. Каждый плагин, кроме стандартного описания (имя, версия, URL сайта и т. д.), определяет набор предоставляемых им функций и событий. JavaScript-код плагина обрабатывает вызовы из визуального кода игры, а также имеет возможность посылать события в визуальный код.
В виде плагинов с открытым кодом реализованы даже базовые объекты Construct 2, такие как Sprite, Text и многие другие. С точки зрения архитектуры данный подход разработчиков выглядит грамотно. Компактное ядро, к которому подключаются плагины, каждый из которых реализует свою строго ограниченную функциональность, дополняющую функции ядра. Все взаимодействия с ядром выполняются через стандартный интерфейс JavaScript SDK.
Паттерн MVC
Визуальный язык программирования Construct 2 плохо подходит для описания сложной логики. Но на нем можно было бы описать простую логику уровня view паттерна MVC, а всю сложную логику реализовать в JavaScript на уровнях model и controller.
Для начала выделим, какие сервисы необходимы уровню view для функционирования игры. Сервисы, написанные на JavaScript, содержат всю сложную логику и состояние. По MVC они становятся уровнем model. Далее создадим контроллеры, предоставляющие уровню view доступ к model. Интерфейсами к JavaScript-коду в Construct 2 являются плагины, поэтому каждый контроллер реализуется в виде плагина Construct 2. Таким образом, мы получаем все MVC-компоненты в Construct 2-игре и имеем возможность писать код произвольной сложности.
Сейчас наша игра содержит 15 плагинов Construct 2. Каждый из них предоставляет визуальной части игры набор сервисов. Например, плагин для записи игры, воспроизведения, работы с persistent storage, плагин учета прогресса игрока на уровне и т.д. Представленное решение проблемы с Construct 2 не выглядит простым. Но кроме возможности писать на JavaScript, мы получили бонусы подхода MVC: строгое отделение кода UI от основной логики и состояния приложения.
Примерно 70-80% кода нашего проекта находится на уровне модели и написано на кросс-платформенном JavaScript. При необходимости сменить игровой движок, нам понадобится переписать менее 30% кода продукта. При успешном развитии проекта есть вероятность, что он будет переписан на Unity, как на гораздо более взрослой и дорогой технологии.
Приглашаем всех хабражителей помочь нам в создании игры для изучения английских идиом и сленга — потратить несколько минут и заполнить небольшой опрос, который повлияет на нашу разработку.
Мы бы хотели прежде всего отталкиваться от пожеланий и потребностей пользователей (то есть вас), а уже потом от собственных идей. Все заполнившие опрос получат ранний доступ к нашему приложению.
Construct Classic — многофункциональная программа для создания игр без использования дополнительных скриптов и каких-либо знаний программирования. Речь идет про двумерные и трехмерные игры.
Сразу хотим отметить, скачать Construct Classic на русском языке не получится, но пусть это вас не смущает — конструктор достаточно понятен. А если вы загрузите через торрент уроки и ознакомитесь с ними, легко разберетесь, как пользоваться.
Конструкт Классик: особенности
Программа Construct Classic, подобно Game Editor, может стать отличной заменой для хорошо известного проприетарного конструктора игр Game Maker. В чем же заключаются его особенности?
- Режим WYSIWYG для работы с объектами в описании.
- Собственная система событий и действий.
- Собственные шейдеры: технология DirectX 9 расширяет возможности в использовании дополнительных специальных эффектов.
- Гибкие и простые в использовании поведения.
- Bone Behavior — поведение для создания динамичных персонажей на скелетной анимации.
- Полезные плагины в большом количестве.
- Использование формата CAP для подключения готовых исходных кодов приложений/игр.
- Предустановленные наборы: звуки, спрайты, музыка, эффекты.
- Собственный встроенный редактор — объекты могут быть легко масштабированы, визуализированы, изменены, а также размещены на отдельных слоях (для параллакса и смешивающих эффектов).
Полезно новичкам и профессионалам
В отличие от похожих приложений, в Scirra Construct Classic присутствуют собственные таблицы событий, предоставляющие диаграммы состояний. Корректировать эти таблицы можно через таблицу действий и событий с помощью функции drag-n-drop.
Если вы не изучали программирование и являетесь новичком в этой сфере, не волнуйтесь — последняя версия поможет ее освоить, а обучающие уроки и образцы откроют все возможности программного обеспечения. Разработка 2D и 3D игр в этой среде будет интересна как новичкам, так и профессионалам в области дизайна, искусства, программирования, обучения.
Читайте также: