web analytics

«Смертна кара» — щоденник розробки #4

Автор: Будеркевич Іван

Привіт усім! Що ж, наша гра отримала зелене світло, а отже тепер можна повністю присвятити час роботі! І повірте, працювати є над чим. Як і кожні розробники, ми зрештою зіткнулися з потребою переробити значний кавалок гри. У нашому випадку йдеться про повне переписування системи пострілів.

Трішки теорії про невидимі стіни

1111Певен, у іграх ви часто натикалися на “невидимі стіни”, котрі змушують вас тримати обраного розробниками шляху. Дратують вони не самовито, згоден. Та зараз погляньмо яким же чином гравця замикають у меншому просторі, ніж бачить ваше око.  В ігровому світі є Меші та Колайдери. Меш — це видима нами тривимірна модель. Колайдери, або колізії, — це невидимий об’єкт, який симулює фізичні зіткнення. Тобто крізь меш сам по собі ми спокійно можемо проходити, а от колізія — це якраз ота “невидима стіна”. Часто колізія не повторює форму меша. Це буває з різних причин. Наприклад, для того, щоби герой не застрягав. До речі, “застрягнути в текстурах” неможливо, застрягають саме в колізії! Також є триґери. Триґер — це теж невидимий об’єкт, але він не симулює фізику, а реєструє об’єкти, які входять в поле дії триґера. Фактично це така собі позначка, перетнувши яку, ми запускаємо певну подію у грі. Гадаю найпростіший приклад — це знайоме всім місце в NFS Most Wanted, де наша BMW ламається. Певен, всі його знають і багато хто пробував за допомогою чітів перескочити його =) Так от, там є триґер, який спрацьовує один раз, коли ми туди заїжджаємо на початку гри.

Суть проблеми

1111Раніше у нас була досить проста система пострілів. Коли гравець клацав лівою кнопкою мишки, створювалася куля (а точніше сферичний колайдер) в центрі камери. “Кулі” надавався імпульс, внаслідок чого куля потрапляла в ціль, завдавала пошкоджень і знищувалася. Цей спосіб дозволяв враховувати при пострілі земне тяжіння, вітер, дальність польоту та решту фізичних факторів. Та був у нього один недолік. У грі є зони аномалій, де блукає велика кількість зомбі. Ці зони позначені великим триґером. А в триґері кулі знищувалися. Тобто там фіксувалося зіткнення одразу, коли об’єкт створювався. Я не знав, як цього було уникнути, та й ризик був, що таке трапиться в іншому місці. Тому довелося повністю переробити систему пострілів.

Я обожнюю UE4

1111

UE4 чудовий рушій!  Реалізацію пострілів вирішено було робити за допомогою Line trace. Це проста лінія, яка реєструє перетинання її з іншими об’єктами. І що найважливіше, вона не фіксується триґером! Ба більше, лінія до всього видає досить багато інформації. Зокрема, фізичний матеріал об’єкта зіткнення, координати перетину та ще купу всякого. За наявності цих даних, є змога розійтися на повну. Далі нам потрібно реалізувати ефекти від пострілу. Звісно, постріл у воду має інший ефект, ніж влучання у метал. Для цього нам потрібно декілька масивів (масив —це впорядкований набір фіксованої кількості однотипних елементів).Три, якщо точніше: ефекти пострілу, фізичні матеріали та декалі. Кожний елемент масиву має порядковий номер. Нам потрібно просто при кожному пострілі здійснювати пошук по масиву з фізичними матеріалами, знайти, за яким порядковим номером знаходиться даний фізичний матеріал, та поставити відповідні ефект і декаль дірки від кулі  в точці перетину Line trace з об’єктом. Система досить проста, але дієва. Більше того, можна зробити так, щоби куля пробивала певні матеріали. Не певен, чи це потрібно буде, але штука класна!

Замість висновків

Відверто кажучи, на словах воно дуже просто звучить. Але допетрати до таких речей самому деколи важко. Наступного разу будемо розмовляти про інтерфейс.

«Смертна кара» — щоденник розробки #3

TMNT Donatello

Cподобалася стаття? Підтримай PlayUA

На платформі Donatello ви можете підтримати нас як одноразовим донатом, так і оформити щомісячну підписку. Усі наші підписники на Donatello отримують цифрові або фізичні приємнощі залежно від суми донату. Долучайтеся до нашої спільноти!

Підтримати

Останні статті

Тренуємося у CS2 на своєму VPS сервері

Автор: PlayUA

sidata 01

Усі досягнення S.T.A.L.K.E.R. 2 — що потрібно для проходження на 100%?

Автор: Олег Куліков

stalker 2 achievements 03

УСЯ українська музика у S.T.A.L.K.E.R. 2: Heart of Chornobyl (Radio MIX)

Автор: PlayUA

stalker radio

Чорна п’ятниця: найкращі пропозиції для геймерів

Автор: PlayUA

playstation 5 pro

Артефакти та інші скарби Зони у S.T.A.L.K.E.R. 2

Автор: Андрій Присяжний

p.ua.s.t.a.l.k.e.r.2 артефакти

Українська музика в S.T.A.L.K.E.R. 2: від Мозгового до ZWYNTAR

Автор: Андрій Присяжний

s.t.a.l.k.e.r. 2 heart of chornobyl

Apple iPhone 16 Pro Max: занурення у світ нових можливостей

Автор: PlayUA

iphone 16 pro max 02

S.T.A.L.K.E.R. 2, Lego Horizon, Farming Simulator 25 — Порадник Ґеймера: Листопад 2024

Автор: PlayUA

S.T.A.L.K.E.R. 2: Heart of Chornobyl