Урок по созданию РПГ в 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). Вот и подошел урок к концу. Если что-то непонятно, есть проблемы - обращайтесь ко мне!
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Создание RPG игры в GameMaker», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
в create: global.kach_xp=300 global.xp=0 global.level=0 в step: if global.xp>=global.kach_xp { global.level+=1 global.xp=0 show_message('ВАШ УРОВЕНЬ - '+string(global.level)+'!' ) global.maxhealth+=10 global.maxmana+=10 global.mana+=10 health+=10 } if global.level+=1 global.kach_xp*0.3
Но работаешь-то на компьютере. В таких случаях удобно использовать штуку типа Advego Plagiatus, довольно точно анализирует текст на уникальность и, соответственно, помогает найти адреса, по котором размещены совпадения...
В данном случае, этот урок в том или ином виде (84-100%) всплывает на двадцати страницах, правда, на нескольких сайтах сразу в нескольких местах, но в целом получается куча сайтов, с копией этого текста.
1)удаление всех объектов зеленой точки; 2)создание объекта этой зеленой точки в координатах mouse_x,mouse_y; 3)движение героя опять-таки в mouse_x, mouse_y. В столкновении героя с этой самой точкой пишем исчезновение точки и остановку героя (думаю, обойдемся без подробных объяснений).
Это уже не урок по Game Maker/GML, а алгоритм. Давай правильное название статье. Доля правды в комменте Ho_Sung_Pak есть - новички для себя здесь почти никакой пользы не получат. И помещай код в специальный тег code.
Когда я писал коммент, код не был выделен, не заливай. А коммент можешь минусовать пока не устанешь, все-равно, мои пожелания по поводу урока не изменятся
Извени смайл не тот поставил и ты меня не так понял !)) Я тебя послушал и потом вставил коды !) Спсибо) Просто ты меня не так понял ) Место этого на этот нажал ))