Супер урок для начинающих по Game Maker (v8 платформенная игра) - Game Maker - Программинг - Каталог статей - Развлекательный сайт для программистов-игроделов

Категории каталога

Программинг [38]
Программинг, уроки, формулы, туториалы
Dark Basic [31]
Помощь начинающим в Dark Basic (Статьи,учебники,книги)
Blitz 3d [7]
Статьи и уроки по Blitz 3d
C/C++ [8]
Статьи по C/C++
Delphi [12]
книги, уроки, статьи, программирование в Delphi
Game Maker [12]
Статьи, помощь для программистов игроделов на Game Maker
Ассемблер (Assembler) [5]
Стати по Ассемблеру для начинающих и продвинутых программистов
ВЕБ-ПРОГРАММИРОВАНИЕ [5]
Уроки и статьи по ВЕБ-программированию
Scirra Construct [0]

Форма входа

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

Логин:
Пароль:

Поиск

Друзья сайта



    Случайное фото

    Статистика

    Онлайн всего: 3
    Гостей: 3
    Пользователей: 0

Поддержите наш проект

WebMoney:
R309699065243
U292079291240
Z373355457648

Счётчики


Rambler's Top100
Рейтинг@Mail.ru

Наш опрос

Зачем человеку указательный палец?
Всего ответов: 62

Статистика

$COUNTERdiv>

Каталог статей

Главная » Статьи » Программинг » Game Maker

Супер урок для начинающих по Game Maker (v8 платформенная игра)
Супер урок для начинающих по 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

Источник: http://letitbit.net/download/33574.3e3233783efc10780920747d9863/Super_lessons_GM.rar.html]Super_lessons_GM.rar

Категория: Game Maker | Добавил: DenHaz (01.04.2011) | Автор: Денис Хазгалиев
Просмотров: 6697 | Комментарии: 1 | Рейтинг: 3.6/7 |
Всего комментариев: 1
1  
Отличный урок. Спасибо DenHaz B)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]