Обновление 6.1 добавило в игру не только новые материалы, например хардкорный режим, но и устранило целый ряд ошибок. В их числе – некоторые затруднения со звуком, досаждавшие вам чуть ли не со дня выхода The Division®2: задержка или отсутствие звуков во время стрельбы, искажения различных звуков или полное их исчезновение.
Мы решили подробно рассказать вам о том, как наши звуковики разбирались с этим крайне запутанным делом на протяжении нескольких месяцев.
Обновление данных на PS4
У PS4 есть одна хитрая способность: она загружает «базовый» образ с игровыми ресурсами, а затем последовательно устанавливает на него дельта-обновления. Такой подход позволил резко сократить размер обновлений, но, чтобы игра успевала вовремя загружать звуковые ресурсы, они все должны находиться рядом в образе.
Мы обнаружили, что обновления для PS4-версии на протяжении нескольких месяцев постепенно отдаляли группы звуковых ресурсов друг от друга. Из-за этого упала скорость чтения данных при загрузке звуков. Мы не заметили это затруднение на наших рабочих машинах, потому что каждый раз собираем новый образ с игровыми ресурсами. Разработчики не наблюдали смещения ресурсов – это ощутили лишь наши тестировщики и игроки.
После некоторых обсуждений мы решили провести A/B-тестирование в нашей лаборатории и получили неопровержимое доказательство того, что дельта-обновления замедляют потоковую загрузку звуковых ресурсов. Тогда мы изменили принцип сборки обновлений, чтобы система каждый раз модифицировала все звуковые ресурсы вне зависимости от того, изменились они или нет. Из-за этого обновления стали чуть больше, зато теперь звуковые ресурсы всегда сгруппированы в одном месте.
Фрагментация памяти
Подчеркнем один важный момент: The Division®2 использует гораздо больше звуковых ресурсов по сравнению с первой частью. Перед командой стояла непростая задача, ведь количество оперативной памяти на консолях текущего поколения не изменилось. Более того, фактически на звук оставался даже меньший объем памяти, чем в первой части, поскольку персонажи, анимация игрового мира и фоновые процессы потребовали больше ресурсов.
Чтобы использовать отведенную нам память по максимуму, мы очень активно загружаем и выгружаем звуковые ресурсы по ходу игры. Если выделенный объем памяти заполнен до отказа, то, чтобы добавить новый звуковой ресурс, мы должны выгрузить старый. В The Division®2 нам приходится делать это вдвое быстрее по сравнению с первой частью.
Чтобы лучше понять принцип распределения памяти, представьте, что в начале игры она выглядит как большая открытая автостоянка, где все свободные места плотно заняты транспортом. В какой-то момент стоянку покидает автобус, и его место занимает малолитражный автомобиль. Теперь, если на стоянку приедет другой автобус, он уже не сможет встать на это место, ведь часть пространства занята автомобилем. Новому автобусу придется встать в другом месте, и стоянка будет заполнена уже не так плотно, как прежде. В итоге количество доступных стояночных мест сократится. Этот процесс ухудшения качества называют «фрагментацией памяти».
Всякий раз, когда Snowdrop выделяет и освобождает память, специальная система следит за его действиями и пытается предотвратить фрагментацию. Однако нашими звуковыми ресурсами управляет специальная промежуточная программа, и она работает чуть иначе. Она бы сочеталась с нашим движком, выделяй он специальные «стояночные места» в памяти для всех типов данных, но мы используем более современный динамический распределитель памяти, и с ним она дружит плохо. Например, через несколько часов игры может получиться так, что после смены оружия оно будет стрелять беззвучно, потому что приложению уже некуда загрузить необходимые звуковые ресурсы для нового оружия. В памяти произошла фрагментация. Единственный способ решить затруднение – при запуске игры выделять особое «стояночное место» для звуков и передавать его системе управления ресурсами промежуточной программы.
Microsoft Spatial Audio и Dolby Atmos
Мы стали одной из первых компаний, применивших технологию Microsoft Spatial Audio. Эта технология не создает трудностей сама по себе, но, как оказалось, далеко не все производители звуковой периферии для Windows 10 были готовы поддержать нас. К примеру, мы столкнулись с ситуациями, когда целая линейка звуковых гарнитур не воспроизводила звуки в игре при включении Dolby Atmos через Spatial Audio. При этом они без проблем работали в обычном стерео.
Мы протестировали множество устройств, но, к сожалению, никто не мог предугадать, что именно это сочетание технологий вызовет затруднения у некоторых моделей гарнитур. Это произошло из-за того, что у некоторых компаний не было нашей игры, а у нас – их гарнитур.
Мы постарались исправить этизатруднения еще во время закрытого бета-тестирования, но некоторые гарнитуры по-прежнему отказывались дружить с Microsoft Spatial Audio. Мы приложили немало усилий, чтобы устранить эти неполадки, - в частности, опубликовали временное решение и разрешили игре перезапускать аудиосистему при выходе из клиентского окна и возвращении в него.
В августе вышло обновление прошивки для Xbox One, слегка увеличившее нагрузку на центральный процессор при обработке Microsoft Spatial Audio. Поскольку The Division®2 полностью задействует все мощности этой консоли, даже столь незначительное изменение ухудшило воспроизведение всех объемных звуковых эффектов. Это решение далось нам нелегко, но ради удобства игроков мы отказались от Microsoft Spatial Audio на этой платформе и вернули обычный 7.1-канальный объемный звук.
Упреждающая загрузка ресурсов
The Division®2 постоянно загружает и выгружает ресурсы, создавая большую нагрузку на подсистемы всех платформ, особенно консолей. Система ввода-вывода не всегда справляется с такой нагрузкой. Мы должны поддерживать оптимальную скорость чтения данных с жесткого диска, поскольку игра загружает не только звуковые ресурсы, но также анимацию и другие файлы для множества фоновых процессов. Малейшая задержка при загрузке ресурсов, иногда составляющая какие-то миллисекунды, может вызвать снижение частоты кадров, рывки во время анимации, рассинхронизацию звука и другие затруднения.
Мы внесли ряд изменений, но они не всегда помогают – очень многое зависит от платформы, на которой вы играете, а также возраста вашей консоли и жесткого диска. Эти затруднения не возникают при запуске игры на консолях для разработчиков, поскольку они работают в иных условиях, чем консоли, купленные в магазине. Поэтому все же не следует рассматривать такого рода затруднения как рядовые ошибки, ведь дело здесь не в программном коде, а, скорее, в надежности и возрасте аппаратных средств.
Иногда при чтении данных возникает пиковая нагрузка, и в такие моменты нужно учитывать, какие из ресурсов важнее. Чтобы система загрузки работала как положено, мы определяем приоритетность ресурсов. Мы активно сотрудничаем с командой балансировки над расстановкой приоритетов, решая затруднения не только со звуком, но и с текстурами. Например, чтобы игра вовремя подгружала текстуры, когда вы входите в подвал. В противном случае вы можете оказаться посреди пустоты.
Эта расстановка приоритетов частично связана с упреждающей загрузкой ресурсов, чтобы игра считывала необходимые данные еще до того, как они понадобятся. Примером упреждающей загрузки ресурсов является эпизод из первой обучающей операции, когда игрок слышит первый минометный залп. Без упреждающей загрузки вы бы услышали взрыв снаряда с сильной задержкой, составляющей несколько секунд. Разумеется, когда вы проходите «коридорный» эпизод или смотрите катсцену, игра всегда знает, что нужно загрузить в кэш. В открытом мире, где может возникнуть любая ситуация, предсказать, что сейчас может понадобиться, не так-то просто.
Планы на будущее
Благодаря настраиванию упреждающей загрузки ресурсов, усилиям внутренних тестеров и вашим сообщениям об ошибках мы устранили несколько затруднений со звуком в обновлении 6.1. Но работа над ошибками продолжается, поскольку в игре еще остаются затруднения, для решения которых необходимо учесть множество переменных. Из-за этого у вас во время игры иногда все же могут пропадать звуковые эффекты.
Спасибо всем, кто присылает нам сообщения об ошибках, помогающие выявить неполадки. Пожалуйста, старайтесь указать как можно больше деталей, в том числе где и когда вы столкнулись с затруднениями со звуком. Если вы обнаружили неполадки, связанные со звуком, сообщите о них на форуме поддержки или обратитесь в службу поддержки Ubisoft.
/Команда разработчиков The Division