Суббота, 26.05.2012, 18:39


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

Меню сайта
Категории каталога
Создание игр [170]
Статьи об общих понятиях связанных с созданием игр
Движки и Гейммейкеры [85]
Статьи о программах для создания игр
Игры [39]
Статьи об играх, в том числе и сделанных на гейммейкерах
Софт [25]
Различные программы, в том числе в помощь игроделам
Разное [61]
Статьи, которые не вошли в определённые разделы
Наш опрос
Покупаете ли вы конструкторы игр?
Всего ответов: 7306
Главная » Статьи » Создание игр

Создание платформера-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.06.2011) | Автор: Никита Марков
Просмотров: 4783 | Рейтинг: 5.0/2
Теги: РПГ, GML, Game Maker, Платформер, Урок, Прокачка героя, Прокачка, магия, RPG, Монстры
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

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

0  
8 Dagot   (25.09.2011 08:45)
Урок действительно хорош.

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

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

0  
6 Ltdima   (28.08.2011 19:59)
Спасибо,как раз то что нужно smile

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

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

+2  
3 as3011   (01.07.2011 19:12)
Классно smile меня порадовало, спасибо respect up

+3  
2 stalker5889   (30.06.2011 10:20)
Забыл сказать:
У монстра в столкновении с фаэрболом надо поставить удаление.

+2  
1 burlachenko   (30.06.2011 01:25)
В названии статьи не помешало бы указать что всё делается на конструкторе (потому как не ясно сначала что и к чему, глаза не находят среды разработки), да и для тех кто интересуется гейммейкером было бы проще найти эту статью.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки по теме
Поиск
10 случайных движков
Game Creator
Nytro Game Engine
Wintermute Engine
Doom Legacy
Visual3D
Luxinia
FIFE
EMG Studio
GLHeretic
RPGDTE
Друзья сайта
Игровой форум GFAQ.ru Перевод консольных игр Разработка игр в СНГ Loadka.ru – загрузка файлов Игорный бизнес в России Реклама и заработок
Все права сохранены. GcUp.ru © 2008-2012 Рейтинг