код прыжка для game maker
Код прыжка для game maker
Несколько простых рисунков.
Нажав на Shift+Ctrl+S Вы откроете окно свойств вновь созданного спрайта. Свойства спрайта будут рассмотрены позже.
В поле для ввода текста «Name» Вы можете написать имя спрайта (пожалуйста, привыкайте давать осмысленные имена всем ресурсам Вашей игры). Нажмите на кнопку «Edit Sprite», далее, как и показано на следующем рисунке, нажмите на кнопку «Create a new sprite»,
в появившемся меню укажите размеры спрайта как на рисунке ниже.
Нажмите на кнопку «Ок», откроется следующая картина
Щелкните дважды левой кнопкой мыши на «image 0», и Вы окажетесь в редакторе похожем на Paint. Залейте серым цветом всю свободную область рисунка, чтобы получить нечто вроде этого.
Присвоение объекту спрайта
Теперь нам нужны два объекта, создайте их (ссылка на предыдущую статью). Сейчас мы научимся назначать созданные спрайты созданным объектам. Щелкните дважды левой кнопкой мыши на имя объекта, который Вы создали, и в появившемся окне нажмите на кнопку которая выделена курсором мыши (рисунок ниже).
После нажатия откроется меню выбора спрайтов. Выберите спрайт с именем «s_floor»,
поскольку мы редактируем объект «o_floor» т.е. пол, по которому и будем ходить. Другие настройки пока не трогайте. Проделайте тоже самое с объектом «o_player» назначив ему спрайт с именем «s_player». Создайте комнату и поместите в неё созданные объекты ссылка на предыдущую статью) так, как это показано на рисунке (хотя бы примерно).
Несколько простых действий
Ладно, с рутиной покончено. Сейчас он у нас научится прыгать, ходить (пока без анимации), приседать (чтобы мы могли добраться до правой части экрана не прыгая.), двойному прыжку (чтобы допрыгнуть до верхней платформы).
Вы уже знаете как добавить объекту событие и действие на него (ссылка на предыдущую статью). Создайте для объекта «o_player» событие «Create» и на это событие добавьте действие «Execute Code». В открывшемся редакторе кода напишите:
Далее добавьте объекту «o_player» событие «Step» и также назначьте ему действие выполнения кода «Execute Code». Напишите там следующее:
if keyboard_check(vk_left) //Теперь нам нужна «стрелка влево»
<
if place_free(x-5,y-8) x-=5
>
// прыжок
if keyboard_check_pressed(vk_up)
<
if crouch and place_free(x,y-30)
<
crouch=false
image_yscale=1
y-=20
> else
if jump=false
<
jump=true
vspeed=-10
>
>
>
//приседание
if keyboard_check(vk_down)
<
if jump exit
if crouch=false
<
crouch=true
image_yscale=0.40
//y+=5
>
Код прыжка для game maker
Несколько простых рисунков.
Нажав на Shift+Ctrl+S Вы откроете окно свойств вновь созданного спрайта. Свойства спрайта будут рассмотрены позже.
В поле для ввода текста «Name» Вы можете написать имя спрайта (пожалуйста, привыкайте давать осмысленные имена всем ресурсам Вашей игры). Нажмите на кнопку «Edit Sprite», далее, как и показано на следующем рисунке, нажмите на кнопку «Create a new sprite»,
в появившемся меню укажите размеры спрайта как на рисунке ниже.
Нажмите на кнопку «Ок», откроется следующая картина
Щелкните дважды левой кнопкой мыши на «image 0», и Вы окажетесь в редакторе похожем на Paint. Залейте серым цветом всю свободную область рисунка, чтобы получить нечто вроде этого.
Присвоение объекту спрайта
Теперь нам нужны два объекта, создайте их (ссылка на предыдущую статью). Сейчас мы научимся назначать созданные спрайты созданным объектам. Щелкните дважды левой кнопкой мыши на имя объекта, который Вы создали, и в появившемся окне нажмите на кнопку которая выделена курсором мыши (рисунок ниже).
После нажатия откроется меню выбора спрайтов. Выберите спрайт с именем «s_floor»,
поскольку мы редактируем объект «o_floor» т.е. пол, по которому и будем ходить. Другие настройки пока не трогайте. Проделайте тоже самое с объектом «o_player» назначив ему спрайт с именем «s_player». Создайте комнату и поместите в неё созданные объекты ссылка на предыдущую статью) так, как это показано на рисунке (хотя бы примерно).
Несколько простых действий
Ладно, с рутиной покончено. Сейчас он у нас научится прыгать, ходить (пока без анимации), приседать (чтобы мы могли добраться до правой части экрана не прыгая.), двойному прыжку (чтобы допрыгнуть до верхней платформы).
Вы уже знаете как добавить объекту событие и действие на него (ссылка на предыдущую статью). Создайте для объекта «o_player» событие «Create» и на это событие добавьте действие «Execute Code». В открывшемся редакторе кода напишите:
Далее добавьте объекту «o_player» событие «Step» и также назначьте ему действие выполнения кода «Execute Code». Напишите там следующее:
if keyboard_check(vk_left) //Теперь нам нужна «стрелка влево»
<
if place_free(x-5,y-8) x-=5
>
// прыжок
if keyboard_check_pressed(vk_up)
<
if crouch and place_free(x,y-30)
<
crouch=false
image_yscale=1
y-=20
> else
if jump=false
<
jump=true
vspeed=-10
>
>
>
//приседание
if keyboard_check(vk_down)
<
if jump exit
if crouch=false
<
crouch=true
image_yscale=0.40
//y+=5
>
Код прыжка для game maker
В прошлом выпуске №1 мы создавали лабиринт, а этом мы будем делать новую игру чем-то похожую на арконоид, но это не арконоид. В общем вот её состав:
I. В начале уровня на экране появляются шарики и стены
II. При столкновении шариков со стенами шарики меняют цвет в соответ-ствии с стенами
III. При столкновении между собой становятся также другого цвета
IV. Игрок управляет платформой, которая не должна давать мячам улетать с экрана
V. Система очков
VI. Система таймера
Это то, из чего будет состоять игра. Мы в прошлом уроке изучали, как загружать спрайты, добавлять объекты и прочее что их надо называть в соответствии, как менять разрешения экрана и ставить в полноэкранный режим, как задать управление с помощью кнопок как сделать объекты непроходимыми. Поэтому весь этот список повторять не будем, и эти элементы будут выглядеть так: «Соз-даём эффект непроходимости …». Снова объяснения не будет, поэтому если вы не читали первый номер, либо не помните, скачайте его и прочитайте сначала и после переходить к выпуску номер 2.
Манипуляция спрайтами …
Снова включаем Game Maker, видим рисунок
Объяснять где что не буду. Добавляем комнату, устанавливаем разрешение этой комнаты на 800*600. Делаем полноэкранный режим. Загружаем спрайты разноцветных блоков (c:\program files\game_maker8\sprites\ Bouncing Balls\stones). Хватит и четырёх цветных блоков. Загружаем также спрайт маленького железно шарика (на одну папку назад). Теперь все спрайты блоков дублируем, чтоб блоков каждого цвета было по два.
Теперь берём «клоны» блоков и нажимаем кнопку «Редактировать». Жмём Ctrl +Alt+P. Пишем в строке «Border» 17. Жмём ОК. Клацаем Ctrl+Alt+R. Делаем вращение на 90 градусов. Жмём Ок. Снова набираем комбинацию Ctrl +Alt+P, только теперь берём «Border» = 0. И у вас должно получится так (рисунок ниже). Повторяя прошлые манипуляции с каждым клоном блоков. Этим мы перевернём блоки. Потому что нам нужны будут различные.
Закончив с спрайтами переходим к самим объектам.
В первую очередь сделаем платформу, которой игрок будет управлять. Создаём объект, применяем к нему спрайт платформы, и делаем для него управление с клавиатуры лишь для кнопок «Влево» и «Вправо» потому что мы будем им управлять только по оси Х.
Создаем блоки по количеству спрайтов блоков. В моём случае это 8. В объекте Player (так у меня называется платформа) ставим событие столкновения с бло-ками и делаем, чтоб он не мог пройти сквозь эти блоки (Как сделать объекты не проходимыми мы рассматривали в первом уроки).
Делам объект «Boll». В «Player» ставим также столкновение, но теперь для «Boll». В нём добавляем случай «Bounce» чтоб при столкновении с платформой мячики улетали. В самом шаре делаем так …
Изменения цвета при столкновении
Теперь нам надо чтоб когда игрок все-таки не смог отбить мяч он улетает чтоб шар возвращался назад и для красоты поставим эффект зелёных (по желанию можно выбрать любой цвет под свой цвет и вкус) колец в стартовом положении. Для этого в «Boll» также ставим событие «Вне границе комнаты». Там выбераем «Jump to start», и в закладке «Draw», «Creat Effect» там всё ставим как на рисунке.
Звуки
Сначала давайте загрузим звуки. Это также как и спрайты и фоны. Загрузим стандартные звуки Game Maker из директории «C:\Program Files\Game_Maker8\ Sounds». Грузим вот эти звуки:
I. Cancel
II. click_tiny
III. Step
IV. Applause
Чтоб подключить звук в событии переходим на вкладку «Main1» и выберам «Play Sound».
В объекте «Boll» во всех событиях столкновениях поставьте звук «step».
В событии «Вне границе комнаты» ставим звук «Cancel».
В объекте «Player» в событии столкновении с «Boll» включите звук «step».
Внимание! При подключении звука смотрите, чтоб Loop ровнялось false – Don’t Loop. Иначе звук будет проигрываться зациклено!
А теперь перейдём к системе очков. Я сделал так, чтоб когда игрок отбивал платформой мяч, он получал балл. Когда он упускал мяч (он оказывался за пре-делами комнаты) у него снимался также один балл.
Нам понадобится переменная ups. Она должна быть глобальной. Выбираем комнату и переходим к закладки «Установки» и «создать код» (Рисунок ниже). Там вы также увидите переменную (на картинке) под названием timer и что он установлен с значением = 100. Это объясню позже. Она нам понадобится для создания таймера. Пока напишите и её.
Переходим к объекту «Boll» и в событии «Вне границе комнаты» нажимаем на вкладку «Control» и жмём на «Execute code». Там пишем (рисунок ниже)
Теперь переходим к объекту «Player», к событию столкновения с мячом. Там также жмём «Execute Code» и пишем всё точно такое же только «…ups-=1» за-меняем минус на плюс, чтоб очки при соприкосновении платформы и мяча при-бавлялись, а не отбавлялись.
Сейчас у нас ведётся подсчёт очков, но нам надо чтоб он выводился на экран и также нужен таймер.
Таймер и вывод переменных на экран
Для создания таймера нам нужна будет глобальная переменная под названием timer. Если вы её всё ещё не написали, то предлагаю вам вернуться в комнату щелкнуть по закладки «установки» и нажать на кнопку «Создать код» и написать всё также как на рисунке.
Теперь создаём ещё один объект и называем его «write». Не какого спрайта к нему не принимаем. Также не нужно ставить галочку «Твердый» то, как он нужен будет нам только действиями, а не видимостью.
Делаем событие «Room Start» и в нём делаем случай «Alarm0» как на рисунке.
Делаем событие «Alarm0» и в нём добавляем «Alarm0» где «number of steps:» =30. Это сделает, так что все функции, которые будут в «Alarm0» каждую секунду будут выполняться. Это нам подходит для того что б каждую секунду «Alarm0» нам снимал с переменной «timer» по единице. Для этого в «Alarm0» добавляем функцию «Execute code» и там пишем (рисунок ниже)
Теперь мы должны сделать так чтоб когда время игрока заканчивалось, ему показывался его результат в таблице рекордов, проигрывался звук аплодисмен-тов и по введению имени и закрытию окна рекордов комната переигрывалась.
Для этого в «Alarm0» жмём закладку «Control» и там нажимаем «Test Expres-sion» и в появившемся окне пишем следующие (рисунок ещё ниже)))
После добавляем открытие блока, выполнения в том случае если аргумент будет верен, под названием «Start Block». Теперь подключаем звук аплодисментов. Переходим в закладку «Score» жмём «Set Score» а там делаем как на рисунке.
Таким образом, мы присваиваем очкам переменную «ups» куда сохранялись все очки. Конечно, можно было использовать стандартную переменную «score»? но я хотел показать, как делать глобальные переменные…
Теперь мы должны чтоб сделать, чтоб выводилась таблица рекордов. Поэтому нажимаем на кнопку «Show Highscore». В том окне настраивайте всё под своё усмотрение.
После в «Main1» выбираем «Restart game» и завершаем блок действий перейжя снова на закладку «Control» и нажимаем на кнопку «End Block». В общем у вас должно получиться чтото подобное (Рисунок ниже)
А сейчас делаем, чтоб на экране выводилось количество очков и времени, ко-торое осталось (количество времени которое даётся для игры вы можете отре-дактировать, выбрав в «создать код» и заменить строку «timer=100» на любое другое число). Для этого всё в том же объекте «write» создаём событие «Draw».
В нём переходим на закладку «Draw» и клацаем по кнопке «Set Color». Там выберете любой цвет для отображения очков и контура поля, в котором они будут находиться.
После нажимаем «Добавить шрифт» и делаем приблизительно, так как это изображено на рисунке ниже. Естественно вы можете изменять параметры, но шрифт не будет отображать буквы, если вы выберите отображения только чисел. Поэтому выберете то, что отмечено на рисунке.
Жмём Ок. Снова переходим к объекту «Write» и там к событию «Draw» и до-бавляем оператор «Set Font», там выберете тот шрифт, который вам нужен.
Теперь добавляем ячейку, в которой будет находиться строка «Очки: ». Клацаем по «Draw Rectangle» и делаем так (рисунок ниже)
И второй – для строки времени делаем так (рисунок совсем низко)))…
Дальше делаем так как сделано на рисунке.
Это будет вывобить переменную «Timer» в ячейку справа. И делаем так …
Курсор
Не такая уж большая тема чтоб её делать отдельно но всеже вот…
Нам надо чтоб при запуске курсор мыши скравался так как он нам мешает. Для этого перейдя в «Boll» в события «Room start» переходим на закладку «Extra», там клацаем по значку с курсорам и остовляем всё как есть.
Всё.
Постройка уровня под наши правила
Теперь переходим к постройки уровня. Под наши запрограмированые объекты он должен выглядить примерно так… (рисунок ну совсем низко)
Как сделать в game maker прыжок
Econ Dude
Страницы
понедельник, 13 марта 2017 г.
Движение персонажа и врагов в GameMaker
Приветствую вас в блоге Econ Dude.
Не так давно я принял решение сделать серию статей и видео на своём канале в ютуб про создание игр в GameMaker.
Если вы работайте в какой-то другой среде программирования и используйте не гейм мейкер (GameMaker), а например unity, то тут вы тоже сможете найти интересную информацию для себя так-как вне зависимости от среды и движка, принципы везде довольно похожи. Движение это самое просто и самое первое, что люди изучают.
В таких программах как game maker (studio, 2 или любом другом) всё это сделать довольно просто и в рамках простейшего объектно ориентированного программирования вы можете сделать движение за пару секунд. Но для начала давайте поймём пару вещей: кто будет двигаться, зачем как и куда?
Например, обычно нам нужно что-бы враги двигались на героя. да? А герой, часто, двигается при нажатии на стрелки на клавиатуре (или кнопки q, a, s, d), а может быть вам нужно что-бы какой-то кролик рядом просто бегал от дерева к дереву? Начинать думать с таких простых вещей важно так-как потом уже в коде это вам сильно поможет понять что же вы такое пишите и почему писать нужно именно так, а не иначе.
Функции движения в GameMaker
Как сделать движение в игре? Если вы только начинаете освоение game maker, то вы можете для ваших первых игр всё сделать вообще без какого либо кода. Гейм Мейкер был придуман как раз для новичков и он позволяет делать простые игры и осваивать всё даже без программирования.
Дальше, конечно, код вам понадобиться, но начать можно и вот с такого:
Простейший пример, как сделать движение героя при нажатии на стрелку вверх?
В коде это всё можно сделать вот так:
Как видите и в коде всё очень просто, просто мы меняем координату объекта (героя) на 1 по оси Y. Пишем: y-=1
Какие бывают даже тут ошибки?
Почему минус равно (y-=1), а равно минус (y=-1)?
Есть еще один момент, который смущает новичков.
Иногда координаты в гейм мейкер могут быть немного непонятными. Возьмём две точки что-бы было понятнее.
Дело в том, что координаты комнат в гейм мейкер строятся от точки 0, 0 (X, Y), которая находится в левом верхнем углу. Соответственно движение вверх будет движение ближе к нулевой точке.
Давайте построим две точки с координатами чтобы лучше это понять.
Точка сверху, х = 400 (пол экрана при разрешении 800 на 600), у = 25.
Точна снизу, x = 400 (на той-же линии по вертикали), у = 125 (По горизонтали)
Теперь представьте что наш герой, или например космический корабль, находится в нижней точке. Какую координату нам нужно изменить чтобы он был выше, Х или У? 400 или 125?
Для движения наверх нам нужно будет вычесть координату У.
Например, если вы напишем У-=100, то объект как раз и переместиться в первую верхнюю точку, хотя это на самом деле даже не совсем движение, а это будет как-бы прыжок или даже телепортация.
Однако если над этим помедитировать, то любое движение это по сути и есть вот такие прыжки, просто очень маленькие и быстро.
Как фильм это куча кадров, так и движение это просто вот такие мелкие шажки/сдвиги по координате во времени. Скорость при этом, как вы знаете из физики, означает какое расстояние за единицу времени пройдёт объект.
Скорость 5 в нашем случае будет означать что за одну единицу времени объект пройдёт 5 клеток (пикселей).
Что такое скорость и время в играх, да и вообще?
А что такое в GameMaker, да и в играх, вообще время? Мы тут с вами совсем уже в философию даже уходим, но это на самом деле интересно.
Общемировой стандарт частоты киносъёмки и проекции составляет 24 кадра в секунду. Это значит что просто картинка меняется 24 раза за секунду и мы видим это как поток, однако на самом деле картинки меняется очень быстро и наш мозг просто не успевает их вычленять. Кстати, когда вы снимаете на камеру старый телевизор, то вы видите черные полосы. Знаете про такое? Вот. Чёрные полосы получаются как раз из-за того, что камера снимает быстрее чем кадры меняются в телевизоре.
Ладно, не заморачивайтесь, но это отступление нам тут было нужно.
И если для вас я пишу слишком просто то уж извините, это основы. В первых статьях я буду всё разжёвывать вот так, иначе люди просто не поймут материал.
У меня на канале есть видео где я просто пишу код и делаю игру, без всяких объяснений. Таких видео много, однако после них остаётся куча вопросов, а я хочу создать именно обучающий материал, который эти вопросы исключит.
Понять про кадровую частоту нам было важно так-как в жизни это всего-лишь скорость смены кадров и всё.
А вот в играх так-же самая вещь (FPS), это и есть время!
Сейчас к вам может прийти божественное откровение, если это случилось, поздравляю.
Представим что наш объект двигается с игровой скоростью 1 (один пиксель за тик), двигается он направо.
Стартует он с координаты 0, 300 (слева, середина экрана 800 на 600).
Сколько пикселей такой объект пройдёт за 3 секунды и на каких координатах он будет?
Вот видите, хрен мы это поймём если мы не знает FPS!
В играх частота смены кадров сейчас порядка 100 и больше, но иногда можно использовать и 30, и 50 и какую угодно. Чем она больше, чем труднее будет для устройства «переваривать-тянуть» игру.
И будет он уже не на координате 0, 300, а на координате 150, 300.
Хотя можно было подумать вначале что скорость 1 это медленно, но это в рамках игры и игровой вселенной (если карта-комната размером 800 на 600) будет очень быстро, если FPS у нас 50.
Это всё, кстати, потом нужно будет учитывать при дизайне уровней, балансе и прочих вещах, но об этом позже.
Хорошо, с этим мы вроде разобрались.
Теперь вы можете сделать объект, например героя, который будет двигаться в 4 стороны с нужной вам скоростью и вы сможете им управлять.
С этого обычно многие начинают делать первые игры. О том как создать объект, как нарисовать спрайт и как запустить игру тут я говорить не буду, это либо слишком легко, либо как-то это упомяну в следующих статьях.
Всё это мы можем назвать свободным управляемым движением, однако, что если вам мало ходьбы в 4 стороны, а хочется более гибкого управления? Ну даже в такой системе на самом деле вы сможете ходить в 8 сторон!
Просто если вы зажмёте кнопки вверх и вправо, то вверх и вправо (Y-, X+) вам персонаж и пойдёт, но иногда нужно больше возможностей.
Движение мышкой и движение к мышке
Иногда нужно сделать движение мышкой или например движение к мышке. Тут могут быть очень разные ситуации, допустим вы делайте стратегию, или же например вам нужно что-бы пули летели туда, куда вы указывайте мышкой.
Синий герой тут двигается именно туда, куда вы тыкайте мышкой. Делалась игра на телефон и до сих пор валяется в google play.
Я выбрал второй вариант.
Это пишется легко, одной функцией:
Синим я выделали скорость ( h_speed ), в данном случае она является локальной переменной, но она может быть и глобальной, а можно там просто написать например цифру 5 и не заморачиваться, на данный момент.
В данном случае ложь (false) в этой функции означает проверку стен ну и она отключена. Пока давайте этого не касаться.
Абсолютно так-же делается куча других вещей, например пуля летит в прицел (в 2D играх) примерно так-же, если прицел там-же где и мышка или просто картинка мышки (спрайт) это и есть прицел.
Так сделано например в моей игре TDS, для которой я кстати даже исходник выкладывал.
Основные функции движения в GameMaker
Теперь к чуть более сложному, если вы еще не устали.
В справке game maker, которой я всем рекомендую пользоваться как можно чаще, есть все функции движения:
Так-же бывает что я использую:
Иногда нужны и такие вещи.
А вот «speed» нужно довольно часто, так-как с помощью этой штуки можно не просто указывать скорость, её так-же можно еще и проверять.
Если скорость больше 0 (объект не стоит на месте, двигается) тогда. (Делать что-то). Так-же почти во всех функциях движения вы можете просто писать «speed», а при создании этих объектов задавать эту самую скорость в create. Это будет просто локальная переменная и так её проще менять для некоторых ситуаций.
Так-же есть более сложные функции (Motion Planning) и планированием движения и избегания объектов (например стен), но о них мы поговорим в следующей статье. GameMaker позволяет вам планировать движение и даже прописывать не самый плохой искусственный интеллект. Враги могут уворачиваться от пуль, прятаться за укрытиями, отступать и многое другое, но про всё это мы будет говорить далее.
Какие-то азы поведения врагов (слух, зрение) вы можете прочитать в моей статье:
Функция движения к точке в GameMaker
Основная функция движения в gamemaker, которой лично я пользуюсь довольно часто, это:
Она простая и понятная, в ней есть 3 составляющих.
Как двигаться не к точке, а к конкретному объекту?
Например, как зомби будет бежать на героя? Вспомните как делается движение к мышке, тут всё почти так-же.
Тогда у нас получается:
move_towards_point( obj_hero.x, obj_hero.y, 5 );
Как следствие, преследовать героя и бегать за ним зомби не будет.
Писать эту функцию в create бывает полезно когда движения объекта точно не будет меняться дальше, например для пуль. Пули могут мазать и они летят туда, куда вы целились. Конечно, фантазёры могут придумывать самонаводящиеся пули или например какие-то ракеты с тепловым наведенем, но что-бы объект следовал за целью всегда, эту функцию нужно писать е в create, а в step.
По хорошему нужно бы мне написать про все эти действия в game maker (draw, create, step), но они довольно просты и скорее всего я не буду покрывать этот момент.
Вот так зомби в моей игре бегают за героем. Точнее не совсем так, у меня там есть еще условия (видимость, слух, агрессивность, избегание препятствий и т.д.), но и так они будут за героем бегать.
На этом на сегодня всё.
Так-как это пробный формат постов, буду рад если вы его поддержите чем можете что-бы я понял что людям такие уроки по GM интересны и полезны. Д
ля этого дайте ссылку на эту статью друзьям, поставьте тут лайк (под статьёй) ну и ставьте лайки и делайте репосты когда я такие статьи публикую в своём паблике. Я вам буду очень признателен (если вы туда еще не вступили, вступайте).
Я так и не успел покрыть смежные темы:
Может быть позже про них тоже напишу.
Ну и сделал по этому теме видео на моём канале (14 мин).
Как сделать в game maker прыжок
Создание платформера в GM
Скачать GameMaker
GM-исходник платформера
ВСТУПЛЕНИЕ
Все мы, наверно, когда-то играли в какие либо игры и к нам рано или поздно приходило желание сделать свою игру. Возможно, у вас возникло желание создать небольшую игру, но вы не знаете не единого языка программирования? Конечно, если у вас есть Интернет, вы можете найти уроки по программированию C++, Delphi и других языков. Вы можете долго учить их и потом делать небольшие игры. Но у меня возникает вопрос: «ЗАЧЕМ?». Если умные люди создали массу конструкторов и готовых движков для ваших игр. Кстати, на сайте http://gcup.ru вы сможете найти буквально все конструкторы, что изобрели люди. Давайте остановимся на известном всем Game Maker by Mark Overmarse.
Итак, ищем на этом сайте эту программу, и качаем. Желательно купить лицензию за 20$, чтобы иметь больше возможностей. Без лицензии вы не сможете создать полноценную игру (хотя это можно, но проще будет с лицензией). Ознакомьтесь с примерами, которые даны вместе с программой, прочитайте основы программы в файле помощи. Вы наверно спросите – зачем нам эта статья, если всё подробно расписано в официальном файле помощи к игре? Да затем, что в официальном файле помощи описаны только коды и основы их пользования, а я расскажу, как сделать игру определенного жанра.
Вы ознакомились с Game Maker, теперь обязательно выучите хотя бы основы GML. Хотя ниже описанный пример platf_primer.gm6 будет использован преимущественно на кнопках (триггерах).
Платформеры – это, пожалуй, один из самых распространённых жанров в приставках Dendy, Sega и просто в играх на компьютеры. Суть его заключается в том, что вы ходите как бы по «платформам» и после прыжка, гравитация притягивает вас обратно к «платформе». Часто вам придется прыгать с одной «платформы» на другую. Вообще жанр платформеров очень обширный, это могут быть и 2D-шутеры с кровавой резнёй, или просто развесёлые платформеры наподобие Соника или Tiny Toon.
Для лучшего понимания создания платформера, к статье прилагается пример платформера platf_primer.gm6.
Начнём с создания персонажа. Создаём объект, называем например obj_player.
Теперь персонаж ходит влево и вправо. Пожалуй, самое важное в этих играх это гравитация, и естественно нужны платформы. Создаём ещё один объект, назовём его obj_platform – это будут наши будущие платформы описанные выше. Обязательно ставим галочку Solid (твёрдый) в obj_platform.
Переходим опять к obj_player. В Step ставим условия, показываемые на скриншоте и в примере:
Переменная, отображённая слева, поможет вам ограничить скорость падения до 12 максимум. Это поможет вам избавиться от бесконечного увеличения скорости падения.
Теперь важно сделать прыжок персонажа. Давайте замахнёмся сразу на двойной прыжок.
Чтобы сделать прыжок, нам нужно внедрить переменную. Давайте назовём её jump. Она понадобится нам для установления максимального количество толчков. В условии create создаём переменную jump=0. Переменные создаются выделенной красным цветом кнопкой. Когда вы её перенесёте в «Actions», появится меню. Указывайте там всё, как на скриншоте.
Теперь при создании персонажа переменная будет равняться нулю.
В Событии press (нажать кнопку вверх) создаём такое:
В принципе, основной движок для нашего платформера готов! Но давайте внедрим в него дополнительные функции.
Давайте сделаем лестницы. Лестницы мы сделаем в событиях Step, Up, Down. Создаём новый объект, и назовём его obj_ladder.
В Step создаём следующие действия:
Down создаём тоже самое, что и в Up, но координату y=-4, надо заменить на y=+4
Создаём объект врага. Назовём obj_enemy. Врагам в событии Create создаём действие, указанное на рисунке, и ставим в нём всё как указанно на скриншоте.
Ещё нам понадобится объект obj_rotate и сделать его невидимым (убрать галочку Visible).
Во враге создаём событие столкновения с obj_rotate и вставляем следующее действие:
При касании к этому объекту, враг будет менять своё направление, и идти в обратную сторону. То есть так мы устанавливаем области патрулирования врагов.
Чтобы враги могли «убивать» персонажа, нужно сделать систему жизней и здоровья. В Game Maker такая система уже встроена.
В событии Step создаём следующее:
перь при касании к врагу, у вас будет отниматься одна жизнь.
Тоже самое, как и врага, делаем штыки, только они не двигаются. При касании к ним ставим:
Когда здоровья будет меньше одного, отнимается одна жизнь.
Вот уже можно сделать неплохой платформер. Идём в комнату и делаем уровень. Расставляем блоки, персонажа, врагов и прочее…
Давайте сделаем, чтобы наш платформер был не просто на одной картинке, а был большой уровень, и камера следила за персонажем. Для этого в комнате во вкладке views (виды) делаем следующее:
Hbor и Vbor нужно менять. Это координаты x и y при достижении которых, камера будет двигаться. Например, для вида размером 640х480 можно поставить Hbor:320; Vbor:240. Тогда камера будет следить чётко по центру за персонажем.
Итак, с помощью моей статьи и примера, можно сделать собственную игру жанра платформер. Вам остаётся только сделать уровни! Научившись азам «Game Maker» вы сможете сами понимать, как сделать тот или иной жанр игры. Эта статья рассчитана для новичков. Думаю всё написано доступно.
Создание хорошей платформенной игры задача не простая, но только не с Game Maker. Самыми сложными являются три следующих момента:
* Создание естественного движения для персонажа.
* Создание достаточного разнообразия монстров, фонов и т.д.
* Тщательное проектирование уровней, так чтобы они были забавными для игры и становились все более и более трудными.
Теперь мы должны определить движение персонажа. Проблема состоит в том, что наш герой должен идти по полу, верхней его части. При этом он не должен пересекать пол (не должен проваливаться). Если персонаж прыгает или падает с платформы, он должен правильно приземлиться на следующую платформу. Существует множество различных способов, посредством которых персонаж может ходить, прыгать и падать. Разные игры используют различные модели. Обычно для управления движением мы используем только три клавиши. Клавиша со стрелкой «влево» перемещает наш персонаж налево, клавиша со стрелкой «вправо» должна перемещать его направо и клавиша «вверх» или клавиша «пробел» заставляет его подпрыгивать.
Далее мы нуждаемся в вертикальном движении. Его добиться более сложно. Чтобы позволить персонажу падать, мы можем использовать гравитацию (силу тяжести). Но необходимо также добится чтобы движение прекратилось, когда герой коснется пола. Помимо этого, нужно указать максимальную скорость падения, иначе персонаж будет двигаться слишком быстро. (Это будет выглядеть не очень красиво, а еще может вызывать и некотрые проблемы в выполнении). В результате мы помещаем следующую часть кода в шаговом событии (step event) персонажа. Он устанавливает силу тяжести, основанную на том, находится ли что-то под персонажем (проверяем, является ли позиция 1 пикселя ниже персонажа свободной). Также он ограничивает вертикальную скорость.
12) vspeed = 12;
>
Что-ж, основа для нашей платформенной игры готова. Создай уровень с несколькими полами и стенами, создав их из блоков и чтобы персонаж, находясь внутри уровня мог перемещаться по всему уровню. Обрати внимание, что все, что выполняет наш вышеуказанный код, может быть достигнуто и при использовании действий. В виде действия не доступна только функция move_contact().
Улучшение графики
Базовая платформенная игра, которую мы создали в предыдущем разделе работала, но выглядела она не очень привлекательно.
Имеются две вещи, которые мы хотим изменить: это внешний вид главного героя и внешний вид фоновых изображений. Рассматриваемый вариант можно найти в файле platform_graphics.gmd.
Изображение для персонажа
Чтобы добавить тайлы в твою комнату, сперва понадобится само фоновое изображение с нужными тайлами. Желательно чтобы тайлы содержащиеся в фоновом изображении имели фиксированный размер и были отделены друг от друга небольшой линией (в 1 пиксел) для того чтобы их легче было выбирать из общей кучи. В дистрибутив Game Maker включено достаточное, для первых шагов, количество разнообразных тайлов, но при желании ты всегда можешь найти еще кучу аналогичных или даже лучше, в сети Интернет. Для нашей простенькой платформенной игры мы сделали свой собственный, небольшой набор тайлов. Мы добавили его как прозрачный фоновый ресурс, под названием background_tiles.
Мы будем рисовать все наши замечательные платформы и стены прямо на фоновом изображении. Для этого мы используем опцию для создания плиточного фона (смотри главу 15 документации). Ты можешь использовать второй фон, чтобы придать платформам внешний вид. В этом случае не забудь сделать фон с платформами прозрачным.