Найти тему

Арканоид на Game Maker за пол часа

Оглавление
Игра, которую мы соберем за пол часа (или быстрее)
Игра, которую мы соберем за пол часа (или быстрее)

В одной из серий уроков я учил создавать вас шаг за шагом игру жанра Arkanoid, постепенно объясняя смысл некоторых функций и в целом работу движка Game Maker Studio. Крайне рекомендую предварительно ознакомиться с этими уроками:

Но в тех уроках я специально вел вас самым сложным и тернистым путем, заставляя самих думать и вникать в алгоритмы. В этой же статье, я покажу вам, как сделать все гораздо проще и быстрее.

Готовим ресурсы

Качаем бесплатный пак графики для нашей игры по этой ссылке:

Puzzle game art
Пак графики для нашей будущей игры
Пак графики для нашей будущей игры

Далее в самом движке создаем и загружаем спрайты из данного пакета графики. Прошу обращать внимание на имя спрайта, куда установлен якорь спрайта (чаще всего по центру) и какая маска спрайта для определения столкновений.

Спрайт мяча. Имя spr_ball, якорь в Middle Centre, маска Ellipse (Slow)
Спрайт мяча. Имя spr_ball, якорь в Middle Centre, маска Ellipse (Slow)
Спрайт биты. Имя spr_paddle, якорь в Middle Centre, маска Precise (Slow)
Спрайт биты. Имя spr_paddle, якорь в Middle Centre, маска Precise (Slow)
Спрайт стены. Имя spr_wall, якорь в Top Left, маска Rectangle
Спрайт стены. Имя spr_wall, якорь в Top Left, маска Rectangle
Спрайт блока. Имя spr_block, якорь в Middle Centre, маска Rectangle, кол-во спрайтов 4 (разных цветов).
Спрайт блока. Имя spr_block, якорь в Middle Centre, маска Rectangle, кол-во спрайтов 4 (разных цветов).

Создаем объекты

Спрайты готовы. Переходим к созданию объектов и программированию их логики. Возле каждой строчки кода оставил комментарии (зеленым цветом).

1) Объект стены

Объект стены. Имя obj_wall. Задаем ему спрайт spr_wall. Объект пустой, никакие события в нем не создаем.
Объект стены. Имя obj_wall. Задаем ему спрайт spr_wall. Объект пустой, никакие события в нем не создаем.

2) Объект блока

Объект блока. Имя obj_block. Задаем ему спрайт spr_block. Создаем событие создания Create со следующим кодом.
Объект блока. Имя obj_block. Задаем ему спрайт spr_block. Создаем событие создания Create со следующим кодом.

3) Объект биты

Объект биты. Имя obj_paddle. Задаем ему спрайт spr_paddle. Создаем ему два события: создания (Create) и шага (Step). На скрине код события Create.
Объект биты. Имя obj_paddle. Задаем ему спрайт spr_paddle. Создаем ему два события: создания (Create) и шага (Step). На скрине код события Create.
А это код события Step биты.
А это код события Step биты.

4) Объект мяча

Объект мяча. Имя obj_ball. Задаем ему спрайт spr_ball. Создаем ему несколько событий. На скрине событие Create.
Объект мяча. Имя obj_ball. Задаем ему спрайт spr_ball. Создаем ему несколько событий. На скрине событие Create.
Код события Step биты
Код события Step биты
Код события столкновения (Collision) с объектом блока obj_block
Код события столкновения (Collision) с объектом блока obj_block
Код события столкновения (Collision) с объектом биты obj_paddle
Код события столкновения (Collision) с объектом биты obj_paddle
Код события столкновения (Collision) с объектом стены obj_wall
Код события столкновения (Collision) с объектом стены obj_wall
Код события вылета мяча из комнаты (Outside Room)
Код события вылета мяча из комнаты (Outside Room)

Создаем комнаты

Создаем две комнаты. В одной (пустой) у нас просто будут задаваться все необходимые начальные параметры и сразу переход в следующую комнату. Во второй комнате у нас уже будет непосредственно сам уровень.

Итак поехали.

1) Первая комната.

Я назвал ее Begin_Room.

Скриншот пустой первой комнаты
Скриншот пустой первой комнаты

В ней заходим в событие создания комнаты Creation Code и пишем следующий код:

Скриншот кода в первой комнате
Скриншот кода в первой комнате

Не забудьте потом в дереве ресурсов (в Room Order) при необходимости переместить эту комнату первой по порядку, чтобы рядом с ней появилась иконка домика, означающая, что игра будет стартовать с этой комнаты:

Скриншот с порядком комнат
Скриншот с порядком комнат

2) Вторая комната.

Я назвал ее Level1.

Скриншот комнаты с уровнем
Скриншот комнаты с уровнем

Создаем в этой комнате несколько слоев. Я назвал их:

Wall_layer (на нем расставил серые объекты стены по периметру)

Blocks_layer (на этом слое расположил блоки, которые необходимо разбивать мячом)

Ball_layer (на этом слое в самой комнате ничего не ставим, но имя данного слоя у нас используется в коде - в событии создания биты мы кодом создаем мячик на этом слое. Если вы не создадите его в комнате, то при запуске у вас выдаст ошибку при срабатывании кода создания биты, где упоминается этот слой)

Paddle_layer (на этом слое я поставил биту внизу уровня по центру)

Запускаем!

Игра готова! Можете запустить и потестировать.

Не забывайте, что движение биты влево-вправо назначено на стрелочки, а запуск мяча с биты на пробел.

У нас всего 5 жизней. После этого уровень начнется заново. Единственное мы нигде не показываем жизни на экране. А так же у нас нет условий для выигрыша уровня и перехода на следующий. Хотя все это (или частично) вы уже можете сделать сами, на основе моих прошлых статей.

Скриншот нашей созданной игры
Скриншот нашей созданной игры

Спасибо, что дочитали статью до конца. Ставьте лайки, делитесь ей с другими, задавайте вопросы, оставляйте комментарии, пожелания и т.д. В скором времени я напишу вторую часть статьи, в которой мы немного доработаем с вами данный прототип. Так же покажу, как небольшие мелочи помогут сделать игру интереснее. А я очень люблю уделять внимание подобным мелочам в своих играх.