Главная » Статьи » Game maker [ Добавить статью ]

Создание RPG игры в GameMaker
Урок по созданию РПГ в GameMaker. Вы, наверное, когда-нибудь задумывались о создании своей РПГ игры?

В данном уроке написано как это сделать в 2D
Предупреждение: не буду расписывать отвлеченные вещи вроде рисования спрайтов и создания объектов.
Только говорю - все препятствия на пути героя должны быть с Solid! Давайте поразмышляем: что необходимо для РПГ? Прокачка героя, разные суперпуперспособности, адекватные сражения и диалоги - правильно? Вот этим и займемся.

В Create пропишем необходимые переменные.
Так как в РПГ может быть множество локаций, логично, что переменные эти глобальны (существуют в одном экземпляре и сохраняются при переходе героя на другую локацию). Скажем, так:
Code
global.xp=0 //Очки опыта героя

global.level=1 //Уровень

global.maxhealth=100 //Максимальное здоровье, увеличивается при прокачке.

global.mana=100 // Мана

global.maxmana=100 //Максимальная мана, тоже увеличивается при прокачке.

//Также наш герой должен менять одежду, оружие, как в больших РПГ.


Пропишем для начала:
Code
global.oruzhie='Кулаки' global.odezhda='Обноски'
С переменными разобрались. Сделаем герою движение - он не может стоять на месте, верно?

Вид у нас будет сверху и движение - с помощью тыканья мышкой. Создайте спрайт и объект зеленой точки (она обозначает, куда двигается герой).
В событии у героя Global Mouse Left (нажатие левой кнопки мыши в любом месте) ставим:
1)удаление всех объектов зеленой точки;
2)создание объекта этой зеленой точки в координатах mouse_x,mouse_y;
3)движение героя опять-таки в mouse_x, mouse_y. В столкновении героя с этой самой точкой пишем исчезновение точки и остановку героя (думаю, обойдемся без подробных объяснений).
Теперь в Степе image_angle=direction (у вас должен быть лицензионный ГМ!), чтобы спрайт героя поворачивался в сторону движения. Спрайт должен быть нарисован изначально повернутым вправо. Получилось движение героя! Что там дальше? Ну конечно, какая РПГ без сражений с монстрами! Сделать монстра не так уж сложно.

Есть кнопка передвижения с обходом препятствий (Step Towards Point), ее и перетаскиваем монстру в Step, в координаты там пишем: hero.x, hero.y. Перед этой кнопкой ставим кнопку проверки переменной, в поле переменной пишем "distance_to_object(hero)", а ниже выбираем smaller than и пишем во второе поле, например, 200.

Теперь у монстра есть простенький ИИ - при приближении героя враг начинает бежать за ним. В Create монстра ставим heal=100 (это его здоровье) В событии нажатия на монстра (в объекте монстра) ставим примерно так:
Code
if global.oruzhie='Кулаки' heal-=2 if global.oruzhie='Меч' heal-=4 if global.oruzhie='Еще что-нибудь' heal-=7

Естественно, также ставим при столкновении героя с монстром так:
Code
if odezhda='Обноски' health-=1 if odezhda='Плащ' health-=0.6 if odezhda='Еще что-нибудь' health-=0.3
У монстра, кстати, ставим в Степ image_angle=direction (он тоже имеет право поворачиваться, куда хочет ). Но это не все. Герой еще бессмертный и ему плевать на уменьшение здоровья (как и монстру). У героя пишем в степ:
Code
if health<=0 {show_message('ЛУЗЕР!!!' )game_end()} А у монстра if heal<=0 {instance_destroy() global.xp+=50}
Фу-ух, разобрались.

Простенькая игрушка создана. Но это все еще не совсем РПГ. Нужна прокачка, верно? В степе что-нибудь вроде этого:
Code
if global.xp>=300 { global.level+=1 global.xp=0 show_message('ВАШ УРОВЕНЬ - '+string(global.level)+'!' ) global.maxhealth+=10 global.maxmana+=10 global.mana+=10 health+=10 }
Это пример прокачки героя - когда опыт больше 299, повышается уровень и максимальные мана и здоровье. Остались магические способности героя. Рассмотрим, скажем, файерболы.

Пишем в событии глобального нажатия левой кнопки мыши:
Code
if global.mana>=20{ instance_create(x,y,faerball) global.mana-=20}
у файербола в Create:
Code
move_towards_point(mouse_x,mouse_y,15)
И в столкновении монстра с файерболом: heal-=30 (или сколько надо) С заклинанием разобрались, настало время последнего элемента - диалогов. С этим просто.

В столкновении героя с НПС пишешь вот (пример):
Code
speed=0 (НПС должен быть solid!) dialog=show_message_ext('Что вы хотите?','Как дела?','Исчезни','Пока!' ) if dialog=1 {show_message('Да нормально все!' )} if dialog=2 {with (other) instance_destroy()} if dialog=3 {show_message('Пока! Удачи!' )}
Предупреждение: везде, где сказано про нажатие кнопки мыши, должно быть именно нажатие (Pressed), а не удержание (Button). Вот и подошел урок к концу. Если что-то непонятно, есть проблемы - обращайтесь ко мне!В данном уроке написано как это сделать в 2D Предупреждение: не буду расписывать отвлеченные вещи вроде рисования спрайтов и создания объектов. Только говорю - все препятствия на пути героя должны быть с Solid! Давайте поразмышляем: что необходимо для РПГ? Прокачка героя, разные суперпуперспособности, адекватные сражения и диалоги - правильно? Вот этим и займемся.
Категория: Game maker | Добавил: АДМИН (2012/Июл/27)
Просмотров: 6600 | Теги: созданию РПГ, Создание игр, Создание игры, GML, 2d RPG, Создание RPG, RPG, gamemaker, ролевые игры, 2Д РПГ | Рейтинг: 4.5/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]