Создать игру, создание игр, конструктора игр, игровые движки, разработка игр, сделать игру
Приветствую Вас Гость · Вход · Регистрация  ·  Новые сообщения · Участники · Правила · Поиск · RSS
  • Страница 1 из 1
  • 1
Урок для начинающих по Game Maker v8 (платформенная игра)
DenHaz Дата: Вторник, 29.03.2011, 12:20 | Сообщение # 1


Сообщений: [1]
Супер урок для начинающих по Game Maker (v8 платформенная игра)

Автор: Хазгалиев Денис
Начало разработки: 22 Марта 2011 год.
Конец разработки: 24 Марта 2011 год.
Язык туториала: русский

Урок знакомит нас как создать первую 2D платформерную игру. Включает основы добавление спрайтов, действия и события, создание врага, создание жизней.
Каждый дилетант хочет создать свой супер экшен, и я вам помогу создать его основу.
Ссылка для примера: (в архиве присутcтвует пример и этот же урок с расширением doc) Super_lessons_GM.rar

Итак, приступим:
Для начала создадим спрайты (Sprites).
Спрайты – это как бы внешний вид персонажи, стенок… (с анимации или без).
Создадим спрайт главного игрока

• Называем его P_L, то есть, анимация движений налево (имя не имеет значение, вы можете назвать любое другое имя).
• Нажмите на кнопку «Загрузить Спрайт».
• В окне выберите свои спрайты, я выбрал 3 спрайта (32х64), которым в дальнейшем будет анимироваться как движение налево
• Нажмите «открыть» и нажмите ОК

Далее нам нужно убрать фон:
• На вкладке Sprites два раза нажмите на спрайт (P_L)
• Нажмите на кнопку «Редактировать»
• На верхнем панеле изображений выберите «стереть цвет» и нажмите ОК

То же самое делайте и со спрайтом, который движется направо (для удобства можно сделать отражение в редакторе на верхней панели трансформации).
В общем, должны быть следующие спрайты (Sprites).
• P_L – спрайт игрока, двигающийся налево(32х64)
• P_R – спрайт игрока, двигающийся направо(32х64)
• stop – спрайт игрока стоящего (32х64)
• V_R – спрайт врага, двигающийся направо(32х64)
• V_L – спрайт врага, двигающийся налево(32х64)
• ammo – спрайт пистолета(32х32)
• mas – спрайт маска для игрока и врага он должен совпадать с их размерами(в моем случае черный прямоугольник 32х64)
• jump – спрайт прыжка (действует только для врага) (черный квадрат 32х32)
• boll1 – спрайт пуля игрока(черный квадрат 12х12)
• boll2 – спрайт пуля врага(красный квадрат 12х12)
• box – спрайт твердый блок это и пол, потолок, стена…(32х32)
• lives – спрайт жизни игрока, который будет висеть на левом верхнем углу(32х32)

Всё со спрайтами, то есть с внешними видами разобрались.
Теперь начинаем создавать объекты(Objects), которые и будут действовать в игре.
Создадим объект игрока

• Называем его player (имя не имеет значение, вы можете назвать любое другое имя).
• Выбираем любой спрайт игрока (я выбрал спрайт stop).
• Для маски выбираем спрайт mas
• Нажимаем ОК
Маска нужна, чтобы игрок не застревал на твердые блоки (компьютер будет думать, что игрок черный прямоугольник).

Тоже самое делаете и для врага – имя vrag, маска та же(они одинаковы с игроком), любой спрайт врага.
Маски нужно ставить только для игрока и для врага, а на других не надо.
Для объекта блока выбираем спрайт box, соответственно называем объект box и в его настройках ставим галочку на твердый.

Для объекта прыжка (для врага) выбираем спрайт jump, соответственно называем объект jump и в его настройках убираем галочку с видимый.

Далее создайте остальные объекты с выбранными спрайтами в соответствии с их именами.
Итак, подведем итог:
• Объект player – выбран спрайт stop, выбран спрайт маски mas
• Объект vrag – выбран спрайт V_R, выбран спрайт маски mas
• Объект ammo – выбран спрайт ammo
• Объект control – для него спрайт не надо ставить, он будет рисовать жизнь игрока и здоровье врага.
• Объект jump – выбран спрайт jump, вставлен галочка на твердый.
• Объект boll1 – выбран спрайт boll1
• Объект boll2 – выбран спрайт boll2
• Объект box – выбран спрайт box, снят галочка из видимый

Спрайты готовы, объекты готовы, отлично!!!
Теперь начнем самый важный раздел «события и действия».
Начнем с игрока.

• Откройте объект игрока (player) на вкладке Objects
• Нажмите на кнопку «Добавить событие», потом на кнопку «Создание»
Создается событие Create, то есть, что будет создаваться в начале, а создаваться будет 3-жизни и 0-пуль, давайте это сделаем.

• На вкладке score перетаскиваем соответствующую иконку, как показано на рисунке в поле действии.
• На поле ставим ноль
• На «относительно» галочку не ставим (по умолчанию он пустой).
• Так же делаем и с сердечком и ставим три

Далее создадим событие шаг

• Создается событие Step
• Во вкладке control перетаскиваем иконку, кода в поле действии
• В поле кодов пишем следующие коды, этот код осуществляет гравитацию для игрока (сила тяжести).

Code

{
   // устанавливаем силу тяжести (гравитация)
   gravity_direction = 270;
   if place_free(x,y+1)
     gravity = 0.9
   else
     gravity = 0;
   // ограничиваем скорость
   if (vspeed > 12) vspeed = 12;
}

Далее создадим событие столкновения.

• Выбираем объект пистолета (ammo), создается событие ammo.
• Перетаскиваем в действии уже известную иконку, пишем 20 и вставим галочку на относительно, то есть при столкновении с объектом ammo должен стать у игрока 20 пуль, но есть одна проблемка, при столкновении 20 пуль он даст, а исчезать не будет, для решения этой проблемы нужно:
1 на вкладке main1 находим иконку корзины и перетаскиваем в поле действии
2 переключаем на «другие», если мы бы переключили на «себе», то исчез бы игрок, а так исчезает другой объект, а именно объект ammo.
Далее создадим событие столкновения.

• Выбираем объект пуля врага (boll2)
• Создаем действия как показано на рисунке, то есть при столкновении:
1 отнимается одна жизнь
2 пуля исчезает
3 игрок перемежается в начальное место
Далее создадим событие столкновения.

Ставим код для блока, то есть для объекта box (это вы уже знаете, как сделать, повторяться не буду!) и пишем следующий код.
Code

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

Далее создадим событие не нажатой клавиши.

• Нажмите на кнопку «Добавить событие» потом на «клавиатура».
• Выберите No key, то есть клавиша не нажато
Что будет делать игрок, когда не одна клавиша не нажато?
Он ничего не будет делать, только нарисуется стоящий спрайт - это спрайт stop, для этого:

• На вкладке main1 перемежаем иконку колобка ? в поле действии.
• Выбираем спрайт stop
Далее создадим событие левой клавиши.

Клавиатура потом «влево» и появится событие Left
В событие перетаскиваем следующие действии:

• В настройки колобка ставим спрайт движущиеся влево (P_L).
• На subimage пишем all (помнете ли вы когда мы создали спрайт с тремя кадрами), почему all(все)?, потому, что мы выбираем все 3 спрайта и получатся анимированный спрайт, если мы бы поставили например 2, то рисовалось бы только 2-ой кадр спрайта.

• На speed пишем 0.5 – это скорость анимации(вы можете написать другое значение в зависимости от скорости движение объекта, которые сейчас будем определять).
• Перетаскиваем иконку кода и пишем в поле код движение объекта налево, значение 4 означает скорость движение объекта.
Code

  {
   if place_free(x-4,y) x -= 4;
}

Далее создадим событие верхней клавиши.

В действии перетаскиваем иконку кода и в поле пишем код прыжка (-11 – чем меньше это значение, тем высоко прыгнет ваш игрок).
Code

{
   if (not place_free(x,y+1)) vspeed = -11;
}

Далее создадим событие правой клавиши.
Тоже самок как и с левой клавиши (только спрайт поставьте P_R), но код будет отличатся этим:
Code

{
   if place_free(x+4,y) x += 4;
}

Далее создадим событие «нет больше жизни».

• Нажмите на кнопку «Добавить событие» потом на «Другие».
• Выберите «нет больше жизни» и создается событие No More Lives.
Для него создаем действие, которые игра начнется заново, если не будет больше жизни.

На вкладке main2 перетащите иконку Restart
Далее создадим событие «нет больше здоровья».

В событии No More Health (нет больше здоровья) будем делать действие, которые при истечение здоровий, враг исчезнет.
Для этого:
• Перетащите корзинку из вкладки main1.
• Переключите на «Объект» и выберите объект врага (vrag)
Далее создадим событие «Клавиша нажата».

• Нажимаем на кнопку «Добавить событие» потом на «Клавиша нажата», если мы выбрали бы «Клавиатура», то игрок стрелял бы как из пулемета и 20 пуль закончились бы в один миг.
• Выбираем Space (клавиша пробел) и создается событие press <Space>
В действии перетаскиваем следующие иконки:

Перетаскиваем проверку пули и настраиваем, как показано на рисунке.
Далее перетаскиваем иконку блок начало (Start block) и иконку проверки переменной (Test Variable) на вкладке control.

• В настройках Test Variable на variable пишем sprite_index
• На operation выбираем equal to
• На value пишем название спрайта движущегося налево, почему?, потому, что если рисоваться этот спрайт, то будет какая - то реакция, эту реакцию мы будем создавать в виде пули, исходящий из игрока и движущегося в левую строну.
Для этого:

• Перетащите иконку Create moving в поле действии
• В настройках Create moving на object выбираем пулю игрока (boll1)
• На X и Y рассчитываем источник пули как показано на рисунке ниже
• На speed пишем 12 (скорость пули)
• На direction пишем значение по направлению, в нашем случае налево, значение 180
• Обязательно ставьте галочку на относительно

Далее создайте копии этих двух иконок Test Variable и . Create moving

измените их настроек так:
• Для Test Variable измените P_L на P_R
• Для Create moving измените значение 180 на 0
Далее нам нужно чтобы при нажатии пробел(Space)количество пуль уменьшилась на 1
Для этого:

• Перетащите иконку Set Score в поле действии
• В настройках напишите значение -1 и ставьте относительно
• Перетащите конечный блок во вкладке control
Всё с объектом игрока(player) закончили!!!
Теперь начнем с объекта врага (vrag).

• Откройте объект врага (vrag) на вкладке Objects
• Нажмите на кнопку «Добавить событие» потом на кнопку «Создание» (Создается событие Create, то есть, что будет создаваться в начале).
• В событии перетаскиваем переменные в поле действии со значениями(эти переменные нужны для событие шага):
Первое переменное variable – firing, value – 0
Второе переменное variable – target, value – noone
Третье переменное variable – range, value – 300
Четвертое переменное variable – rate, value – 1
Пятое переменное variable – damage, value – 50

Далее перетаскиваем иконку здоровья, пишем значения 100 (в начале у врага будет 100% здоровья).
Во вкладке move найдите иконку с красными стрелками и настройте, как показана на рисунке, то есть в начале враг будет двигаться вправо или влево со скоростью 4.
Далее создадим событие шаг

• Создается событие Step
• Во вкладке control перетаскиваем иконку кода в поле действии
• На поле кодов напишем следующие коды, этот код вынуждает врага стрелять на игрока с определенный дистанции (здесь добавлена и гравитация).
Code

{
  // устанавливаем силу тяжести (гравитация)
   gravity_direction = 270;
   if place_free(x,y+1)
     gravity = 0.5
   else
     gravity = 0;
   // ограничиваем скорость
   if (vspeed > 12) vspeed = 12;     
      
     var ii, dist, xx, yy;
     if firing > 0 firing += 1;
     if firing = 30/rate firing = 0;
     if not instance_exists(target) target = noone;
     if instance_exists(player)
     {
         if target = noone target = instance_nearest(x,y,player);
         if point_distance(x,y,target.x,target.y) > range
             target = noone;
         else if firing = 0
         {
             firing = 1;
             //Create a bullet
             ii = instance_create(x,y,boll2);
             dist = point_distance(x,y,target.x,target.y)/24;
             xx = target.x+target.speed*dist*cos(target.direction*pi/180);
             yy = target.y-target.speed*dist*sin(target.direction*pi/180);
             ii.speed = 6;
             ii.direction = point_direction(x,y,xx,yy);
             ii.damage = damage;
         }
     }
}

Обратите внимание, что в коде присутствует название объекта игрока (player) и пули врага (boll2),если вы не назвали их как я, то переименуйте их на свой.

Далее перетащите иконку проверка переменной и настройте, как показана на рисунке выше (он проверяет горизонтальное движение(hspeed)).

• Далее перетаскиваем иконку колобка и выбираем спрайт врага, движущегося направо (V_R).
• Перетаскиваем иконку Else во вкладке control
• Перетаскиваем еще одного колобка, но уже с V_L
Далее создадим событие столкновение с объектом jump(он невидим).

Перетаскиваем код, в него пишем код прыжка, которые при столкновении враг будет прыгать, вот этот код(этот код мы использовали и для игрока):
Code

{
   if (not place_free(x,y+1)) vspeed = -11;
}

Далее создадим событие столкновение с объектом пули врага(boll1).

• Во вкладке main1 перетащите корзинку, переключите на другой
• Перетащите иконку здоровья, пишите значения -25(при столкновении у врага отнимается здоровья на 25%).
• Поставьте галочку на относительно
Далее создадим событие столкновение с объектом блока(box).

• Во вкладке move перетаскиваем иконку горизонтальное столкновение, то есть враг столкнется со стеной в горизонтальном направлении, то примет обратное направление.
• Перетащите код и пишите следующее:
Code

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

Всё с действующими лицами разобрались
Теперь начнем рисовать жизнь игрока и здоровья врага.

• Откройте объект control на вкладке Objects
• Нажмите на кнопку «Добавить событие» потом на кнопку «Рисование» (Создается событие Draw).

• Перетащите иконку рисование здоровья и настройте, как показано на рисунке (здоровье будет висеть чуть пониже, чем жизнь).
• Перетащите иконку рисование жизни в место х и у ставим 0, то есть будет висеть на левом верхнем углу, и выбираем спрайт жизни (lives).
Переходим к объекту пуль игрока (boll1) во вкладке Objects

• Создадите событие «создание» и перетащите переменной с настройками variable – damage, value – 0
• Создайте событие столкновение блока и перетащите корзинку (при столкновении с блоком пуля исчезает)
Переходим к объекту пуль врага (boll2) во вкладке Objects
• Создайте событие столкновение блока и перетащите корзинку (при столкновении с блоком пуля исчезает)
Всё теперь остался последний штрих, создание комнаты игры.
Для этого:

• Во вкладке Rooms (после вкладки Objects) кликнем правой кнопки мышки, и выбираем Create rooms и создается пустая комната
• Для удобства настроем комнату 32 на 32
• Понаставим объекты и нажмем на верхнюю галочку
• Потом в панели инструментов нажимаем на зеленый треугольник (знак запуска игры)
Вот и всё!!!

Ссылка для примера Super_lessons_GM.rar

Сообщение отредактировал: DenHaz - Среда, 30.03.2011, 09:30
naruto08 Дата: Вторник, 29.03.2011, 16:52 | Сообщение # 2
Просмотр профиля: naruto08

Сообщений: [611]
DenHaz, Отлично!
Hagrael Дата: Вторник, 29.03.2011, 18:43 | Сообщение # 3
Просмотр профиля: Hagrael

Сообщений: [1475]
Прочел начало. Есть замечания. Быдло-названия. Спрайты лучше было назвать так:
P_L, P_R, P_S (а не stop), P_B (а не boll1), E_L, E_R, E_B (а не boll2), E_J (а не jump), mask (а не mas, у меня сразу же ассоциация с mass, к тому же одна буква большой роли не сыграет), ammo, box, lives.
Некоторые объекты тоже следует переименовать. Как я понял, направление гравитации не изменяется, поэтому глупо его задавать в step, это надо делать в create.
Конструктор Дата: Среда, 13.04.2011, 13:04 | Сообщение # 4
( Не ленимся =) )
Просмотр профиля: Конструктор

Сообщений: [1854]
Хорошо написал, молодец. Достойно уважения проделать такой труд.

Работаю над Каваей.
ShortKedr Дата: Среда, 13.04.2011, 14:34 | Сообщение # 5
( Бобра всем))) )
Просмотр профиля: ShortKedr

Сообщений: [254]
DenHaz, молодец очень хороший урок
MrBlekmyr Дата: Среда, 13.04.2011, 15:39 | Сообщение # 6
( Russian )
Просмотр профиля: MrBlekmyr

Сообщений: [928]
Крутой урок
ps.У меня есть такой спрайт игрока
DraggonFantasy Дата: Среда, 13.04.2011, 20:47 | Сообщение # 7
Просмотр профиля: DraggonFantasy

Сообщений: [1514]
DenHaz, Молодец! smile
Очень поразил размер урока, текста много, картинки. Одним словом - молодец! smile
DraggonFantasy Дата: Пятница, 16.09.2011, 22:26 | Сообщение # 8
Просмотр профиля: DraggonFantasy

Сообщений: [1514]
Закрепил тему, ибо урок полезный будет новичкам. smile
Kam4aMaN Дата: Суббота, 07.01.2012, 10:50 | Сообщение # 9
Просмотр профиля: Kam4aMaN

Сообщений: [77]
На мизистике видел, не копипаст?
Filinshein Дата: Суббота, 07.01.2012, 11:01 | Сообщение # 10
Просмотр профиля: Filinshein

Сообщений: [2138]
Камчатовец, Смотри какая там дата добавления.
3dmaker Дата: Суббота, 14.07.2012, 14:14 | Сообщение # 11
Просмотр профиля: 3dmaker

Сообщений: [473]
молодец

Ностальгирую
  • Страница 1 из 1
  • 1
Поиск:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2024 Хостинг от uCoz
Топ Разработка игр