Econ Dude Основи створення ігор – удар у ближньому бою

вівторок, 2 травня 2017 р.

Вітаю. Сьогодні розглянемо базову механіку під час створення ігор – удар у ближньому бою. Як це зробити в гейм-мейкер студіо(GameMaker Studio), як це взагалі працює і які є способи зробити ближній бій для гри будь-якого жанру, від RPG до платформера. Це поки що йдуть все щеоснови створення ігор, хоча складніші теми я теж іноді торкаюся як у блозі Econ Dude, так і на своєму ютуб каналі.

econ

Отже, як робиться удар у ближньому бою, чи то меч, булава, лазерна шабля або що завгодно, у чого дальність атаки або 0(колізія), або трохи далі(спис, довжина меч і т .п.). До речі, навіть якщо ви не робитимете ближній бій герою, то ворогів із ближнім боєм вам доведеться робити досить часто, бо це один із їхніх основних типів.

Однак одну тему я так і не покрив, хоча вона теж проста - це області поразки і splash (втрата по області) . Це є наприклад у моїй грі Space Rush, Там при знищенні кулі, завдається додаткова шкода в області поразки.

Ось ця сама шкода в області ураження(як при вибуху ярду гармати, наприклад)і буде нам потрібна для того, щоб зробити удар у ближньому бою.

Зауважу, що я запропоную вам лише кілька способів зробити удар у ближньому бою, є й інші і тут багато залежить від вашого типу гри і того, як ви хочете, щоб працювала дана механіка. По суті основних способу зробити механіку три:

  • Область ураження;
  • Постійна шкода кожен тик;
  • Колізія.
Добре, як же зробити бій у ближньому бою у своїй ігри, якщо ми робимо гру з нуля? Проста логіка та простий код.

Цікавий приклад - це взятивихідник моєї гри LonelyDude і подивитися там на те,як зроблений вогнемет. По суті, удар у ближньому бою можна зробити просто як постріл на понад близьку дистанцію, з технічної точки зору.

Вогнемет у цьому сенсі працює схожим чином. Як створювати кулі ви вже повинні знати і як зробити щоб вони летіли в напрям, який вам потрібно (наприклад до курсора мишки), ну так само можна зробити і удар у ближньому бою.

Вся різниця буде в тому, що ми зробимо кулю невидимою, і будемо знищувати її дуже швидко, щоб шкода завдавалася тільки поблизу.

Також тут нам потрібна буде особлива анімація, але цей момент я не особливо покривав, хоча в тому ж Lonely Dude є варіант реалізації анімації удару і стрілянини.

Потрібно помітити, що дана механіка, коли у вас удар у ближньому бою, це просто невидима куля, яка летить недалеко, може підійти для ігор з видом зверху, але для платформера можна використовувати щось інше.

Також тут важливо сказати, що іноді вам потрібна область поразки удару в ближньому бою, ось тоді вам і знадобиться інший спосіб.

основи

Відбуваються дуже прості речі. При атаці ви створюєте область поразки(тут червона чисто для наочності, у грі буде невидима).

Ну і при колізії(зіткненні)цієї області з ворогами(або ящиками і т.п.)ми завдаємо їм шкоди за тією ж логікою як це робиться для куль.

У цій галузі ми повинні завдати шкоди ворогам лише один раз, тому нам потрібно, щоб область поразки існувала мало часу(як один з варіантів).

Тут є два способи і тут вам я раджу почитати ось цю статтю:

За тією ж логікою, що куля не котить одного ворога більше одного разу, можна зробити і удар у ближньому бою. Записуємо ID ворогів укулю(область ураження - hit box). Інший спосіб - це знищувати цю область ураження через 1 тик моментально.

Для цього ви можете в events(події)вибрати post draw(після відмальовки)і написати там instance_destroy()

В цьому випадку область поразки стикатиметься з об'єктами тільки 1 тик - мінімальний відрізок часу і потім відразу знищуватися.

Правда з цим методом іноді бувають глюки, і я іноді роблю шкоду 1/5, а тривалість 5 тиків, це як приклад. Чомусь іноді занадто мало тиків працює дивно і не завжди вважається так, як потрібно.