Від дизайну до імплементації: гайд зі створення ігрового аудіо

Всім привіт! Мне звати Гліб Пекуровський, я обіймаю посаду Sound Designer в Kevuru Games. У цій статті я хочу поговорити про роботу саунд-дизайнера та створення аудіо для ігор.

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

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

Але помилково вважати ігрове аудіо виключно творчим інструментом, оскільки хіба що найпростіші ігрові проєкти можуть обійтися без залучення саунд-дизайнера в процес розробки. Найчастіше задачею саунд-дизайнера в ігровій сфері є не тільки створення звукових асетів і/або музики, але також їх інтеграція у ігрові рушії (Unity3D, Unreal Engine, CryEngine, Godot та ін.) та їх подальше налаштування відповідно до ігрових механік і інтерактивності.

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

  • Озвучення персонажів (людей, тварин, монстрів, механізмів тощо) та їх анімацій;
  • Створення просторового звукового оточення (наприклад, шум лісу, вітру, дощу, фонового шуму приміщень);
  • Створення звуків управління інтерактивними елементами користувацького інтерфейсу (простіше кажучи, звуки UI).
  • Розробки логіки та механізмів інтерактивності звукових елементів.

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

Наведу деякі приклади інтерактивності аудіо у відеоіграх:

  • Спільне для багатьох ігор: зміна музичного супроводу при переході з однієї локації в іншу, зміна звуку кроків персонажів на різних поверхнях, зміна обробки звучання голосу персонажів на відкритому просторі та, скажімо, в печері тощо.
  • Система відслідковування у League of Legends чи Dota 2, в якій гра голосовим повідомленням сповіщає про ті чи інші події на ігровій мапі.
  • Дихання Еллі у The Last Of Us. Характер звуку змінюється в залежності від того, чи вона біжить або ходить, чи поранена вона і наскільки, чи є поруч вороги і чи вони її помітили.
  • Погодні звуки у The Witcher III. Звукове оточення є складною системою із взаємопов’язаними елементами, наприклад звук і характер вітру може змінюватися в залежності від локації, часу дня чи ночі, наявності дощу.
  • Так званий «радіус жаху» кілерів у Dead by Daylight: вони відрізняються показником відстані, на якій сурви будуть попереджені про їх наближення характерним звуком стукоту серця. Водночас, при використанні деяких скілів і в різних ігрових ситуаціях цей показник може змінюватися.

Чудово, коли серед девелоперів на проєкті є такі, що мають досвід інтеграції аудіо і розуміються на API звукових рушіїв FMOD чи Wwise (про них дещо пізніше), але у більшості випадків значну частину роботи із налаштування звукової інтерактивності і адаптивності бере на себе аудіо-команда, консультуючись чи об’єднуючи зусилля із девелоперами в процесі роботи.

Власне, найрозповсюдженіша послідовність роботи наступна: створення аудіо-контенту (музики чи звуків) у аудіо-редакторі — його інтеграція в FMOD чи Wwise — подальша імплементація в ігровому рушії. Для простіших ігор другий етап може бути пропущений, бо ігрові рушії володіють достатнім для них аудіо-функціоналом.

Саунд-дизайн в проєкті Undead Blocks

Деякий час тому відбувся реліз бета-версії Undead Blocks, гри в жанрі First Person Shooter, сеттингом якої є світ після зомбі-апокаліпсису. До проєкту я долучився достатньо пізно, але в мої задачі увійшло створення всього аудіо-контенту для неї, тобто написання музики, створення звукових ефектів та їх інтеграції в ігровий рушій Unity 3D.

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

  1. Запис звукових елементів або накопичення готових звукових асетів зі сторонніх джерел.
  2. Комбінація, обробка, накладання різних звукових елементів та їх об’єднання в один фінальний ефект.
  3. Завершальна обробка звукового ефекту для надання йому певних технічних характеристик та покращення якості його звучання.

Існує широкий спектр програмного забезпечення, що використовується для саунд-дизайну. В професійному середовищі вони мають загальну назву DAW (Digital Audio Workstation), також в користувацькому побуті їх називають «секвенсори». Кожна з цих програм, хоч і володіє власним набором функцій, але може виконувати всі необхідні для саунд-дизайну задачі, тому вибір середовища для роботи є питанням смаку та звички. Моїм же основним DAW є Cockos Reaper.

Окрім DAW для саунд-дизайну необхідні також звукові плагіни, які або є частиною самого DAW, або встановлюються окремо. Різні типи плагінів використовуються для унікальних задач, а найбільш необхідними видами звукової обробки є такі:

  • Equalizer — частотна корекція;
  • Compressor — корекція динамічного діапазону;
  • Time-stretching — розтягнення або стискання в часі;
  • Pitch-shifters — змінення висоти основного тону звуку;
  • Reverb, delay, chorus, flanger — додавання копії звукового сигналу із затримкою в часі, або, простішими словами, просторова обробка для надання ілюзії об’ємності, додавання ехо або інших елементів;
  • Distortion, overdrive, clipping — різні види ефекту перевантаження;
  • Restoration plugins — плагіни обробки аудіо для відновлення, очищення тощо, різних видів звуків або голосових діалогів.

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

Приклади деяких типів звукової обробки

У своїй сукупності використання такого набору інструментів дозволяє змінити звук до невпізнаваності. Наприклад, розповсюдженою практикою є використання звуків достатньо милих тваринок, таких як морські котики, тюлені чи папуги, для створення озвучки найжахливіших величезних монстрів.

Але перейдемо ближче до мого власного досвіду.

Детально розповісти про створення і інтеграції всього аудіо-контенту Undead Blocks не видається можливим і надто цікавим, тому я зупинюсь на декількох прикладах.

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

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

Подальша інтеграція в FMOD та Unity 3D

Але попри те, що ігрові рушії в основному володіють непоганим нативним аудіо-функціоналом, та для великих проєктів його може виявитися недостатньо. Тому для вищезгаданих налаштувань часто значно зручніше і ефективніше використовувати аудіо-рушії, які допомагають саунд-дизайнеру у більш вільному налаштуванні та інтеграції звукового контенту в проєкт. Це окремий тип звукового софту, так звані audio middleware. Двома найвідомішими middleware аудіо-програмами є Firelight Technologies FMOD та Audiokinetic Wwise, чиє використання дає саунд-дизайнеру майже безмежні можливості і простір для творчості.

Інтерфейс FMOD. Налаштування логіки звуку перезарядження гвинтівки в Undead Blocks

Серед деяких прикладів задач, які допомагають вирішувати ці програми, варто виділити:

  • Управління варіаціями звукового ефекту для підвищення його реалістичності та уникнення так званого «ефекту кулеметної черги»;
  • Гнучке налаштування рандомізації гучності та висоти основного тону звуку;
  • Налаштування часової варіативності звучання ефекту (наприклад, якщо звук зграї птахів має звучати X разів у випадковому часовому інтервалі в діапазоні від Y до Z секунд);
  • Управління просторовими параметрами звукового ефекту (наскільки далеко в ігровому світі його чутно і за яким законом спадає гучність при віддалені від його позиції), а також зонами розповсюдження звукового оточення;
  • Налаштування переходів між різними звуковими оточеннями (наприклад, коли персонаж переходить із шумної вулиці в тихе приміщення);
  • Обмеження копій одного звукового ефекту, які можуть звучати одночасно;
  • Параметризація звукових ефектів (наприклад, зміна звуку кроків при зміні типу поверхні, по якій ходить персонаж).

Таким чином, middleware програмне забезпечення набагато спрощує задачі, які інакше не можна було б досягти без використання значної кількості програмного коду. Водночас, в багатьох випадках без програмування аудіо-задач все одно не обійтись. Але оскільки ці програми надають доступ до власного API, також існує можливість управляти ними через програмний код всередині рушія для забезпечення потреб ігрової логіки.

А тому, імпортувавши записані звуки зомбі в FMOD, я нарешті почав інтегрувати аудіо в Undead Blocks.

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

Звуковий івент атаки зомбі із мульти-інструментом, що містить 16 варіацій звуку

Після цього необхідно було навчити Unity 3D відтворювати саме цей звуковий івент при анімації атаки нашого зомбі. Для цього було написано невеликий C#-скрипт, в якому я описав функцію PlayZombieAttack(), що відтворює звуковий івент атаки. Потім треба було поставити на таймлайні анімації атаки мітку, що каже «Хей, Юніті, ану-ка в цей момент роби те, про що я попросив в функції PlayZombieAttack(), будь ласочка». Тепер ця анімація озвучена, і кожен раз в момент атаки звучить випадковий звуковий ефект із 16 створених.

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

Імплементація звукового івенту атаки в Unity 3D

Наступним завданням стало створення звукового оточення для ігрової мапи. Власне, глобальних звукових оточень на карті два: зовнішнє (шум вулиці, поривчастий вітер, звуки віддаленої перестрілки) та внутрішнє (шум електрики в домі та загальний ембіанс кімнат). В FMOD було створено звуковий івент, що містив обидва звукові оточення та логіку перемикання між ними завдяки параметру DeadhouseAmbienceSwitcher, який може приймати значення Outdoors та Houses, відповідно, для вулиці та внутрішніх приміщень. У випадку, якщо гравець із вулиці заходить всередину дому, то спрацьовує тригер, що перемикає значення цього параметру із Outdoors на Houses, і навпаки. А це, в свою чергу, вмикає плавний кросфейд між двома звуковими оточеннями.

Налаштування звукового оточення вулиці, внутрішніх приміщень та логіки перемикання між ними

Варто зазначити, що обидва звукових оточення працюють в режимі 2D. Іншими словами, їх гучність і просторові характеристики ніяк не змінюються в залежності від положення гравця і ігрової камери. Це оптимальний спосіб для інтеграції фонової музики та загального звукового оточення, але для реалістичної звукової картини використання тільки 2D-звуків недостатньо, оскільки на мапі багато об’єктів (палаючі бочки, дерева, холодильники із напоями і т.д.), чиє звучання містить просторову 3D-інформацію. Тому також було необхідно створити та розставити на ігровій мапі відповідні точкові звукові 3D-івенти, а також налаштувати їх просторові характеристики, наприклад, на якій відстані гравець перестає їх чути і за яким законом гучність спадатиме від максимума до мінімума.

Розташування звукових 3D-івентів на ігровій мапі

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

Отже, музичних тем у грі три: вступна (коли відтворюється відео-інтро гри), основна (у main menu), та музика екрану завантаження перед появою ігрової мапи. Подібно до описаного вище сценарію, у FMOD був створений звуковий івент із трьома музичними темами та параметром MusicSwitcher, чиє значення реагує на зміну екрана гри, а також налаштований плавний кросфейд. Окрім того, в грі є також фонова геймплейна музика та джингли початку та кінця ігрового раунда, але вони існують кожен в окремому звуковому івенті і викликаються з програмного коду.

Налаштування трьох музичних тем гри та логіки перемикання між ними

Напевно, найважчою задачею була інтеграція так званого ефекту audio occlusion, що полягає у врахуванні звуковим івентом об’єктів та геометрії, що знаходяться між джерелом звуку та гравцем. Щоб описати доцільність цього ефекту, можна взяти приклад з реального життя. Візьмемо три сценарії:

  1. Ми вільно почуємо іншу людину, якщо обидва знаходимось недалеко на вулиці.
  2. Якщо ж ми знаходимось поруч в приміщенні із відкритим вікном, а інша людина — на вулиці, то ми все ще її почуємо, але дещо приглушено.
  3. А якщо вікно зачинити, то іншу людину ми почути вже майже не зможемо.

Для імітації подібного ефекту мною був написаний C#-скрипт, алгоритм роботи якого наступний. Між кожним зомбі та гравцем ігровим рушієм прораховується по 11 різноспрямованих зелених променів (звісно, в самій грі їх видно не буде). Якщо промінь натикається на перешкоду, він перетворюється на червоний, а звук зомбі стає трохи більш приглушеним. Чим більше червоних променів, тим приглушеніший звук. Через велику кількість таких променів, алгоритм дозволяє враховувати також об’єкти складних форм, на кшталт стін з отворами, коридорів тощо. Технічно приглушення звуку було реалізовано через параметр у звукових івентах, при збільшенні значенні якого сильніше спрацьовував фільтр високих частот і сам звук ставав трохи тихішим.

Принцип дії ефекту audio occlusion

Цей допис описує лише невелику частину задач із інтеграції аудіо, які були виконані для Undead Blocks. Поза кадром залишились, зокрема, такі великі пласти роботи як войсовери персонажів та звуки зброї. Водночас, сподіваюся, в мене вийшло описати сукупність задач, які виконують саунд-дизайнери в ігровій сфері. Дуже добре, коли в компанії працюють декілька саунд-дизайнерів, що мають досвід у різних типах задач, тому можуть доповнювати одне одного. Чи якщо хтось із них має більшу схильність до створення звукових ефектів, а інший до їх інтеграції, але за необхідності можуть замінити одне одного чи розподілити різні ігрові проєкти між собою.

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

На завершення

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

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

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному5
LinkedIn

Схожі статті



Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Як багато у Вашій роботі займає кодинг?

Це дуже сильно залежить від проєкту. На найбільшому моєму проекті кодити не доводилося взагалі, бо з нами працював девелопер, який мав досвід із API FMOD.
А от в Undead Blocks свого часу довелося багато кодити, щоб напрацювати фундамент, але потім вже не було необхідності робити.
Якщо по всіх проєктах в середньому, то думаю десь 30% часу, але це достатньо умовно

Крута екскурсія до майстерні ігрового саунду.
Окрема подяка за наочні приклади.
Прикольний інсайт про метаморфози голосів милих тваринок у роздери-душу-крики хтонічних монстрів, можливо, допоможе поглянути на деякі босфайти під новим, несподіваним кутом.
Шкода, що історія створення музики для гри таки вийшла за рамки допису. Було б дуже цікаво.
P.S. Мабуть, незрівнянні відчуття, коли на автора озвучки зомбі йде той самий зомбі і кричить таким знайомим голосом. Віртуальний звуковий допельгенгер :)

Дякую дуже за приємний коментар!
В плані хтонічних монстрів особливо виділяється серія Dark Souls, оскільки там саунд-дизайнери обрали нонконформістський підхід: замість стандартних монструозних гарчань і ричань, боси звучать дуже дискомфортно і хтонічно, але настільки нетрадиційно, що природу звуку важко впізнати.

І так, Ви праві, при роботі над Undead Blocks я постійно чую, як на мене нападають десятки копій мене самого. :)

Дякую, дуже цікава стаття! Особливо про audio occlusion

Підписатись на коментарі