Пятница, 26 Апреля 2024, 07:28

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [355]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [145]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [161]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [129]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Типа какой из этих игр вы предпочитаете делать игры?
Всего ответов: 16792
Главная » Статьи » Создание игр

Создание платформера-RPG на game maker
Доброго времени суток пользователи портала GCUP.RU! Сегодня я решил написать урок о создании небольшого платформера RPG. Итак, что должно быть в RPG:
1.Прокачка героя.
2.Магия
3.Монстры

Но начнём с создания каркаса для игры. Создадим объекты o_hero и o_pol. Для создания гравитации в step’е героя напишем:
Code

gravity_direction = 270 //Направление гравитации - вниз.
if place_free(x,y+1) //Если снизу нет столкновений...
gravity = 2 //...гравитация равна двум.  
else //А если столкновения есть...  
gravity = 0 //...гравитация отключается.

Далее припишем код для передвижения героя:
Code

if keyboard_check(ord("A")) //если нажата клавиша A...
{
  image_xscale = -1 //...отразить героя влево...
  if place_free(x-5,y)//...И если нет столкновений...  
  {
  x-=5; image_speed = 0.5 // переместиться влево на 5 пк. со скоростью анимации 0.5.  
  }
}
//
if keyboard_check(ord("D"))
{
  image_xscale = 1
  if place_free(x+5,y)  
  {
  x+=5; image_speed = 0.5;  
  }
}
if keyboard_check(ord("W"))//если нажата клавиша W...
{
if place_free(x,y-1)/…сверху нет столкновения…
{
if not place_free(x,y+1)//...и снизу есть опора...
{
vspeed=-20//верт. скорость равна -20 (герой прыгает).
}
}
}

Теперь научим героя не проваливаться сквозь пол. В событии столкновения с полом (объект o_pol) пропишите такой код:
Code

if (vspeed > 0 && not place_free(x,y+vspeed))  
{
  move_contact(270);  
  vspeed = 0;
}

Ну вот, теперь герой может бегать по блокам. Кстати не забудьте поставить галочку «Твёрдый» у объекта пола.
Так, а может сделать лестницы? А давайте! Нарисуйте спрайт лестницы и отцентируйте его. Теперь нажмите на кнопку «изменить маску», в графе форма поставьте «Прямоугольник», а в графе Рамка галочку на «Пример». Выделите середину лестницы в прямоугольник. Вот скриншот:

Теперь у героя в столкновении в лестницой напишите:
Code

if keyboard_check(ord("W"))// если нажата клавиша W
{
vspeed=-5// верт. скорость РАВНА -5 (герой равномерно ползёт)
x=o_les.x // выравнивание относительно лестницы.
}

Всё! Готово!
И наконец, начнём делать RPG часть. Для этого создадим новый объект без спрайта – o_control.
В создании этого объекта надо написать все глобальные переменные:
Code

global.xp=0// опыт
global.lvl=1//уровень
global.maxim=100// макс. опыт
global.sp_f=7 //скорость фаэрбола.

А в step напишем расчёт повышения уровня:
Code

if global.xp>=global.maxim//если опыта больше или столько же сколько макс. опыта...
{
//тут происходят действия при повышении уровня.
global.lvl+=1//уровень +1
global.xp-=global.maxim//от кол-ва опыта отнимается макс. опыт
global.maxim+=100//макс. опыт +100
global.sp_f+=2//скорость фаэрбола +2
show_message("Поздравляю! Вы достигли уровня " +string(global.lvl))//выводим сообщение.
}

Теперь поставим отрисовку всего этого на экране:
Code

draw_text(0,0,"Опыта до следущего уровня: "+string(global.maxim-global.xp))//выводим кол-во опыта до следующего уровня.

Кстати, создайте новый шрифт и в «диапазоне символов» поставите от 0 до 255 и кнопочкой «установить шрифт» поставьте его в создание объекта o_control. Это нужно для вывода русских букв.
Теперь сделаем ботов. В событии создания поставьте кнопочку «Движение в направлении» влево.
А в step:
Code

gravity_direction = 270 //Направление гравитации - вниз.
if place_free(x,y+1) //Если снизу нет столкновений...
gravity = 2 //...гравитация равна двум.  
else //А если столкновения есть...  
gravity = 0 //...гравитация отключается.

if not place_free(x-12,y) || not place_free(x+12,y) // если слева или справа есть препятствия...
{
if not place_free(x,y+1)//...и снизу есть опора...
{
vspeed=-16//...совершаем прыжок.
}
}
В столкновении с полом:
if (vspeed > 0 && not place_free(x,y+vspeed))  
{
  move_contact(270);  
  vspeed = 0;
}

Быстренько создадим объект o_ogr и в спрайт вставим любой кубик.
Вернёмся к нашему монстру. В событии столкновения с объектом o_ogr перетащите кнопочку Рикошет с настройками: неточный, от всех объектов. Ну, всё теперь монстрик бегает от одного кубика к другому, перепрыгивая всё на своём пути.
Остаётся научить нашего героя стрелять фаэрболами. Создайте новый объект o_fire и пропишите ему в создание:
Code

move_towards_point(mouse_x,mouse_y,global.sp_f)//лететь к мышке с скоростью global.sp_f.

В step:
Code

image_angle=direction//поворот в сторону движения

В столкновении с монстром:
Code

global.xp+=50//прибавляем опыт
instance_destroy()//удаляем фаэрбол

И в столкновение с полом удаляем объект кнопочкой.
И последнее:
У героя в событии Глобального нажатия левой кнопкой мыши пишем этот невероятно сложный код:
Code

instance_create(x,y,o_fire)//создаем фаэрбол.

И в столкновении с монстром ставим рестарт комнаты:
Code

game_restart()

Ну, вот и всё!!!
Исходник:
Категория: Создание игр | Добавил: stalker5889 (29 Июня 2011) | Автор: Никита Марков
Просмотров: 27244 | Комментарии: 13 | Рейтинг: 3.6/7 |
Теги: РПГ, GML, Game Maker, платформер, Урок, Прокачка героя, Прокачка, магия, RPG, монстры
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Создание платформера-RPG на game maker», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 131 2 »
+0-
11 gemcd   (08 Мая 2018 12:22) [Материал]
меня лестница просто телепортирует в хз куда когда я нажимаю W
что делать? ;)

+0-
13 Detektrius   (30 Января 2022 13:25) [Материал]
DetektriusСнимать штаны и...

+0-
10 Androgenic   (09 Октября 2012 17:55) [Материал]
AndrogenicЧё такая косячная статья? ты что торопился куда-то? Объяснения нет, иногда баги жёсткие, я конечно исправил твои ошибки, но что будут делать начинающие в программировании на ГМ извини конечно но + я тебе не поставлю статья лёгкая для начинающих а начинающие не смогут разобрать сленга профессионалов ГМ!

+0-
9 goldsphere   (22 Апреля 2012 12:32) [Материал]
goldsphereПерезалейте исходник плиз

+1-
8 Dagot   (25 Сентября 2011 08:45) [Материал]
DagotУрок действительно хорош.

Но у меня возникли проблемы, которые связаны с Ai, поэтому у меня просьба: не могли бы вы подкрепить урок исходником?

+0-
7 Ltdima   (29 Августа 2011 14:49) [Материал]
LtdimaТут ошибка в коде лестницы.Когда мой персонаж столкнулся с лестницей игра выдавала ошибку неизвестное значение o_les.И как добавить анимацию ходьбы и прыжка. cry

+0-
12 gemcd   (23 Мая 2018 22:19) [Материал]
назови лестницу o_les и все сработает

+0-
6 Ltdima   (28 Августа 2011 19:59) [Материал]
LtdimaСпасибо,как раз то что нужно smile

+2-
5 GameMix   (09 Июля 2011 05:55) [Материал]
GameMixstalker5889, хороший урок. Спасибо. Только пожелание, выделяй в следующий раз имена объектов жирным или цветом. Имена объектов сливаются с текстом. Пиши ещё статьи, подобные с удовольствием прочту smile

+2-
4 stalker5889   (05 Июля 2011 13:47) [Материал]
stalker5889Кому не сложно комментируйте - буду рад любой критике и пожеланиям. smile

+2-
3 as3011   (01 Июля 2011 19:12) [Материал]
as3011Классно smile меня порадовало, спасибо respect up

+3-
2 stalker5889   (30 Июня 2011 10:20) [Материал]
stalker5889Забыл сказать:
У монстра в столкновении с фаэрболом надо поставить удаление.

1-10 11-11
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • GameLooper
  • J2DS
  • Bipsi
  • Zephyr3d
  • Free Heroes
  • Novashell
  • Apocalyx
  • DzQ
  • LGCK Builder
  • InterAx
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг