Найти тему
Саня Ковл

Создание игры типа бродилка

Создание персонажа и управления им.

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

Запускаем программу Game Maker Studio, нас встречает стартовое окно (рисунок 1.1.), в котором нам предлагают выбрать действие.

Рисунок 1.1.
Рисунок 1.1.

Мы выбираем вкладку «New», в поле Project Name вводим название нашей игры (я оставил название Project1). По желанию можно изменить место сохранения проекта, для этого нужно нажать кнопку , которая находится справа от поля Project Directory. Когда все готово, нажимаем кнопку и ждем, когда загрузится наш проект.

После того как проект загрузился появляется основное меню программы (рисунок 1.2).

Давайте пробежимся по основным кнопкам, которые находятся в верхней панели программы:

-2
Рисунок 1.2.
Рисунок 1.2.

Начинать нужно с выбора спрайта для объекта, для этого нажимаем кнопку «Создать спрайт» у нас появляется окно (Рисунок 1.3), в котором нам предлагают выбрать из картинок на компьютере (Load Sprite) или создать свой (Edit Sprite), мы нажимаем Edit Sprite. Далее нам нужно создать область для рисования нашего спрайта, нажимаем на кнопку New, как показано на рисунке 1.4а.

Рисунок 1.3.
Рисунок 1.3.
Рисунок 1.4. (а)
Рисунок 1.4. (а)
Рисунок 1.4. (б)
Рисунок 1.4. (б)

У нас создается пустая картинка размеров 32х32 пикселя, но это слишком мало для нашего героя, поэтому будем увеличивать ее в размерах. Для этого в верхней панели нажимает Transform -> Stretch. У нас появляется окно в котором мы можем редактировать размеры нашего изображения (рисунок 1.5).

Рисунок 1.5.
Рисунок 1.5.

Расставляем значения, как показано на рисунке 1.5 и нажимаем «ОК». Далее приступаем к рисованию нашего героя стандартным способом, который нам предлагает Game Maker. Для этого нажимаем кнопку редактирования изображения (рисунок 1.4б) и рисуем нашего героя. Принцип рисования в этом редакторе как в программе Paint. Я, к примеру, нарисовал такого чудика (рисунок 1.6).

Рисунок 1.6.
Рисунок 1.6.

Если все готово, то нажимаем кнопку с зеленой галочкой, тем самым мы завершили рисование и сохраняем готовое изображение, потом еще раз нажимаем на эту же кнопку, нас перекидывает на начальное окно выбора спрайта (рисунок 1.3). В поле «Name» мы можем ввести название нашего спрайта, к примеру «Player». Далее нажимаем ОК и все, наш спрайт успешно создан.

Теперь приступаем к созданию объекта. Нажимаем на кнопку «Создание объекта», появляется окно со свойствами объекта (рисунок 1.7).

Рисунок 1.7.
Рисунок 1.7.

В поле «Name» вводим имя нашего объекта, к примеру, Player. В поле Sprite нажимаем кнопку для выбора спрайта, как показано на рисунке 1.7 и кликаем на нашего нарисованного игрока. Ниже ставим галочку напротив пункта Solid. Наш объект готов к эксплуатации. Теперь мы будем задавать ему его свойства и указывать что делать в определенных ситуациях. Для этого нажимаем кнопку "Add event", открывается меню (рисунок 1.8), в котором мы выбираем пункт Key Press, затем ищем пункт <Up>. Это создание условия нажатия на кнопку «Стрелка вверх».

Рисунок 1.8.
Рисунок 1.8.

После мы переносим кнопку "Move fixed" (она в подпункте Main, левая верхняя) в поле Action (т.е. поле, находящееся левее от данной кнопки), нажимаем кнопку с изображением вверх и в поле Speed задаем скорость равную 3 (рисунок 1.9), нажимаем ОК.

Рисунок 1.9.
Рисунок 1.9.

Теперь наш персонаж при нажатии на клавиатуре клавишу со стрелкой вверх будет двигаться, но при отпускании кнопки он не будет останавливаться, а будет продолжать двигаться. Для этого мы создадим условие для его остановки.

Для этого снова в свойствах объекта нажимаем Add Event -> Key Release -> Up. Перетаскиваем кнопку "Move fixed" в поле Action и выбираем квадрат по середине, нажимаем ОК и закрываем свойства объекта нажатием кнопки "Ок".

Остался последний штрих – создание уровня и добавление туда нашего персонажа. Для этого нажимаем кнопку «Создать уровень», у нас открывается окно, выбираем вкладку Objects как показано на рисунке 1.10 и кликаем в любом месте темно серой области.

Рисунок 1.10.
Рисунок 1.10.

Вот и все, нажимаем кнопку с галочкой и запускаем нашу игру в главном меню программы. В итоге, мы видим следующий результат (рисунок 1.11):

Рисунок 1.11.
Рисунок 1.11.

Для того, чтобы наш персонаж двигался во всех направлениях, мы повторяем действие, описанное на странице 5 во всех направлениях.

Рисунок 1.12.
Рисунок 1.12.

Теперь наш герой может двигаться во всех направлениях и при отпускании клавиши, он останавливается. Давайте сделаем какую-нибудь преграду, чтобы персонаж не заходил за ее пределы. Для этого создадим спрайт стены и ее объект. После открываем свойства объекта нашего персонажа, нажимаем Add Event -> Collision и выбираем объект стены. Перетаскиваем кнопку "Move fixed" в поле Action и нажимаем квадрат. Переходим в редактирование уровня и создаем объект стены, можно создать несколько объектов, примерно как у меня на рисунке 1.13.

Рисунок 1.13.
Рисунок 1.13.

Если вам нужно повернуть объект, мы выделяем нужный нам объект, переходим во вкладку objects и в поле Rotations вводим значение 90, т.е. поворачиваем на 90 градусов. В поле Size_x и Size_y мы можем изменять размеры объекта в ширину и высоту. Теперь давайте запустим игру и увидим, что персонаж при сталкивании со стеной останавливается.

Для того, чтобы увеличить размер уровня, в свойствах комнаты во вкладке Settings есть два параметра, Width (1024) и Height (768), меняя их, мы меняем размер комнаты. но при запуске игры, мы можем заметить, что при увеличении размеров комнаты, персонаж просто уходит за пределы экрана. Чтобы этого не допустить и чтобы мы видели, куда направляется наш персонаж в свойствах комнаты переходим во вкладку Views (рисунок 1.14).

Рисунок 1.14.
Рисунок 1.14.

Напротив пункта Enable the use of Views ставим галочку. Это значит, что мы включаем камеру, которая будет следить за нашим персонажем, также ставим галочку напротив пункта Visible when room starts, т.е. включаем камеру, когда открылся уровень. Но при запуске игры, мы можем заметить, что камера не следит за персонаже, для этого в поле Object following мы выбираем нашего игрока, теперь в полях Hbor и Vbor ставим значения 9999. Вот и все, теперь мы можем спокойно наблюдать, куда перемещается игрок.

Я скачал схему лабиринта в интернете (рисунок 1.15 а) и составил что-то схожее на нашем уровне (рисунок 1.15 б).

Рисунок 1.15. (а)
Рисунок 1.15. (а)
Рисунок 1.15. (б)
Рисунок 1.15. (б)

Теперь давайте создадим какой-нибудь бонус, который будет давать нам очки. У меня, например, это будут звездочки. Создаем спрайт, рисуем бонус, создаем объект, присваиваем ему наш спрайт, переходи в свойства уровня и расставляем наш бонус, примерно как у меня на рисунке 1.16.

Рисунок 1.16.
Рисунок 1.16.

Теперь сделаем так, чтобы количество очков отображалось на экране, а также, чтобы они прибавлялись при взятии бонуса. Для этого переходим в свойства главного героя, нажимаем Add Event -> Draw -> Draw GUI, справа от поля Action переходим во вкладку Score и перетаскиваем кнопку Draw Scrore, как изображено на рисунке 1.17.

Рисунок 1.17.
Рисунок 1.17.

В полях x и y ставим значения 50, т.е. количество очков будет рисоваться на 50 пикселей вправо и вниз от левого верхнего угла экрана. Для того, чтобы мы могли получать очки при столкновении с бонусом, переходим в свойства игрока, нажимаем Add Event -> Collision и выбираем наш бонус, переходим во вкладку Score и переносим кнопку Set Score в поле Action (рисунок 1.18 а), в поле new score ставим значение 100 или любое на ваше усмотрение, ниже ставим галочку напротив Relative и нажимаем ОК.

Рисунок 1.18. (а)
Рисунок 1.18. (а)
Рисунок 1.18. (б)
Рисунок 1.18. (б)

Теперь нужно, чтобы бонус удалялся при его получении, переходим во вкладку main1 и перетаскиваем кнопку Destroy Instance в поле Action (рисунок 1.18 б). ставим галочку напротив Object и выбираем наш бонус. Нажимаем ОК и можно запускать игру для проверки. Как мы видим, при столкновении с бонусом, наш герой получает 100 очков.