Militsioner - Система шагов и звуки поверхностей
Йоу, это Дима из TallBoys. Я занимаюсь разными аспектами в разработке Милиционера, в том числе и звуком.
Мы решили начать работу над звуковым дизайном как можно раньше. Такой подход позволяет в процессе экспериментировать и даже находить новые механики и идеи, которые мы вряд ли бы смогли сделать используя “немые” прототипы.
Система звуков поверхностей
Сейчас я занимаюсь настройкой звуков для системы шагов — это часть стелса в игре. Основная идея заключается в том, что разные поверхности издают разный уровень шума. Громкие шумы могут привлечь жителей близлежащих домов.
Мы вдохновлялись Thief: The Dark Project. Рекомендую попробовать, для 20-летней игры стелс ощущается даже более имерсивным, чем во многих современных тайтлах.
Например, шаги по металлу звучат громко и слышны на большем расстоянии, чем обычные шаги. Некоторые поверхности, наоборот, заглушают звук.
Следующим этапом мы планируем добавить взаимодействие с поверхностями не только игроку, но и объектам. Как идея — постелить ковер, чтобы незаметно подкрасться.
Звучит интересно, но и не без вопросов, например мы сейчас не знаем какое свойство можно дать опавшей листве. С одной стороны, её можно сделать шумной, но есть обратное мнение: любая листва воспринимается как бесшумная поверхность. Скорее всего мы попробуем разные варианты на прототипах.
Если у вас есть другое мнение, нам было бы оно очень полезно, если вы им поделитесь в комментариях.
Как технически устроены шаги
Йоу-йоу, это Алексей из TallBoys. Я пишу систему шагов. Звуки шагов созданы в FMOD — это звуковой движок который мы используем. Мы программно изменяем параметры типа поверхностей и скорости игрока. Поверх Дима добавил косметические звуки, вроде шуршания ткани штанов или застежки на молнии. Было бы классно в будущем изменять звук в зависимости от инвентаря игрока, например в кармане могут звенеть подобранные ключи или мелочь.
На мой взгляд, система уже достаточно комплексная, но идеальных вещей не существует, так что постоянно приходится её дорабатывать. Например недавно я вывел все параметры для разных поверхностей в отдельную таблицу, в которой можно удобно выставлять их радиус и громкость.
Сами шаги вызываются буквально под ногами игрока и имеют свою физическую репрезентацию, которую НПС и слышит в игре.
Анимации камеры
Бонусом я сделал синхронизацию качания камеры, чтобы анимация совпадала с шагом. Этот элемент требует полировки. Сейчас он работает через модуль Unreal Engine — camerashake. Но его очень сложно идеально синхронизировать. Это проявляется при игре на геймпаде, где скорость игрока изменяется плавно стиком, а сейчас это выглядит плохо из-за десинхронизации скорости и анимации качания. Мы думаем решить это через перенос качания из кода на анимации камеры, над которыми мы имеем больше контроля. Ну а так, перед нами стоит цель как можно ближе подобраться к качеству анимации Dishonored 2.. пожелайте нам удачи 💀
Звуков для прыжка и приземления пока нет, поэтому мы вызываем обычный ивент шага.
Обычно мы стараемся концентрироваться на игровом опыте, но иногда вкладываемся и в оформление, потому что визуал игры не раз сильно менял нам восприятие, особенно на тестах. Поэтому мы постоянно балансируем, между прототипной и красивой реализаций разных механик.
Город
Йоу-йоу-йоу, Дима снова здесь. Чтобы адекватно оценивать разные звуки игры и примерно представлять как всё микшировать, я подготовил черновую версию эмбиента города. Сейчас он выглядит очень просто: несколько слоев шума реального города, интенсивность которых меняется от времени суток в игре.
В идеале мы хотим приблизиться к такому варианту, в котором эмбиент собирается из внутриигровых событий, которые отражают игровую ситуацию. Например, сейчас в любой точке города игрок может услышать прибывающий поезд и скоординировать свои действия.
Из косметических деталей для 2д слоев эмбиента города я добавил небольшое панорамирование и обрезание частот в эквалайзере, для имитации объема. Эту идею я подсмотрел в примерах от FMOD.
В реальности звук обязательно имеет свой источник в пространстве. Меня всегда смущало статичное звучание эмбиента в играх при вращении камерой. Наш подход стоит дешево, но звучит дороже.
Зоны реверберации
Чтобы лучше вписать звуки в окружение используются зоны с разными характеристиками реверберации. Это такой набор параметров фильтра, пропуская через который звук приобретает нужных характер соответствующий помещению. Например в узких переулках, пустых помещениях появляется специфичное эхо.
В некоторых местах может немного странно звучать, так как пока отсутствует roomtone — эмбиентный шум характерный для разных помещений.
Немного про звук поезда
Мы постоянно упарываемся на деталях поезда, это наше слабое место. Кстати, мы уже выпускали недавно ролик о том как он сделан технически:
Кстати, чтобы сэкономить время и понять, как все будет звучать, я часто набрасываю варианты звука, используя мои записи, сделанные в поездках на местных электричках.
В FMOD изменяется параметры скорости, нахождения игрока внутри или снаружи, а так же дистанции от источника звука.
Для поезда мы решили использовать два ивента: один более детальный с большим количеством параметров, когда игрок вблизи и второй — упрощенный, для оптимизации, когда игрок далеко. При удалении поезда мы плавно смешиваем эти два ивента.
Сейчас нет звуков открывания дверей, тормозов и пр. из-за переработок кода поезда. Во время разработки всегда что-то ломается — мы привыкли 😿
Ну все, со звуками города вроде понятно, остался только 👮♂. Когда он говорит трясутся ли окна (трясутся) , дует ли ветер от его слов, срабатывают ли сигналки на машинах? Об этом мы расскажем в следующих девлогах.
Так же Милиционера всегда можно добавить в «вишлист» в Steam и найти нас почти во всех соцсетях, где мы постоянно делимся обновлениями - ищите @mytallboys
Ещё есть видеоверсия девлога, она немного другая. Ролик на английском, но доступны русские субтитры.