{"id":4012,"url":"\/distributions\/4012\/click?bit=1&hash=5b9cad3f989520ad358a2237d28d1f12ecdc50cb8452456f27fcbce716b2c8f0","title":"\u041f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u0442\u0435\u0441\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0438\u0435\u043b\u0442\u043e\u0440\u043e\u0432","buttonText":"","imageUuid":"","isPaidAndBannersEnabled":false}

Знакомство Unity с FMOD (по-быстрому, минут пять)

... всё зависит от возможностей команды, компании и проекта. Но давайте упростим и представим. Небольшая команда, подводя разработку проекта к стадии звукового сопровождения, чаще всего использует возможности среды без каких-либо дополнительных решений. В папке assets есть набор звуков и композиций. Часть звуков нужно проигрывать событийно, часть находятся на сцене в связанных настроенных компонентах и прочее.

Событийные звуки, через код, программиста просят проигрывать с учётом изменения pitch в небольших пределах. Особо никто не парится. Всех устраивает встроенные возможности настройки компонентов и Inspector-ом все довольны.

Теперь представим ситуацию посложнее. Компания/команда решает подтянуть звуковой дизайн игры с помощью FMOD. Программист начинает предполагать, как новые условия / требования повлияют на код. Придется переписывать кучу всего... Короче, страшное дело. Тем более видели этот интерфейс FMOD Studio? Управление космическим кораблем.

Для меня было важно ответить быстро на два вопроса:

  • на сколько всё сложно будет программисту?
  • можно ли распределить работу sound designer-а так, чтобы он не имел исходный код проекта? (на тот случай, если будет фриланс)

Итак спойлер. На оба вопроса - ответ да. Т.е. на второй "да", а на первый "да, всё просто".

Идешь на сайт FMOD. Регистрируешься. Качаешь FMOD Studio и unity package.

Устанавливаешь FMOD Studio. Перегружаешь компьютер. Импортируешь unity package в Unity. После импорта, должно появится окно настроек FMOD.

Настраиваешь быстро FMOD Studio в Unity. Идешь простым путем, нам программистам, не нужно даже лезть в FMOD Studio. Задача разобраться, как это работает.

Кнопка "Linking" - вариант "Single Platform Build". Указываешь директорию, куда ты будешь копировать файлы от sound designer, который может быть фрилансером.

Кнопка "Listener" - цель снести с камеры слушатель по умолчанию (компонент Audio Listener) и установить компонент FMOD Studio Listener. Конечно, это можно сделать вручную.

Остальные кнопки - еще проще. Поэтому пропускаю.

Запускаешь FMOD Studio. Создаешь новый проект. Слева Панель из трёх разделов: Events, Banks, Assets. Тебе как программисту, пока нужно знать, что эти три сущности - есть три кита.

Assets - исходный материал, тоже самое, что ты привык видеть в папке звуков проекта в Unity. Events - инструкции, которые ты будешь вызывать, вместо звуков. Можешь представить, что это скрипты от sound designer-а, в которых могут находится десятки вызовов разных звуков, настроек и прочее. Banks - это контейнеры, в которых будет находится сборка Events и Assets.

Создай директорию в Assets и скопируй туда звуковые файлы. Любым известным способом. Если файл помечен как unimported, значит импортируй его командой, через меню.

Из звукового файла сделай событие "Create Event". После чего, в разделе Events появится событие с тем же именем, что и название звукового файла. Переименуй его по красоте.

Затем добавь это событие в контейнер (Bank). По умолчанию при создании проекта, будет один мастер контейнер в разделе Banks. Но ты можешь создать свою структуру и контейнеры...

После того, как Event попал в Bank, можно "билдить!" После этого, ты получишь файлы контейнеров (банков).

Представь себе, что эти файлы тебе передали :) Их нужно положить в директорию, которую ты указал в настройках Linking - FMOD Studio в Unity.

Как только там появятся банки, FMOD Studio в Unity их заметит.

И вот теперь ты готов вызвать Event, который находится в Bank. А задача Event, передать инструкции ядру FMOD Studio, чтобы машина FMOD начала проигрывать звуковые файлы из Bank > Assets. Конечно я упростил, но где-то так, грубо, оно и происходит.

Чтобы вызвать событие, добавляешь компонент FMOD Studio Event Emitter на объект. Находишь нужный Event, указываешь способ запуска и/или остановки события. Запускай игру и слушай.

Для тех, кто не любит читать, можно посмотреть

Моя задача минимум в этой статье надеюсь выполнена. У меня заняло намного больше времени, чем 5 минут, чтобы вникнуть в это, хотя бы поверхностно.

FMOD Studio отличный инструмент для того, чтобы поднять уровень звука вашей игры! Очень легко интегрируется. И вполне не сложно этим управлять из кода. А некоторые вещи даже не нужно кодить! За это отвечать будет уже дизайнер звуков. Например, проигрывание случайных звуков одного вида. Случайный pitch...

Если тебе зашло, рекомендую полистать документацию

Кому будет интересно, то напишу еще одну статью про FMOD, но уже со стороны кода. Как было в проекте и какие варианты, ну и как пришлось поменять для работы с FMOD.

Спасибо за внимание. Поддерживайте и покупайте инди игры.

0
28 комментариев
Написать комментарий...
Духнич Дмитрий
Ответить
Развернуть ветку
3 комментария
BIONID

О, пасиб! Весьма вовремя, буду очень благодарен, если будет ещё статья со стороны скрипта.

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

Эх, что ж, значит будет)

Ответить
Развернуть ветку
BIONID

Ждемс) Пока буду курить маны по фмоду, в меру свои сил

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

Дафай, а мне бы поспать)

Если грубо и пролетая, то там не так уж должно быть сложно. Есть несколько ключевых часто используемых классов. Вот и всё.
Тем более, тем БОЛЕЕ) Есть там даже несколько примеров игровых проектов, включая Celeste. Но я его не смотрел, что там внутри даже не знаю.

https://www.fmod.com/resources/documentation-studio?version=2.02&page=appendix-a-celeste.html

Ответить
Развернуть ветку
BIONID

Благодарочка) Погляжу, спок снов👋

Ответить
Развернуть ветку
Имя Фамилия

А что там у fmod со стоимостью лицензии? Я курил их мануалы по лицензии для инди, но так и не понял, сколько там нулей в стоимости.

Ответить
Развернуть ветку
Exp AR

Там на странице с лицензией есть сноска

Note: Free Indie License available for developers with less than $200k revenue per year, on a small (under $500k) development budget.

Т.е. Если ты разработчик с доходом меньше 200к в год и на разработку игры уходит меньше 500к то используй Free.

Ответить
Развернуть ветку
Raiz
Тем более видели этот интерфейс FMOD Studio? Управление космическим кораблем

Это вы еще интерфейс Wwise не видели)

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

Видел два года назад. Я как увидел объемы инструментов и мне стало страшно как программисту, что придется видимо внедрять много. Но это была ошибка. Поэтому решил написать вводное знакомство и показать программистам, что боятся не нужно.

Ответить
Развернуть ветку
Сергей Чистяк

Слушай, такой вопрос - мне нужно, чтобы в игре в определенный момент, когда игрок прохожит мимо какого то объекта включалась реплика ГГ или звуковой эффект.
Я делаю так:
Add a trigger collider.
Add a Use On Button Activated component.
Add a Dialogue System Trigger set to OnUse. Configure it to start a conversation.
То есть, ставлю тригер, прикручиваю компонент , но проблема - тригер не удаляется, когда персонаж проходит через него, и, если вернуться и снова пройти сквозь тригер, то звук снова проиграет.
Как сделать так, чтобы после проигрывания звука, он удалялся?

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

Если без кода, а через настройки компонента fmod, то так

Ответить
Развернуть ветку
Сергей Чистяк

то есть этот фмод позволяет создавать такие события? Или можно еще как то без него?

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

Можно без него. Через скрипт самого объекта, событие входа в триггер и отключить коллайдер

Ответить
Развернуть ветку
Сергей Чистяк

Спасибо большое) Буду пробовать) Хотя слабо разбираюсь на словах

Ответить
Развернуть ветку
Сергей Чистяк

Блин, со скриптами работать не умею.
Если не тяжело, покажи плиз, как в скрипте это нужно прописать.

Ответить
Развернуть ветку
Сергей Чистяк

нашел как прописать, но не понимаю куда именно это прописывать
GetComponent(BoxCollider2D) .enabled = false
после чего это вставлять, при запуске Game пишет ошибки

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("главный_герой"))
{
GetComponent().enabled = false;
}
}

Ответить
Развернуть ветку
Сергей Чистяк

Выдает ошибку в консоли

Ответить
Развернуть ветку
Сергей Чистяк
Ответить
Развернуть ветку
Сергей Чистяк

Пишут, что это означает, что в проекте уже такое есть с таким же названием, но я не понимаю, что делать

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

У тебя в коде два одинаковых метода.

Ответить
Развернуть ветку
Сергей Чистяк

нашел в другом скрипте такой же код, как твой, похожий тоже с этим же Триггер2Д

Ответить
Развернуть ветку
Илья Ронжин

Вопрос - зачем использовать FMOD? В чем его приемущества в сравнении с другими средствами? Зашел на сайт, не удалось найти информацию.

Ответить
Развернуть ветку
ДЕЛА ИГРОДЕЛА
Автор

Скажу своё мнение, это инструмент для sound designer, который позволяет повысить скорость процесса и качество направления "звук" в проекте.

Ответить
Развернуть ветку
Читать все 28 комментариев
null