Здравствуйте! В этой статье мы с вами обсудим такой популярный движок для игр, как Construct. Construct– это среда для разработки кроссплатформенных игр в таких жанрах, как: платформеры, шутеры и файтинги. Движок собирает игры на языке JavaScript, однако написан на C++. Давайте разберёмся, в чём его достоинства перед другими движками, и какие он имеет недостатки.
Начать хотелось бы с аудитории среды. Construct используют в своих проектах преимущественно студенты и начинающие разработчики. Почему так? – спросите вы. Потому что написать свою первую игру на этом движке намного проще, чем на других. Если вы не планируете делать свой первый проект сложным и объёмным по своей структуре, то вам прекрасно подойдёт Construct. У вас, наверняка, до сих пор остался вопрос: почему так? Ответ очень прост: для реализации простого проекта вам не потребуется писать ни одной строчки кода. Эта исключительная особенность и делает движок популярным среди родственных, таких как: Unity, Gdevelopи Gamemaker. Constructза время своего существования был выпущен в трёх версиях. Первая версия движка Construct Classic была выпущена в 2007 году и поддерживалась разработчиками на протяжении 5 лет с момента выпуска. Construct 2 выпустили в 2011 году и её поддержка длится до сих пор: последняя версия была выпущена 3 августа 2020 года. Construct3 был представлен в 2017 году, однако на данный момент его предшественник пользуется у разработчиков игр большей популярностью. Я расскажу вам о движке на примере как раз второй версии, поскольку она на данный момент наиболее популярна и я с напарником использовал именно эту версию при создании нашей первой игры.
Интерфейс программы очень простой. Когда вы открыли программу и создали проект, у вас имеется сцена. С помощью меню вы можете добавить практически любые элементы на сцену. К элементам относятся: Кнопки, текстовые блоки, музыка, спрайты и тайлмапы. Спрайт (от англ. sprite – «фея, эльф») – это некий объект игрового мира, который выполняет ту или иную роль. Приведу простой пример: платформер Super Mario Bros. Спрайтами здесь выступают: Марио, грибы, враги (Гумба, Купа и другие), трубы, кусты и монеты. TileMap(от англ. tile – «плитка», map – «карта») – это карта в игре, выложенная по плиткам. В Super Mario Bros. карта нарисована именно так. Это намного удобнее, чем рисовать вручную, поскольку экономит много времени. Чтобы тайлмап не выдавал себя в готовом продукте, нужно нарисовать плитки так, чтобы рядовому пользователю не было видно отдельных кусков карты, чтобы она была единым целым. Итак, продолжаем. Для всех объектов, размещённых на сцене, есть отдельное окно, расположенное в правом нижнем углу программы. Отсюда мы можем изменять текст, добавлять анимации спрайтам и многое другое. Но это ещё не всё. Ни один уважающий себя проект не работает с одной сценой. Как правило, для каждого события в игре существует своя сцена: для меню, для поля загрузки и для каждого из уровней игры. Для каждого слоя необходимо создать специальный лист событий. Лист событий представляет из себя блок-схему, которая содержит в себе информацию по действиям над объектами: включениям, выключениям, движениям. Также в листе событий записываются расчёты и закономерности, такие как счёт собранных монет, нейтрализованных врагов, здоровья и т.д. События объединяются в группы, а группы могут быть частями других групп. Лист событий – это целое дерево с множеством ветвей. Можно, конечно, написать все события подряд, но тогда программа будет нечитабельна.
Разберём подробнее объекты, которые возможно воплотить с помощью Construct:
Ø Кнопка (Button). С помощью кнопки мы можем перейти на другую сцену, переместить спрайт в исходную точку, включить или выключить музыку или закрыть программу. Весь функционал кнопок записывается в листе событий, а надпись на кнопке, её размер и положение на экране – в управлении объектами. В нашей игре кнопка используется в меню для запуска игры.
Ø Индикатор прогресса (Progress bar). Используется для графического обозначения прогресса загрузки игры, степени прогресса при прохождении уровня и другое.
Ø Текстовое поле (Text box) и текст (Text). Текстовое поле – это объект, в котором записывается текст. По умолчанию является активным, то есть когда игра запущена, мы можем в это поле что-то записать. Текст не имеет собственного фона и его невозможно изменить от имени пользователя. Только в самой среде.
Ø Спрайт (Sprite). Выше я описал все его функции, переходим к следующему типу объектов.
Ø Плиточный фон (Tiled Background) и плиточная карта (TileMap). Это два похожих объекта, но с небольшой разницей. Плиточный фон создаётся из повторений одной картинки-плитки. А плиточная карта строится вручную из нескольких картинок. Если вы пишете серьёзную игру, то выбирайте второй вариант: он намного практичнее.
Ø Мультимедиа. Вы можете добавить в проект музыку, звуки, видео, картинки. Не случайно я разделил понятия музыка и звуки. Сейчас вы узнаете, почему.
Как я уже сказал, звуки и музыка в Construct 2 принципиально отличаются по логике своей работы. В структуре файлов проекта не случайно расположены отдельно папки «Music» и «Sounds». Сделано это для улучшения производительности готовых игр. Короткие звуки, такие как звуки удара или звук сбора монеты, загружаются в оперативную память целиком и хранятся там всё время игры. А музыка прогружается по ходу и не занимает много места в ОЗУ. Если загрузить музыку в папку со звуками, то будет излишне потребляться ОЗУ. А если, наоборот, загрузить звуки в папку с музыкой, то когда вы, к примеру, подберёте монету, звук не успеет прогрузиться и опоздает на полсекунды. А это уже крупный недостаток. С этим разобрались.
Ну и в конце хотелось бы предоставить собственно игру, разработанную моей командой в составе двух человек. Игра называется «Hero vs monsters: RUSH». Игра заключается в том, чтобы герой, собрав все монетки, добрался живым до двери. Всего в игре пока что 4 уровня, но мы не стоим на месте. Предоставляю скриншоты из среды разработки и видео с геймплеем. Спасибо за внимание!
Видео с геймплеем.