Пародии на игры, сказки - мне больше всего понравились эти идеи. Либо "Лучшая текстовая игра"! (тогда я бы смог принять участие, несмотря на ужасную графику моих игр )
Попробую. Только просьба:пиши грамотно. Это одно из правил форума!
Добавлено (13.03.2010, 09:19) --------------------------------------------- Открой ГМ. Для начала нам надо нарисовать спрайт героя. Нажми правой кнопкой мыши на папку Sprites и выбери Create Sprite. В появившемся окошке Нажми Edit Sprite, и опять уже в другом окне нажми на значок белого листа. Выбери размеры - пока можно оставить стандартные 32х32. Дважды нажми на зеленый квадрат (будущий спрайт) и рисуй, скажем, человечка. Теперь два раза - на галочки. Затем правой кнопкой мыши на папку Objects и выбери Create Object. В новом окне, слева, есть надпись Sprite и под ним no sprite. Нажми на no sprite и выбери спрайт человека. Теперь немного о событиях. Все в ГМ основано на них. Например, ты захочешь, чтобы при нажатии ENTER твой человечек исчезал. Нажми Add Event (внизу). Выбери в новом окошке Keyboard и ниже <Enter>. Событие создано, теперь надо поместить туда действия. Их список в таблице справа. Выбери вкладку main1 и перетащи значок "корзины" в поле Actions (левее таблицы). Нажми ОК. Сделано! Но надо создать комнату, в которой это будет происходить и поместить туда человека. Теперь правой кнопкой мыши на папку Rooms, выбери Create Room. Внизу в этой комнате нажми на поле и выбери свой объект. Затем нажми на то место в комнате, где хочешь, чтобы он был. Все! Сверху нажми на зеленый треугольник и запускай "игру"!
Создай объект без спрайта. В Create впиши timer=время(каждая единица - 1/30 секунды) в Step time-=1 if time=0 {что-то происходит} В его Draw draw_text(0,0,time)
Вот и числовой таймер.
Сообщение отредактировал Scorpio - Четверг, 11 Марта 2010, 18:39
Создание TDS В последнее время многие стремятся создать свою TDS, и чаще всего для этих целей выбирают Game Maker. Я решил посвятить свою очередную статью их созданию (часть совпадает с материалом о создании RPG). Что должно быть в каждой ТДС? Бегающий туда-сюда герой, увешанный оружием, толпа монстров, с которой сражается маленький беззащитный (почти) человек. Но пока
проопишем необходимые переменные. oruzhie='Пистолет' (начальное оружие) pistolet_patron=100 (какое оружие без патронов) blaster_patron=0 s_blasterom=false (нет бластера!)
Оно обычно такое: поворот с помощью мышки, бегаем на стрелочках/WASD. Чтобы герой мог ходить по диагонали, бег сделаем с помощью прыжков в определенные
координаты. Вот так: if keyboard_check(vk_right) {x+=4} if keyboard_check(vk_left) {x-=4} if keyboard_check(vk_up) {y-=4} if keyboard_check(vk_down) {y+=4} Поворачивание за мышкой легко сделать с помощью команды, определяющей направление по отношению к координатам мышки: image_angle=point_direction(hero.x,hero.y,mouse_x,mouse_y) Чтобы все было красиво, необходимо центрировать спрайт героя! Все, движение героя есть. Радуемся и переходим к стрельбе по монстрам. В Create героя поместите: babah=15 (это необходимо для перезарядки) В Step героя: babah-=1 Создайте объект пули (еще нарисуйте, естественно, саму пулю). В событии глобального нажатия левой кнопки мышки (Global Left Button) пропишите создание пули
в координатах героя: if babah<=0 {if oruzhie='Пистолет' and pistolet_patron>0 or oruzhie='Бластер' and blaster_patron>0 {instance_create(x,y,pulya) if oruzhie='Пистолет' {pistolet_patron-=1 babah=15} if oruzhie='Бластер' {blaster_patron-=1 babah=30}} } А у пули в Create: move_towards_point(mouse_x,mouse_y,25) Теперь получилось, что герой стреляет. Не из дула, а из своей середины - но, благодаря высокой скорости пули, это незаметно. Стрельба есть, но врагов нет. Непорядок! Создайте объект какого-нибудь чудовища и перетащите ему в Step кнопку Step Towards Point (координаты -
hero.x,hero.y. Также выберите solid и включите solid самому монстру - чтобы обходил препятствия и таких же, как он сам). Теперь монстру в Create: heal=100 (это его здоровье) В столкновении героя с монстром напишите health-=1 А в столкновении монстра с пулей: if hero.oruzhie='Пистолет'heal-=20 (можно больше, для скоростного и кровавого геймплея ) if hero.oruzhie='Бластер'heal-=60
В Step монстра: if heal<=0 {instance_change(trup,1)} И создайте объект трупа врага и спрайт этого трупа. Сам герой умереть тоже должен, пишем ему в Step что-то подобное: if health<=0 {game_end() show_message('Ты сдох, чувак!')}
Основная часть позади! Но надо еще сделать постоянное нападение врагов и смену оружия. Сначала враги. Посмотрите на своей игровой карте точки, из которых могли бы выходить монстры (желательно за пределами карты и штуки три), создаем объект без
спрайта и пишем ему в Create Alarm[0]=30 (можно меньше) А в событии Alarm 0: instance_create(координаты вашей первой точки,monstr) instance_create(координаты вашей второй точки,monstr) instance_create(координаты вашей третьей точки,monstr) alarm[0]=30
Теперь монстры постоянно идут из тех точек. Дальше оружие. Создаем объект blaster. В столкновении героя с бластером поместим: blaster_patron+=20 (патроны нашли) s_blasterom=true (у нас он есть) oruzhie='Бластер' (автоматически оружие меняется на бластер, для удобства) Создаем объект пистолета и пишем в столкновении героя с ним примерно так: pistolet_patron+=40 И, наконец, смена оружия. У героя в нажатии цифры 1: oruzhie='Пистолет' А в нажатии 2: if s_blasterom=true {oruzhie='Бластер'}
Вот и все - простенькая TDS создана!
Выкладываю также исходник этого примера. Он немного не такой, в частности геймплей там быстрый за счет увеличения скорости комнаты.
Сообщение отредактировал Scorpio - Понедельник, 08 Марта 2010, 13:02
Вот вчера я написал небольшую статью про создание RPG с видом сверху. А вообще это действительно надо изучать Game Maker Language (скриптовый язык Game Maker'a), благо в справке все подробно описано. Если же будут проблемы с отдельными аспектами игры - обращайтесь.
Сообщение отредактировал Scorpio - Понедельник, 08 Марта 2010, 10:21
Текстовым играм статью посвятил, теперь очередь RPG! Предупреждение: не буду расписывать отвлеченные вещи вроде рисования спрайтов и создания объектов. Только говорю - все препятствия на пути героя должны быть
с Solid! Давайте поразмышляем: что необходимо для РПГ? Прокачка героя, разные суперпуперспособности, адекватные сражения и диалоги - правильно? Вот этим и займемся. В Create пропишем необходимые переменные. Так как в РПГ может быть множество локаций, логично, что переменные эти глобальны (существуют в одном экземпляре и
сохраняются при переходе героя на другую локацию). Скажем, так: global.xp=0 //Очки опыта героя global.level=1 //Уровень global.maxhealth=100 //Максимальное здоровье, увеличивается при прокачке. global.mana=100 // Мана global.maxmana=100 //Максимальная мана, тоже увеличивается при прокачке. //Также наш герой должен менять одежду, оружие, как в больших РПГ. Пропишем для начала: 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 (это его здоровье) В событии нажатия на монстра (в объекте монстра) ставим примерно так: if global.oruzhie='Кулаки' heal-=2 if global.oruzhie='Меч' heal-=4 if global.oruzhie='Еще что-нибудь' heal-=7 Естественно, также ставим при столкновении героя с монстром так: if odezhda='Обноски' health-=1 if odezhda='Плащ' health-=0.6 if odezhda='Еще что-нибудь' health-=0.3 У монстра, кстати, ставим в Степ image_angle=direction (он тоже имеет право поворачиваться, куда хочет :)). Но это не все. Герой еще бессмертный и ему плевать на уменьшение здоровья (как и монстру). У героя пишем в степ: if health<=0 {show_message('ЛУЗЕР!!!')game_end()} А у монстра if heal<=0 {instance_destroy() global.xp+=50}
Фу-ух, разобрались. Простенькая игрушка создана. Но это все еще не совсем РПГ. Нужна прокачка, верно? В степе что-нибудь вроде этого: 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, повышается уровень и максимальные мана и здоровье.
Остались магические способности героя. Рассмотрим, скажем, файерболы. Пишем в событии глобального нажатия левой кнопки мыши: if global.mana>=20{ instance_create(x,y,faerball) global.mana-=20} у файербола в Create: move_towards_point(mouse_x,mouse_y,15) И в столкновении монстра с файерболом: heal-=30 (или сколько надо)
С заклинанием разобрались, настало время последнего элемента - диалогов. С этим просто. В столкновении героя с НПС пишешь вот (пример): 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).
Вот и подошел урок к концу. Если что-то непонятно, есть проблемы - обращайтесь ко мне!
P.S. Планирую продолжить рассмотрение создания игр разных жанров в Game Maker.
Сообщение отредактировал Scorpio - Понедельник, 08 Марта 2010, 10:59
Насколько я знаю, можно через 3 дня только Но я тебе и так постараюсь помочь. У тебя через кнопку движения само движение, так? Тогда примерно так в степе героя: if direction=0 {pricel.x=hero.x+100 pricel.y=hero.y} if direction=90 {pricel.x=hero.x pricel.y=hero.y-100} if direction=180 {pricel.x=hero.x-100 pricel.y=hero.y} if direction=90 {pricel.x=hero.x pricel.y=hero.y+100}