Как сделать игру с видом сверху в game maker

Добавил пользователь Евгений Кузнецов
Обновлено: 04.09.2024

Game Maker - вещь, с помощью этой проги можно создать неплохую аркаду. У этого движка графику можно задать самому, т.е. как спрайты нарисуешь, такая и графика будет. У этого движка есть отличительные способности, о которых нельзя не упомянуть:
1) В общем, там для создания игрушки не нужно писать ни одной строчки (только если игра сложная, то там все-таки нужно, но для простых игр не надо).
2) Как уже говорил, какой спрайт нарисуешь - такова будет и графика (ну вообще графика зависит не только от спрайта, но и от разрешения).
3) Полностью интуитивный интерфейс.
Мы будем создавать аркадную игру и на ее примере вы сможете создавать и другие интересные игры.

2. Вот основные определения:

1. Sprites - спайты - изображения, которыми мы будем оперировать.
2. Sounds - звуки, которые можно назначать.
3. Backgrounds - изображения, используемые как фон.
4. Paths - путь, линия вдоль которой движется объект.
5. Scripts - скрипты или сценарии работы программы.
6. Objects - объекты.
7. Rooms - комнаты, где будут происходить действия.

Назначаем спрайты:
Нажмем кнопку Add Sprite и назначим спрайт Fighter1 (находится в папке Space) назовем его "корабль1". Назначим Fighter2 нажмем Edit Sprite далее Transform \ Rotate 180 (Rotate: можно назначить направление спрайта, а щелкнув еще раз на изображение мы можем его изменить) назовем корабль2. Ну и dot (папка Pacman) назовем его выстрел и explode2 (Varius) назовем взрыв.

Назначаем объект Add Object - спрайт "корабль1" и называем его корабль1.
Назначаем объект Add Object - спрайт "корабль2" и называем его корабль2.
Назначаем объект Add Object - спрайт "Выстрел" и называем его выстрел.
Назначаем объект Add Object - спрайт "взрыв" и называем его взрыв.

Аналогично назначаем звуки, их нам надо 2 штуки. 1 для взрыва, 2 для выстрела.

Далее назначаем фон он может быть любым.

Теперь переходим к объекту "корабль1" далее делаем по пунктам:
Наша задача заключается в том, чтобы объект двигался при нажатии кнопки и стоял при отжатии.

1) Add Event \ Key press (и назначаем кнопки лево, право, пробел); (т.е. при нажатии выполняются действия).

2) В лево переводим действие Start moving in a direction и нажимаем на стрелку влево (ниже находится скорость по умолчанию - 8) .

4) Add Event \Key release (лево, право); (т.е. при отжатии клавиши) нажимаем Start moving in a direction и ставим стрелку посередине ( т.е. при отжатии останавливается).

5) Переходим к выстрелу Add Event \ Create.

6) Далее в вкладке и ставим звук (т.е. Misk \ Play a sound ) выстрела.

7) Start moving in a direction и нажимаем направление движения пули т.е. вверх и со скоростью 16 и галочку Relative.

8) Вернемся к "корабль1" и при нажатие пробела (т.е. press пробел) ставим object \ Create:(лампочка) ставим объект выстрел и галочку Relative. (т.е. при нажатии пробела выстрел).

9) Далее создаем комнату в вкладке Backgrounds ставим свое изображение.

10) Там же (т.е. в этой комнате в вкладке Object) кликаем объект "корабль1" и ставим его снизу.

11) Нажимаем F5 и балдеем он летает и стреляет с характерным звуком.


рис.1 Вот что должно получится!

12) Теперь нужно сделать противников. Это будет "корабль2" этот противник будет только летать строго вперед и ваша задача его поразить или увернуться. Действовать будем так сначала он или они появляться сверху, при выходе за пределы комнаты появится сверху (0 по вертикали и любой по горизонтали) если встречается с пулей -то он возникает в новой позиции как уже писал и нужно его заменить на объект "взрыв" который при окончании анимации удалит этот объект. А и не забыть удалить выстрел и зачислить на счет одно очко. И при столкновение с нашим героем вывести счет и начать игру заново. Фу: кажется все. Задача не особо простая, но реальная, главное - логика! Если все логично - то игра будет работать как надо.

13) Теперь переходим к "корабль2" добавляем создание объекта (т.е. Add Event \ Create \ Set the vertical speed и ставим значение 4 (т.е. вниз со скоростью 4 если -4 то будет лететь в другую сторону).

14) Далее Add Event \ collision и выбираем объект "корабль2" (т.е. событие столкновения "корабль1" c "корабль2" если помните то при этом мы перезапускаем и выводим счет. Т.е. в вкладке Misc \ Show the highscore table и Restart the game.

15) Add Event\ collision "выстрел" Set the score в той-же вкладке и набираем +1. Там-же Play a sound и звук взрыва. В вкладке Move \ Jumb to a given position и пишем в x (random(1+640)) .

16) Add Event \ other \ Outside room (т.е. при покидании границ комнаты) следующее действие вкладке Move \ Jumb to a given position и пишем в x (random(1+640)) .

17) Теперь осталось сделать взрыв. Он выглядит так при столкновении объекта с выстрелом мы должны заменить выстрел на взрыв и когда анимация кончится просто его удалить. Сделаем это так в выстреле Add Event \ collision и выбираем объект "корабль2" и далее в вкладке Object \ Change the instanse и выбираем объект "взрыв" (мы меняем "выстрел" на "взрыв"). И удаляем deatroy the instanse.

18) Осталось лишь расположить объекты. И получится примерно так.


Вот принципе и все. Далее я лишь объясню как ее улучшить.
3.
Все! Игры кончились! Приступаем, теперь мы будем улучшать. Первая цель - строка состояния.
1) Add Script и набираем текст:

<
brush_color = c_black;
pen_color = c_black;
draw_rectangle( argument0,argument1,argument0 + 200, argument1 + 25);
brush_color = make_color(200 - global.health*2,global.health*2,0);
draw_rectangle( argument0,argument1,argument0 + global.health*2, argument1 + 25);
font_color = c_white;
font_size = 12;
font_name = 'Courier';
font_style = fs_bold;
font_align = fa_center;
draw_text(argument0 + 100,argument1 + 5,'Здоровье:' + string(global.health) + '%');
>

Набрали? Ok.
2) Создаем объект без спрайта или с ним не важно.
Теперь Add Event \ Create в вкладке Code \ Execute a piece of code пишем global.health = 100; Далее Add Event \ Draw \ Code \ Execute script и назначаем наш скрипт.
3) Переходим к нашему главному герою: Add Event \ collision "корабль2" \ Code \ Execute a piece of code пишем: if global.health = 0 room_restart() global.health-=25; (25 значит при столкновение с объектом "корабль2" -25%). Во вкладке Object \ Create an instanse of an object ставим "взрыв" и галочку relative.(теперь при столкновение с противником появлялся взрыв и -25% жизни, а если кончилось здоровье то игра перезапускается).
4) Должно получиться что-то вроде этого:



На вашем месте я бы удалил из спрайта "взрыв" все кадры до 7. Так красивей ;)!
Красота, но это еще не все!
5) Наши противники не стреляют! Исправим. Берем противника, Add Event \ Step и в question \ if a dice lands on one значение 40. Теперь делаем новый объект "выстрел2" там ставим все тоже что и в выстреле только направление в другую сторону. Вернемся к противнику в Step \ object \ Create an instanse of an object там выстрел2.
6) Жмем F5! Все должно пройти так он летит и стреляет по тебе но здоровье не отнимается! Будем исправлять ситуацию. При столкновении с выстрелом2 пишем все тоже что и при столкновении с "корабль2" только -5% , хотя кому как нравится.
7) Надо решить проблему управления! Но это для кого как можно мышью, а можно клавиатурой. Я покажу как мышью. Ну для начала удалим предыдущее управление. Теперь Add Event \ Step \ jumb to diven position пишем в x mouse_x , а в y -460. Все теперь в опциях игры отставляем галочку в показе курсора. Там-же можно поставить фоновую картинку и картинку при загрузке, и ярлык для игры. Нажимаем file \ create stand-alone и конвертируем игру. Теперь загружаем!


Конечно можно совершенствовать ее просто бесконечно, в следующей части будут основы как создать простенькое RPG, а пока до новых встреч!

Игры… Это одни из самых популярных программ, ради которых многие пользователи и покупают компьютеры и ноутбуки. Наверное, ПК не стали бы так популярны, если бы на них не было игр.

И если раньше для того, чтобы создать какую-нибудь игру необходимо было обладать специальными знаниями в области программирования, рисования моделей и пр. — то сейчас достаточно изучить какой-нибудь редактор. Многие редакторы, кстати, достаточно просты и разобраться в них сможет даже начинающий пользователь.

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

1. Программы для создания 2D игр

Под 2D — понимают двумерные игры. Например: тетрис, кот-рыболов, пинбол, разные карточные игры и пр.

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

1) Game Maker

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Это один из самых простых редакторов для создания небольших игр. Редактор выполнен достаточно качественно: в нем легко начать работать (все интуитивно понятно), вместе с тем большие возможности для редактирования объектов, комнат и пр.

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

Нельзя не отметить большое разнообразие эффектов и действий, которые можно задавать различным объектам (будущим персонажам) в этом редакторе: количество просто поражает — более нескольких сотен!

2) Construct 2

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Современный игровой конструктор (в прямом смысле этого слова), позволяющий даже начинающим пользователям ПК делать современные игры. Причем, хочу подчеркнуть, при помощи этой программы игры можно изготавливать для разных платформ: IOS, Android, Linux, Windows 7/8, Mac Desktop, Web (HTML 5) и пр.

Этот конструктор очень похож на Game Maker — здесь так же нужно добавлять объекты, затем прописать им поведение (правила) и создать различные события. Редактор построен по принципу WYSIWYG — т.е. вы сразу же будете видеть результат по мере создания игры.

Программа платная, хотя для начала будет предостаточно и бесплатной версии. Отличие различных версий описаны на сайте разработчика.

2. Программы для создания 3D игр

(3D — трехмерные игры)

1) 3D RAD

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Один из самых дешевых конструкторов в формате 3D (многим пользователям, кстати, хватит и бесплатной версии, у которой ограничение на обновление сроком на 3 месяца).

3D RAD наиболее легкий конструктор в освоении, программировать здесь практически не нужно, разве что за исключением прописывания координат объектов при различных взаимодействиях.

Самый популярный формат игр, который создают с помощью этого движка — это гонки. Кстати, скриншоты выше это лишний раз подтверждают.

2) Unity 3D

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

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

В пакет Unity 3D входит движок, который полностью позволяет задействовать возможности DirectX и OpenGL. Так же в арсенале программы возможность работы с 3D моделями, работа с шейдерами, тенями, музыкой и звуками, огромная библиотека скриптов под стандартные задачи.

3) NeoAxis Game Engine SDK

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Бесплатная среда разработки практически любых игр в формате 3D! При помощи данного комплекса можно делать и гонки, и стрелялки, и аркады с приключениями…

Для движка Game Engine SDK в сети имеется немало дополнений и расширений под множество задач: например, физика автомобиля или самолета. При помощи расширяемых библиотек вам даже не понадобиться серьезное знание языков программирования!

Благодаря специальному плееру, встроенному в движок, игры созданные в нем могут воспроизводиться во множестве популярных браузерах: Google Chrome, FireFox, Internet Explorer, Opera и Safari.

Game Engine SDK распространяется как бесплатный движок для некоммерческих разработок.

3. Как создать 2D игру в редакторе Game Maker — пошагово

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Game Maker — очень популярный редактор для создания не сложных 2D игр (хотя разработчики уверяют, что игры в нем можно создавать практически любой сложности).

Начав с простых действий, добавляя попутно новые и новые возможности, кто знает, может ваша игра и станет со временем настоящим хитом! Моя же цель в этой статье, лишь показать с чего начать, ведь начало — это самое трудное для большинства…

Заготовки для создания игры

Прежде чем приступить непосредственно к созданию любой игры, вам нужно сделать следующее:

1. Придумать персонажа своей игры, что он будет делать, где находиться, как игрок будет им управлять и пр. детали.

2. Создать картинки своего персонажа, объекты с которыми он будет взаимодействовать. Например, если у вас будет медведь собирать яблоки — значит вам минимум нужно две картинки: медведя и самих яблок. Так же возможно вам понадобиться фон: большая картинка на которой и будет происходить действие.

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

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

Пошаговое создание мини-игры

1) Первое что необходимо сделать — это добавить спрайты наших персонажей. Для этого на панели управления программы есть специальная кнопка в виде рожицы

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

. Нажимаем ее для добавления спрайта.

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

2) В появившемся окне нужно нажать кнопку загрузки спрайта, затем указать его размеры (если требуется).

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

3) Таким образом нужно добавить все свой спрайты в проект. В моем случае получилось 5 спрайтов: Соник и разноцветные яблоки: зеленый кружок, красный, оранжевый и серый.

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

4) Далее в проект нужно добавить объекты. Объект — это важная деталь в любой игре. В Game Maker под объектом понимается игровая единица: например, Соник, который будет перемещаться на экране в зависимости от клавиш, которые вы будете нажимать.

Вообще, объекты — достаточно сложная тема и объяснить ее в теории в принципе невозможно. По мере работы с редактором, вы более детально ознакомитесь с огромной кучей возможностей объектов, которые предлагает вам Game Maker.

5) Далее для добавленного объекта выбирается спрайт (см. скриншот ниже, слева + сверху). В моем случае — персонаж Соник.

Затем для объекта прописываются события: их может быть десятки, каждое событие — это поведение вашего объекта, его перемещение, звуки связанные с ним, управление, очки, и пр. игровые характеристики.

Чтобы добавить событие, щелкните кнопку с одноименным названием

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

— затем справа в столбике выберите действие для события. Например, перемещение по горизонтали и вертикали, при нажатии клавиш стрелок

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Кстати, событий может быть очень много: здесь Game Maker не мелочиться, программа предложит вам много всего:

— задание перемещение персонажа: скорость перемещения, прыжки, сила прыжка и пр.;

— накладывание произведения музыки при различных действиях;

— появление и удаление персонажа (объекта) и т.д.

Важно! Для каждого объекта в игре нужно прописать свои события. Чем больше событий для каждого объекта вы пропишете — тем разностороннее и с большими возможностями получиться игра. В принципе, даже не зная что конкретно сделает то или иное событие, можно тренироваться добавляя их и смотреть как поведет себя игра после этого. В общем-то, огромное поле для экспериментов!

6) Последнее и одно из важных действий — создание комнаты. Комната — это своего рода этап игры, уровень, на котором и будут взаимодействовать ваши объекты. Чтобы создать такую комнату, нажмите кнопку со следующим значком:

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

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

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

7) Чтобы запустить полученную игру — нажмите кнопку F5 или в меню: Выполнить/обычный запуск.

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Game Maker откроет перед вами окно с игрой. Фактически, вы можете смотреть, что у вас получилось, экспериментировать, играть. В моем случае Соник может перемещаться в зависимости от нажатия клавиш на клавиатуре. Своего рода мини-игра (эх, а были времена, когда белая точка, бегающая по черному экрану, вызывала дикое удивление и интерес у народа…).

Программы для создания игр 2D/3D. Как создать простую игру (пример)?

Да, конечно, полученная игра примитивная и очень проста, зато пример ее создания очень показателен. Далее экспериментируя и работая с объектами, спрайтами, звуками, фонами и комнатами — можно создать очень даже не плохую 2D игру. Чтобы создавать подобные игры лет 10-15 назад необходимо было обладать специальными знаниями, сейчас — достаточно уметь вращать мышку. Прогресс!

В Game Maker каждый объект может иметь набор событий, которые запускают выполнение определённых действий. Всё. Вся "логика" игры строится именно по этому принципу. Если происходит определённое событие - выполняются созданные для него действия. Просто, не так ли? Эти события могут быть как персональными, так и глобальными, но в GM они никак не разделяются на типы, оно и к лучшему. Вы можете создавать для разных объектов разные события и определять какие угодно действия. Именно таким образом и будет работать вся ваша игра.
События создаются и редактируются в окне объекта, в поле-списке "Events", с помощью трёх кнопок "Add event" (Создать событие), "Destroy" (Удалить событие), "Change" (Сменить событие с сохранением списка действий), или в контекстном меню поля с аналогичными командами. В контекстном меню добавляется дополнительная команда "Duplicate event", которое лишь копирует список действий, а событие вам всё равно придётся выбрать заново.

События и стандартные действия в Game Maker — Game Maker — DevTribe: инди-игры, разработка, сообщество

Итак, создаём событие, кликая по волшебной кнопочке. Открывается крохотное, в прямом смысле этого слова, окошко со всеми событиями GM. Некоторые события при нажатии на свою кнопку открывают контекстное окно, в котором вам предлагается уточнить событие, выбрать его определённый вид.

События и стандартные действия в Game Maker — Game Maker — DevTribe: инди-игры, разработка, сообщество

Все события располагаются в списке в определённом порядке, а именно - в порядке срабатывания. Т.е. первыми всегда срабатывают события создания образца, потом - уничтожения, потом - события нажатия кнопок клавиатуры и т.д. и т.д. Это очень важно помнить.

Описание событий или "Я не придумал ничего лучше"

Давайте по порядку, как на картинке, я опишу события и их виды.

  • Create - всё просто, это событие выполняется, когда создаётся экземпляр объекта. Обычно используется, чтобы задавать "начальные" характеристики объекта, всякие там переменные и т.д., но может иметь и более широкое применение. Например, объекты, которые вы расположили в комнате через редактор, тоже создаются, когда комната запускается. Можно использовать такие объекты для объявления глобальных переменных и прочего и прочего. Однако, для таких как я, были созданы такие события, как Game Start и Room start, о которых речь ниже.
  • Destroy - ещё проще, это событие выполняется, когда экземпляр объекта удаляют. Можно применить, например, чтобы создать кровавое пятно на месте врага.
  • Alarm - а вот это уже интересней. Это событие таймера. Каждый экземпляр объекта может заиметь до 12-ти таймеров, каждый их них будет подписан в списке событий как Alarm0, Alarm1, Alarm2 и т.д. С помощью определённого действия или кода, можно запустить нужный таймер и по его истечению, выполнятся нужные действия я иногда использовал алярмы чтобы персонажи моргали глазами :3 , диапазон применения - очень широк, иногда даже 12-ти таймеров не хватает.
  • Step - событие "шага", архиважное событие, находит применение практически всегда. Вам нужно перемещать объект за курсором? Вам нужно событие "шага". Нужно постоянно перемещать образцы по координатам? Вам нужно событие "шага". Нужно отследить монстров на наличие бафов? Вам нужно событие "шага". Это событие выполняется "постоянно", то есть, каждый игровой "шаг". Как его определить? В окне комнаты есть такое поле, как "Room speed" - это скорость комнаты, и по сути, скорость игры, т.е. FPS - количество кадров в секунду. Так что, если у вас скорость текущей комнаты 60 fps или шагов - событие "шага" будет срабатывать 60 раз в секунду. Вуаля. Рассмотрим виды этого события:
  • Step - самое распространённое событие, срабатывает как раз после событий создания и уничтожения, но перед всеми остальными. Очень удобно отлавливать этим событием кнопки клавиатуры или мышки.
  • Begin step - это событие шага срабатывает перед всеми остальными событиями, хотя в списке оно и идёт где-то посредине.
  • End step - это событие шага срабатывает после всех остальных событий, но перед событием рисования.
  • Collision - событие "столкновения". Срабатывает, когда спрайт или маска объекта пересекаются со спрайтом другого объекта. В контекстном меню это событие предлагает выбрать с каким объектом нужно чтобы текущий объект сталкивался. Потому этих событий может быть много - для каждого из предопределённых объектов. Самое распространённое применение - столкновение пули со стеной, конечно же.
  • Keyboard - событие нажатия на кнопку клавиатуры. Но не обычное. Это событие срабатывает каждый шаг, пока кнопка нажата. Предлагает на выбор множество различных кнопок, от алфавитных до функциональных и прочих Backspace'ов. Потому это событие может быть у объекта не одно - зависит от количества кнопок, нажатия на которые вам нужно отлавливать. Стоит отметить лишь событие Keyboard - No key и Keyboard - Any key. Первое срабатывает постоянно, каждый игровой шаг, пока не нажата ни одна кнопка. Второе - срабатывает постоянно, пока нажата любая кнопка на клавиатуре. Наркомания, не так ли? Эти два вида событий есть и у других событий клавиатуры, о которых речь ниже.
  • Mouse - это все события мышки. Давайте рассмотрим их виды:

События и стандартные действия в Game Maker — Game Maker — DevTribe: инди-игры, разработка, сообщество

  • Left/Right/Middle button - события мышки, которые срабатывают каждый шаг, пока курсор наведён на спрайт объекта и при этом зажата левая/правая кнопка мышки или колёсико. Да-да, колёсико мышки бывает кликабельное.
  • No button - аналогично предыдущим, только событие срабатывает постоянно, пока не нажата ни одна из кнопок мышки (не стоит забывать, что курсор всё ещё должен быть на спрайте, поскольку это персональные события).
  • Left/Right/Middle pressed/released - эти события отличаются от предыдущих тем, что срабатывают лишь один раз, когда кнопка мышки нажата (pressed)/отпущена (released), а курсор находится на спрайте объекта. Когда событие сработало один раз, оно не будет срабатывать, пока пользователь не нажмёт/отпустит нужную кнопку ещё раз.
  • Mouse enter/leave - событие срабатывает, когда пользователь наводит/уводит курсор со спрайта или маски объекта. Очень удобное событие чтобы делать, например, всплывающие описания для предметов.
  • Mouse wheel up/down - эти события срабатывают, когда пользователь прокручивает колёсико мышки вверх/вниз. Глобальное событие.
  • Global mouse - а вот это уже очень важные события, которые отлавливают события шага/нажатия/отпускания кнопок мышки на общем уровне, т.е. событие глобальное, и потому не нужно, чтобы курсор находится на спрайте объекта. Находят применение чаще всех остальных.
  • Joustick 1/2 - честно говоря, никогда ими не пользовался. Это события для буржуйских джойстиков - когда нажата нужная ось или кнопка.
  • Other - прочие события, которые не вошли в основные категории событий. Вот они:

События и стандартные действия в Game Maker — Game Maker — DevTribe: инди-игры, разработка, сообщество

  • Outside room - событие срабатывает, когда объект покидает границы текущей комнаты. Можно использовать, например, для удаления таких образцов.
  • Intersect boundary - событие срабатывает, когда спрайт объекта пересекает границу комнаты.
  • Outside/Boundary view X - аналогично предыдущим двум событиям, только для одного из семи доступных видов (проще - игровых камер).
  • Game start/end - из названия понятно, что эти два события срабатывают лишь по одному разу за игру - в её начале и в конце. Это глобальные события, обычно используются для инициализации игровых данных. Часто game end используется чтобы закрывать dll'ки и удалять прочие непотребства из памяти, даже не смотря на то, что GM большинство из таких операций делает автоматически.
  • Room start/end - аналогично предыдущим, только для игровых комнат. В GM комнаты - это, по сути, игровые уровни. Так вот, эти события срабатывают, когда текущая комната запускается/заканчивается. Стоит помнить, что событие может срабатывать многократно, поскольку игрок может выходить/возвращаться в комнату. Тем более, нам не важно, какая это комната, поскольку мы сможем написать нужное условие на проверку имени/номера текущей комнаты, перед выполнением нужных действий.
  • No more leaves/health - это события для встроенных в GM систем здоровья и жизней, события срабатывают, когда они заканчиваются (равны нулю). Не понятно, кто ими пользуется, ведь намного проще объявить две-три переменных и сделать свою системку здоровья.
  • Animation end - это событие также для встроенной в GM системы анимаций. По сути - срабатывает когда все кадры у спрайта объекта проигрываются до последнего. Иногда полезно, но снова же, проще написать свою гибкую систему анимаций.
  • End of path - событие срабатывает, когда объект подходит к концу пути. Тоже иногда полезно.
  • Close button - событие срабатывает, когда нажимают кнопку закрытия игры - т.е. на крестик окна игры. Это же событие должно срабатывать и для кнопки Esc, если в настройках игры установлена такая возможность.
  • User defined X - это пользовательские события, их доступно до 16-ти штук. Срабатывания этих событий можно выполнить лишь через код, с помощью специальной функции. Редко, но находят применение.
  • Draw - вот мы и подобрались к самому интересному событию. Это событие "рисования". В своё время никак не мог понять, что оно делает и как им пользоваться, но когда разобрался, приятно удивился. Итак, событие рисования. Когда вы добавляете его объекту, он перестаёт отображать свой стандартный спрайт, не смотря на то, что события столкновения срабатывают как прежде, по сути делает объект невидимым. Это событие срабатывает каждый шаг и предназначено для динамической перерисовки. Вы делаете свою систему анимаций и нужно нарисовать спрайт персонажа? Вам нужно это событие. Вам нужно отобразить текст на экране или создать свой интерфейс? Вам нужно это событие. Вы хотите, чтобы у ваших юнитов были полоски здоровья, а при наведении на них курсора отображались всплывающие подсказки? Для всего этого существует событие рисования. Только сюда можно добавлять действия и функции рисования (обычно начинающиеся с draw_, например, draw_sprite() или draw_text() и т.д.), чтобы они работали. Кстати, поскольку это событие также срабатывает каждый шаг, после всех остальных событий (перерисовка объекта происходит в самом конце каждого шага, уже после того, как его изменили и переместили в новую позицию), поэтому его можно использовать вместо события Step, хотя это и не рекомендуется. В общем, мощнейший инструмент, нужен всегда и везде.
  • Key pressed и следующее за ним Key released - события нажатия/отпускания кнопок клавиатуры. В отличии от указанных выше событий Keyboard, срабатывают не каждый шаг, а лишь один раз, после чего пользователь должен отпустить/нажать кнопку снова. Используются чаще всего, например, для управления персонажем/машинкой/т.д.
  • Trigger - это новый вид событий, который появился в Game Maker 8. При добавлении этого события открывается окошко редактирования триггеров - это новый ресурс GM, хоть их и нельзя добавлять в структуру игры напрямую. В этом окошке вам предлагается в виде кода прописать условие, которое будет проверяться каждый шаг, и событие будет выполняться тогда, когда условие истинно, т.е., по сути, триггеры - это одна из модификаций события Step. Вы можете написать туда не только условие, но и вообще какой угодно код, который будет выполняться каждый шаг. Уже не говоря, что к этому событию можно и нужно добавлять действия в списке действий. Не очень понятно, зачем они нужны, ведь тех же самых результатов можно добиться, используя событие Step. По-видимому, они позиционировались как уникальные пользовательские события. Но раз их добавили - значит, иногда они всё-таки очень нужны.

События и стандартные действия в Game Maker — Game Maker — DevTribe: инди-игры, разработка, сообщество

Итого, вот и все события, которые есть в Game Maker, но их хватит на все случаи жизни. Поскольку каждому объекту можно задать свой набор событий, это заметно упрощает построение логики игры, позволяет реализовать тот или иной момент разными способами. Такая гибкость наравне с объектами - фишка GM, и одновременно - его наказание, поскольку многие моменты приходится реализовать вручную, которые уже встроены по-умолчанию в другие конструкторы. Также, поскольку каждому событию можно задать список действий, нужно рассмотреть стандартные действия, т.е., привычные каждому модмейкеру на варкрафте гуи-иконки, так называемые библиотеки стандартных действий.

Стандартные действия или "Почему я всё ещё это читаю?"

Итак, вы добавили объекту событие. Теперь, в соседнем поле "Actions" вы можете добавлять действия, которые просто перетягиваете из панельки с закладками справа в список. Все действия выполняются в порядке расположения в списке - сверху вниз. Их можно перетягивать вверх-вниз, копипастить и так далее.

События и стандартные действия в Game Maker — Game Maker — DevTribe: инди-игры, разработка, сообщество

При перетягивании большинства действий открывается окно настроек этого действия - там вы задаёте все нужные данные. Редактирование уже добавленного действия выполняется последствием двойного клика на иконку в списке.
По-моему, проще некуда. Хотя, на самом деле, продвинутому пользователю нужно всего одно действие - блок кода "Code" на закладке "Control", нужно рассмотреть все стандартные действия, хоть это и не очень удобный и громоздкий способ задавать логику игры.

Итак, ищем на этом сайте эту программу, и качаем. Желательно купить лицензию за 20$, чтобы иметь больше возможностей. Без лицензии вы не сможете создать полноценную игру (хотя это можно, но проще будет с лицензией). Ознакомьтесь с примерами, которые даны вместе с программой, прочитайте основы программы в файле помощи. Вы наверно спросите – зачем нам эта статья, если всё подробно расписано в официальном файле помощи к игре? Да затем, что в официальном файле помощи описаны только коды и основы их пользования, а я расскажу, как сделать игру определенного жанра.

Вы ознакомились с Game Maker, теперь обязательно выучите хотя бы основы GML. Хотя ниже описанный пример platf_primer.gm6 будет использован преимущественно на кнопках (триггерах).

Для лучшего понимания создания платформера, к статье прилагается пример платформера platf_primer.gm6.

Начнём с создания персонажа. Создаём объект, называем например obj_player. Задаём ему движения в разные стороны. В кнопке Left проверяем столкновение объекта, как это показано в примере, и собственно смещение персонажа по оси x на координаты -4. Тоже самое и Right, только координаты +4. И не забываем об изменении спрайтов. Красным шрифтом на рисунках отмечены мои текстовые объяснения действий.

ПРИМЕЧАНИЕ: ЕСЛИ НА РИСУНКАХ ДЛЯ КООРДИНАТ УКАЗАНЫ ЗНАКИ + ИЛИ – , ЭТО ЗНАЧИТ ЧТО ПРИ СОЗДАНИИ ДЕЙСТВИЯ НУЖНО ПОСТАВИТЬ ГАЛОЧКУ НА RELATIVE.


Теперь персонаж ходит влево и вправо. Пожалуй, самое важное в этих играх это гравитация, и естественно нужны платформы. Создаём ещё один объект, назовём его obj_platform – это будут наши будущие платформы описанные выше. Обязательно ставим галочку Solid (твёрдый) в obj_platform.

Переходим опять к obj_player. В Step ставим условия, показываемые на скриншоте и в примере:


Здесь так же объясняются все кнопки, для чего они, и что они дают. Я просто хочу, чтобы не бездумно взяли мой пример платформера, и просто вставили свои спрайты. Я хочу, чтобы вы поняли, как это всё работает.


Переменная, отображённая слева, поможет вам ограничить скорость падения до 12 максимум. Это поможет вам избавиться от бесконечного увеличения скорости падения.

Теперь важно сделать прыжок персонажа. Давайте замахнёмся сразу на двойной прыжок.


Теперь при создании персонажа переменная будет равняться нулю.

В Событии press (нажать кнопку вверх) создаём такое:


И теперь создаём цепочку действий в касании с объектом obj_platform.


В принципе, основной движок для нашего платформера готов! Но давайте внедрим в него дополнительные функции.

Давайте сделаем лестницы. Лестницы мы сделаем в событиях Step, Up, Down. Создаём новый объект, и назовём его obj_ladder.

В Step создаём следующие действия:


В Up, создаём следующее…


В Down создаём тоже самое, что и в Up, но координату y=-4, надо заменить на y=+4

Создаём объект врага. Назовём obj_enemy. Врагам в событии Create создаём действие, указанное на рисунке, и ставим в нём всё как указанно на скриншоте.


Ещё нам понадобится объект obj_rotate и сделать его невидимым (убрать галочку Visible).

Во враге создаём событие столкновения с obj_rotate и вставляем следующее действие:


При касании к этому объекту, враг будет менять своё направление, и идти в обратную сторону. То есть так мы устанавливаем области патрулирования врагов.

В событии Step создаём следующее:


И в событии столкновения с obj_enemy:


Теперь при касании к врагу, у вас будет отниматься одна жизнь.

Тоже самое, как и врага, делаем штыки, только они не двигаются. При касании к ним ставим:


- то есть -1 здоровья. И при касании к штыкам, будет уменьшаться здоровье.

Когда здоровья будет меньше одного, отнимается одна жизнь.

Вот уже можно сделать неплохой платформер. Идём в комнату и делаем уровень. Расставляем блоки, персонажа, врагов и прочее…

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


Hbor и Vbor нужно менять. Это координаты x и y при достижении которых, камера будет двигаться. Например, для вида размером 640х480 можно поставить Hbor:320; Vbor:240. Тогда камера будет следить чётко по центру за персонажем.

Итак, ищем на этом сайте эту программу, и качаем. Желательно купить лицензию за 20$, чтобы иметь больше возможностей. Без лицензии вы не сможете создать полноценную игру (хотя это можно, но проще будет с лицензией). Ознакомьтесь с примерами, которые даны вместе с программой, прочитайте основы программы в файле помощи. Вы наверно спросите – зачем нам эта статья, если всё подробно расписано в официальном файле помощи к игре? Да затем, что в официальном файле помощи описаны только коды и основы их пользования, а я расскажу, как сделать игру определенного жанра.

Вы ознакомились с Game Maker, теперь обязательно выучите хотя бы основы GML. Хотя ниже описанный пример platf_primer.gm6 будет использован преимущественно на кнопках (триггерах).

Для лучшего понимания создания платформера, к статье прилагается пример платформера platf_primer.gm6.

Начнём с создания персонажа. Создаём объект, называем например obj_player. Задаём ему движения в разные стороны. В кнопке Left проверяем столкновение объекта, как это показано в примере, и собственно смещение персонажа по оси x на координаты -4. Тоже самое и Right, только координаты +4. И не забываем об изменении спрайтов. Красным шрифтом на рисунках отмечены мои текстовые объяснения действий.

ПРИМЕЧАНИЕ: ЕСЛИ НА РИСУНКАХ ДЛЯ КООРДИНАТ УКАЗАНЫ ЗНАКИ + ИЛИ – , ЭТО ЗНАЧИТ ЧТО ПРИ СОЗДАНИИ ДЕЙСТВИЯ НУЖНО ПОСТАВИТЬ ГАЛОЧКУ НА RELATIVE.


Теперь персонаж ходит влево и вправо. Пожалуй, самое важное в этих играх это гравитация, и естественно нужны платформы. Создаём ещё один объект, назовём его obj_platform – это будут наши будущие платформы описанные выше. Обязательно ставим галочку Solid (твёрдый) в obj_platform.

Переходим опять к obj_player. В Step ставим условия, показываемые на скриншоте и в примере:


Здесь так же объясняются все кнопки, для чего они, и что они дают. Я просто хочу, чтобы не бездумно взяли мой пример платформера, и просто вставили свои спрайты. Я хочу, чтобы вы поняли, как это всё работает.


Переменная, отображённая слева, поможет вам ограничить скорость падения до 12 максимум. Это поможет вам избавиться от бесконечного увеличения скорости падения.

Теперь важно сделать прыжок персонажа. Давайте замахнёмся сразу на двойной прыжок.


Теперь при создании персонажа переменная будет равняться нулю.

В Событии press (нажать кнопку вверх) создаём такое:


И теперь создаём цепочку действий в касании с объектом obj_platform.


В принципе, основной движок для нашего платформера готов! Но давайте внедрим в него дополнительные функции.

Давайте сделаем лестницы. Лестницы мы сделаем в событиях Step, Up, Down. Создаём новый объект, и назовём его obj_ladder.

В Step создаём следующие действия:


В Up, создаём следующее…


В Down создаём тоже самое, что и в Up, но координату y=-4, надо заменить на y=+4

Создаём объект врага. Назовём obj_enemy. Врагам в событии Create создаём действие, указанное на рисунке, и ставим в нём всё как указанно на скриншоте.


Ещё нам понадобится объект obj_rotate и сделать его невидимым (убрать галочку Visible).

Во враге создаём событие столкновения с obj_rotate и вставляем следующее действие:


При касании к этому объекту, враг будет менять своё направление, и идти в обратную сторону. То есть так мы устанавливаем области патрулирования врагов.

В событии Step создаём следующее:


И в событии столкновения с obj_enemy:


Теперь при касании к врагу, у вас будет отниматься одна жизнь.

Тоже самое, как и врага, делаем штыки, только они не двигаются. При касании к ним ставим:


- то есть -1 здоровья. И при касании к штыкам, будет уменьшаться здоровье.

Когда здоровья будет меньше одного, отнимается одна жизнь.

Вот уже можно сделать неплохой платформер. Идём в комнату и делаем уровень. Расставляем блоки, персонажа, врагов и прочее…

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


Hbor и Vbor нужно менять. Это координаты x и y при достижении которых, камера будет двигаться. Например, для вида размером 640х480 можно поставить Hbor:320; Vbor:240. Тогда камера будет следить чётко по центру за персонажем.

Автор: Неизвестен Автор - BLACK
Дата добавления - 29 Янв 2010 в 10:13

Читайте также: