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

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

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

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

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

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

Я обожнюю UE4

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

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

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

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

Будеркевич Іван

    • Неодмінно! Правда, є ризик навчитися круто так намахувати ігри =)

  • Памятаю на юніті теж кулі робив як фізичні обєкти і штовхав імпульсам, аж поки не виявилось що при великій швидкості вони не детектили колізії з меш колайдерами, прийшлось перейти на лайнтрейси((

    • Теж робив на юніті колись=)
      Цікавий рушій. Але має багато багів =(

​Tencent згортає частину своїх інвестиції в ігрову індустрію

Китайська корпорація Tencent намагається вийти з багатьох своїх інвестицій у ігрові компанії, навіть попри чималі…

18 години

Bungie зробила симулятор побачень Destiny у стилі Dream Daddy, але керівництво було категорично проти

У нещодавньому інтерв’ю, де обговорювали подробиці сюжету оновлення в Destiny 2 під назвою Season of…

19 години

Том Голланд розповів, що поборов алкоголізм

Тридцятирічний Том Голланд зараз на перших шпальтах не лише через очікуваний багатьма фільм "Людина-павук: Абсолютно…

24 години

Українська гра Last Pirates: Die Together увійшла у топ-50 найпопулярніших демо-версій Steam Next Fest

Як ми писали 15 червня, українська гра Last Pirates: Die Together прийшла на цьогорічний Steam…

1 день

Steam Machine виявилася значно дорожчою, ніж планувала Valve

Valve оприлюднила ціну та дату виходу ігрового пристрою Steam Machine — компактного ігрового ПК на…

1 день

Відбувся реліз SAND — кооперативного шутера про святих галичан на далекій піщаній планеті

Кооперативний шутер SAND від львівської студії Hologryph, створений у співпраці з київською TowerHaus, нарешті з’явився в дочасному доступі…

2 дні

This website uses cookies.