Первый раз, когда мы выпустили игру, не тронув звуковое техзадание, это была симуляция управления гаванью — краны, грузовые суда, маленький прибрежный городок — и звук сбора монеты был синусоидой. Не потому что кто-то так решил. Никто ничего не выбирал; заглушка «блип» попала туда на раннем этапе прототипирования и так и не была заменена — точно так же, как стоковая фотография доживает до готового сайта, если за этим никто не следит. Графика была в порядке: вода, нарисованная вручную, чайки, тёплый причал на закате. А потом вы поднимали грузовой контейнер, и игра издавала звук, будто у флеш-игры 2007 года заканчивается таймер.
Мы вывели сборку на общий экран, чтобы понять, что с ней не так, и потребовалось секунд четыре реального слушания — с закрытыми глазами, кто-то настоял на этом, наполовину в шутку — прежде чем в комнате все согласились: всё это звучит как микроволновка. Каждый звук успеха, каждый щелчок интерфейса — всё синтезировалось на лету, всё сделано из одного и того же тонкого электронного материала, независимо от того, к какой игре это прикреплено. Уютный гаванский городок и киберпанк-шутер издавали бы одинаковые звуки. Вот в чём подвох. Синусоиды не знают, в каком они мире.
Поэтому мы отправились искать настоящее решение, и настоящее решение оказалось скучным в лучшем смысле: перестать генерировать тона и начать записывать инструменты. Не сэмпл-паки, лицензированные откуда-то, не синтезированные приближения, настроенные звучать «тепло» — настоящие инструменты, записанные, сэмплированные по всему диапазону, так что воспроизведённая нота — это нота, которую действительно сыграл музыкант. Мы выстраивали это несколько недель в библиотеку такого размера, что слов не хватает.
| Ощущение игры | Палитра инструментов |
|---|---|
| Приключения | Оркестровые струнные и духовые |
| Уютные головоломки | Щипковые струнные и ударные-мелодические |
| Аркадная динамика | Ударные и бас |
| Эмбиент, медленное развитие | Пэды и клавишные |
Помимо инструментов мы отдельно записали окружающие звуки, потому что миру нужен воздух, а не просто саундтрек:
- Дождь
- Прибой
- Ветер
- Тон помещения
- Гул толпы
Мы вернулись к игре про гавань, имея библиотеку под рукой, и пересобрали её звук с нуля. Плеск воды под причалами, чайки где-то за кадром, а когда вы успешно загружаете контейнер на судно — молоточек, настоящий, записанный при ударе по настоящей металлической пластине, играет ноты, которые раньше были писком. Те же ноты, тот же момент игрового цикла. Совершенно другая игра. Это сравнение — весь аргумент в миниатюре: перезвон, сыгранный маримбой, и идентичные высоты тона, сыгранные осциллятором, не являются взаимозаменяемыми результатами «сделать звук успеха». Это разные продукты, носящие одну и ту же функцию.
Как только библиотека появилась, возникла более сложная проблема: библиотека сама себя не компонует. Инстинктивным решением было бы собрать папку со стоковыми звуковыми акцентами и позволить каждой сборке брать из одной и той же кучи — и мы намеренно этого не сделали. Техзадание арт-директора, которое задаёт цветовую палитру сборки, задаёт и её звуковую палитру, так что компоновка происходит для каждой игры отдельно — детективный нуар и симулятор фермы не получают одинаковый набор инструментов, точно так же, как они не получили бы одинаковый шрифт. Размещение звуковых эффектов следует той же логике вплоть до отдельных объектов: что это за объект, по какой поверхности он ударяется, насколько он большой, какое настроение у сцены. Это та же специфичность, которую мы требуем для спрайта или текста интерфейса — просто применённая к тому, что люди привыкли считать чем-то второстепенным.
И поскольку «нечто второстепенное» — это ровно то, из-за чего звук деградирует, мы не оставили это как стилистическую рекомендацию, которая надеется пережить встречу с дедлайном. Теперь это часть проверки — внутрибраузерная проверка, которая запускается перед выпуском сборки, действительно прослушивает её, и слой мира, который молчит, или эффекты, которые тихо откатываются к голому осциллятору из-за неудачной загрузки сэмпла, проваливают проверку так же, как её провалила бы сломанная кнопка. Это не заметка в документе с ревью, а дефект. Одна из наших собственных сборок недавно была помечена и автоматически исправлена именно за это; механика того, как это работает, описана в Как сборки проверяют себя сами.



