Обзор конструктора компьютерных игр Game Maker
Содержание
- Введение
- Основные возможности
- Дополнительные возможности. Язык Game Maker Language (GML)
- Библиотеки и Open Source
- Заключение
- Ссылки
Введение
Иногда бывает так, что при прохождении какой-нибудь интересной игры человеку приходит в голову идея, что он мог бы сделать игру и получше, был бы у него опыт разработки. В большинстве случаев, для создания более-менее неплохой игры требуется большой опыт программирования или, на худой конец, знакомый программист. Собственно на этапе поиска разработчика большинство таких идей и останавливается.
Но что, если у вас будет инструмент, с помощью которого даже человек, имеющий слабое понятие о программировании, сможет реализовать свою идею? Такими инструментами и являются конструкторы игр. Их существует немало, но в данном обзоре речь пойдет о редакторе Game Maker от компании YoYo Games.
Основные возможности
Редактор Game Maker представляет собой визуальную среду разработки, позволяющую задавать действия объектов путем перетаскивания нужных иконок действий на поле объекта. В основном, Game Maker используется для разработки 2D игр, но существует возможность создания и 3D.
Уровни в Game Maker называются комнатами (Room). Для каждой комнаты можно задавать различные настройки камеры, физики и игрового окружения.
За внешний вид объектов отвечает редактор спрайтов. Он позволяет задавать различные изображения, которые будут показываться при совершении объектом определенных действий.
За поведение объекта отвечает код, написанный в окне объекта. Те, кто не знаком с программированием, могут использовать drag-n-drop систему, с помощью которой перетаскивать иконки действий. Для продвинутых разработчиков есть встроенный язык Game Maker Language (GML).
Дополнительные возможности. Язык Game Maker Language (GML)
Как уже было сказано выше, язык GML представляет расширенные возможности разработки. Сам язык похож на Java, так что у программистов, знакомых с ним, не будет больших сложностей с освоением GML.
Game Maker включает в себя огромное количество встроенных функций для работы с объектами и спрайтами, так что нет необходимости изобретать велосипеды для каждого проекта. Обработка столкновений, анимация, передвижение, простая физика – всё это доступно «из коробки» для любого разработчика.
В качестве примера работы с кодом GML давайте разберем простейшую игру.
Суть игры заключается в следующем:
От левого края экрана выплывает стая рыб. Игрок должен управляя гейзерами вытолкнуть рыб на поверхность с помощью пузырьков.
Будем считать, что у нас заранее заготовлены и импортированы в проект спрайты для рыб, гейзеров и пузырьков.
Создадим объект рыбы. Пусть он будет называться objSmallFish. В нем нам нужно прописать некоторые действия. Для этого создадим событие Step Event (оно происходит на каждом шаге игры) и пропишем в нем следующий код:
x+=lengthdir_x(3,0); // движение вправо
if (bbox_left >room_width) instance_destroy(); // если левая граница объекта правее правой границы комнаты, то уничтожение
Также нам понадобится событие столкновения с пузырьком. Для этого создадим Collision Event для объекта objBubble (пока в этом объекте нет кода). В Collision Event добавляем такие действия: Create instance из вкладки main1 и прописываем в нем объект objBubbledSmallFish (это объект, выглядящий как пузырек с рыбой внутри. Его код также будет заполнен позднее.); два Destroy Instance также из вкладки main1 - один для other object, другой для self.
Что всё это означает? Это означает, что при столкновении рыбы с пузырьком рыба и пузырек заменяются на рыбу в пузырьке.
Теперь заполним код объектов objBubble и objBubbledSmallFish.
Создадим Step Event и запишем в нем следующий код:
y+=lengthdir_y(3,90); // движение вверх
if (bbox_bottom <0) instance_destroy(); // если нижняя граница объекта выше верхней границы комнаты, то уничтожение
Да, у этих объектов одинаковый код, но различный внешний вид.
Мы создали код рыб и пузырьков. Но как они будут пояляться на уровне?
Нужно создать объекты, которые будут отвечать за появление рыб и пузырьков. Это будут objFishCreator и objCraterBig.
Напишем код objFishCreator. Для этого создадим в нем событие On Create и пропишем в нем код:
respawn_time=random(120);
Это означает, что рыбы будут появляться в промежутке от 0 до 120 мс.
Создадим также Step Event и пропишем в нем код:
if (respawn_time<=0) // если время респавна закончилось
{
instance_create(x,y+random(100)-50,objSmallFish); //создаем рыбу
respawn_time = random(120); // сбрасываем таймер
}
else respawn_time-- //уменьшаем значение таймера на 1;
Теперь напишем код для гейзера.
В объекте objCraterBig создаем событие On Create и пишем в нем
cooldown=0; // время "перезарядки" гейзера
В событии Step Event пишем код:if cooldown>0 then cooldown--;
Также создадим событие Mouse/Left Button, которое будет обрабатывать нажатие на объект гейзера. В нем пишем следующий код:
if (cooldown<=0)
{
instance_create(x,y,objBubble) // если гейзер охладился, то можно создать еще пузырь
cooldown=60; // и "нагреть" гейзер
}
Теперь создадим уровень, поставим на нем объекты objFishCreator и objCraterBig и можно играть. Как видите, создать простую игру на Game Maker очень просто и быстро.
Существует также множество пользовательских функций для различных ситуаций. Эти функции обычно объединяются в библиотеки.
Библиотеки и Open Source
Поскольку Game Maker изначально предназначен для 2D игр, поддержка 3D в нем достаточно слабая. Однако существуют библиотеки, расширяющие функционал Game Maker для работы с 3D. Например библиотека Ultimate 3D (www.ultimate3d.org). Кроме того, существует огромное множество библиотек, дополняющих и другие возможности языка.
Рассмотрим некоторые из них:
Библиотека GM-GMP
Данная библиотка предназначена для выполнения нестандартных операций с числами. Например перевод из одной системы исчисления в другую, выполнение арифметических операций с не десятичными числами, определение простых и четных чисел и т.д.
Библиотека XRP DLL
Данная библиотека позволяет хранить все ресурсы приложения (картинки, модели и т.п.) в отдельном зашифрованном файле. Это позволяет сократить время запуска, а также легко проводить апгрейды ресурсов, не переписывая код.
Библиотека Super Sound System DLL
Звуковая библиотека, позволяющая проигрывать .ogg и .wav, менять громкость, позиционирование, позицию и скорость проигрывания звука.
Библиотека Embed DLL
Данная библиотека позволяет запускать дополнительные окна в окне игры.
Библиотека AI LIB
Предназначена для упрощения создания ИИ ботов для игр жанра TDS (шутер с видом сверху).
Также многие проекты выкладывают свои исходники в открытый доступ, что означает наличие огромного количества примеров кода и реализации тех или иных функций в работающих играх. Это огромный плюс для тех, кто только начинает изучать Game Maker, поскольку можно посмотреть интересующие вещи и использовать наработки других людей, не «изобретая велосипеды».
Заключение
В заключение можно сказать, что Game Maker является достаточно простым, активно развивающимся и дружелюбным к новичкам редактором игр. Его функционал может удовлетворить как начинающих разработчиков, которые только знакомятся со сферой разработки игр, так и тех, кто зарабатывает этим себе на жизнь. Недавно появился новый инструмент – Game Maker Studio, который позволяет разрабатывать игры не только под Windows, Mac и Linux, но и под практически все распространенные мобильные платформы, в частности Android, iOS и Windows Phone.
Ссылки
- Game Maker for Windows - официальный сайт;
- Wikipedia - Game Maker
- gmakers.ru - русскоязычное Red System Game Maker Community
- game-maker.ru - огромный выбор примеров, исходников, уроков, статей, игр созданных на Game Maker.
- hellroom.ru - один из крупнейших активных форумов.