Привет, Хабр! Меня зовут Андрей Довгало, я — Senior Sound Designer в команде Tanks Blitz.

Когда речь заходит об оптимизации звука, первым делом смотрят на целевую платформу и её лимиты. Но что, если ваш проект — это онлайн free-to-play MMO-экшен, который выходит на PC, macOS, iOS и Android, ежемесячно обрастает новым контентом и в него одинаково комфортно должно играть как на мощном гейминг-компьютере, так и на слабом Android-смартфоне в метро?

Задача звукового дизайнера в таких условиях превращается в постоянный поиск баланса между качеством и производительностью. Сегодня я расскажу, как мы решаем эти задачи в проекте Tanks Blitz — бесплатном многопользовательском танковом экшне 7 на 7 с множеством фановых режимов.

Мой опыт на проекте — три года. Достаточно, чтобы не только поддерживать наследие, выстроенное на Wwise предыдущей командой, но и развивать его в условиях постоянного роста игры. Выделю три ключевых принципа нашей работы.

Принцип 1: Глобальное разделение SoundBanks — «отталкиваемся от слабейшего»

Поскольку самый широкий разброс в производительности происходит между PC и мобильными устройствами, мы генерируем два основных пакета SoundBanks: Мобильный (Android/iOS) и ПК (Windows/macOS).

Базовой точкой отсчёта для нас является Android как платформа с самым скромным «железом».

Лимиты «сверху»:

  • Мобильные: максимум 35 voice instance.

  • ПК: до 128 voice instance.

Кодеки и битрейт:

Тип конвертации также подбираем под Android-устройства. В 90% случаев используем дуэт:

  • ADPCM — для коротких и частых звуков (выстрелы, взрывы, UI).

  • Vorbis — для музыки и всего, что на ПК и iOS.

Детальные настройки sample rate и bitrate — динамические и зависят от важности контента. Например, для ADPCM: базовые звуки UI сжимаем от 16 до 22 кГц, музыка — до 36 кГц, стрельба и взрывы — до 44 кГц.

Лайфхак: Многие в Unity обходят ADPCM стороной из-за жёстких артефактов, но в Wwise этот кодек работает гораздо лучше и значительно снижает нагрузку на CPU. Однако финальная проверка на слух обязательна! Был случай, когда новый звук начисления монет при sample rate 16 кГц превратился в звук рассыпающегося риса. Пришлось для этого конкретного события выставить 44 кГц.

Дополнительные меры:

Стриминг: Всё, что длиннее 2 секунд, стримится для разгрузки оперативной памяти. Исключение — часто триггерящиеся события (например, фрагменты звука гусениц), где частые обращения к диску убивают FPS.

Kill Voice: На одном игровом объекте обычно устанавливаем лимит от 3 до 7 голосов. Превышение редко заметно на слух, а исключения — килы, стрельба, боевые UI.

Принцип 2: Дробление банок — загружаем только нужное

Весь звуковой контент тщательно разделён между множеством SoundBanks, порядок загрузки которых прописан в YAML-конфиге игры.

Преимущества:

  1. Экономия памяти. В ангаре не загружаются звуки взрывов, а в бою — фоновые треки меню.

  2. Контроль роста. Постоянный прирост контента легко отслеживать: видно, какая именно банка «поправилась» после обновления.

  3. Управление временным контентом. Звуки для ивентов (Новый год, 9 мая) помещаются в отдельные банки, которые после окончания акции просто отключаются, удаляя ненужные данные из сборки.

 Принцип 3: Укрощение ежемесячного контента: вариации vs здравый смысл

Каждый месяц игра получает новые механики, карты, режимы и скины. Без контроля звук рос бы в геометрической прогрессии. Наша задача — оценивать: нужны ли событию художественные вариации, а иногда — нужна ли ему озвучка вообще.

Кейс: «Ледяные великаны»

В 2024 году появилась ветка танков с уникальной механикой подвижных бронелистов (открытие/закрытие). 8 танков × 2 события = 16 потенциальных звуковых файлов плюс уникальная озвучка командира — более 130 фраз.

Решение: Отказаться от вариаций звуков открытия/закрытия (оставив только runtime-изменения вроде питча и громкости). Механика имеет кулдаун в 7 секунд, поэтому повтор одного звука произойдёт минимум через 14 секунд, что в бою будет незаметно. Так мы сэкономили значительный объём, оставив художественную ценность.

Кейс: «Конструктор» карт

Для озвучки локаций мы создали библиотеку тематических звуков: ветер (лесной, песчаный, вьюга), фоновые шумы (поезд, птицы, завод) и т.д. Новая карта собирается из этого набора как конструктор. А для уникальности добавляются 1-2 эксклюзивных элемента: треск льда на Ледниках или голос космического компьютера на карте «ПЭПТ». Это позволяет сохранить стилистическое единство и избежать дублирования контента.

Вывод: Оптимизация — это искусство лавирования

Оптимизация звука в live-проекте — это постоянное лавирование между художественной ценностью и математикой. Жёсткие лимиты в бою заставляют искать креативные решения, которые потом можно с лихвой компенсировать в тематических ангарах или режимах.

Главное — не бояться принимать прагматичные решения, постоянно тестировать на целевых устройствах и помнить, что даже для «супер-лоу Android» можно найти свою золотую середину, выдавая максимально качественный звук.

Если остались вопросы, с радостью отвечу — пишите в комментариях.

Комментарии (0)