Звуковая система «Аллодов Онлайн»
DESCRIPTION
Докладчики: Дмитрий Патраков, директор по звуку на проекте «Аллоды Онлайн»; Антон Ольховик, программист команды клиента на проекте «Аллоды Онлайн».TRANSCRIPT
Антон ОльховикПрограммист, департамент клиентских игр
www.mail.ru
Звуковая система «Аллодов Онлайн»
Для чего это нужно?
Цель: дополнение игровой атмосферы
Задачи: воспроизведение и остановка нужных звуков в нужное времяреалистичное и согласованное звучание
www.mail.ru 2
Категории звуковых явлений
Действия (бег, удар, падение)События (скриптовые сцены)Голоса/эмоцииФоновые звуки (ambient)Музыка
Сложные/составные явления(звук от болота, от системы громкоговорителей)
www.mail.ru 3
Типы источников звука
2D — воспроизводится через колонки «как есть»
Имеет положение в пространстве, согласованное с визуальной сценойРаспределяется по каналам в процессе рендеринга звуковой сцены
www.mail.ru 4
Звуковой контент
Необходимость использования аудио-компрессииБольшое количество схожих звуков
Объединение всех вариаций в один элемент
Одни звуки часто включают в себя другие
Использование звуковых банковСобытие (sound event) — комбинация банков + правила воспроизведенияЭкземпляр события — готовый источник звука, имеет положение, направление, громкость и т.д.
www.mail.ru 5
Архитектурные решения
Gfx GUI ... SndПодсистема
нетMiddleware
APIs
нет FMOD
Direct3D DirectSound(Xbox 360,
PS3, iPhone, ...)
Phys
нет
нет
Унифицированная «обёртка» над множеством APIУдобная система «звуковых событий»Готовые средства разработки для звукового дизайнера
Engine
www.mail.ru 6
Необходимый функционал
www.mail.ru 7
Возможность воспроизведения звука
Обработка, микширование
Что воспроизводить
Обработка, микширование
Как воспроизводить
Когда воспроизводить
Audio API
Middleware
Sound Engine
Взаимодействие с ресурсной системой
www.mail.ru 8
Кеширование звуковых банков, подгрузка и выгрузка по мере необходимости
Способ хранения – ZIP-архив с разными степенями сжатия → виртуальная файловая система → отложенная загрузка ресурсов в отдельном потоке
Источник звука запущен, но банк не подгружен → воспроизведение начнётся по окончании загрузки
Короткие события загружаются в память полностью, длинные (музыка, амбиенты) — читаются с диска по мере воспроизведения
Структура движка
www.mail.ru 9
SoundCategorySoundCore
SoundSystem SoundEvent
SoundProject SoundBank
DataProvider
Структура движка
www.mail.ru 10
UI
MoveSfxPlayer
AmbiencePlayer
MusicPlayer
SoundCore
Пользовательские настройки
Содержимое звуковых банков
...Задание положения слушателя, запрос отладочной информации
Создание источника звука, управление им
GlobalStorage
DataProvider
Хранение звуковых событий
www.mail.ru 11
Project
Banks
(описания событий)
(аудио-данные)
(тип источника звука)
Все проекты загружаются сразу, при создании звуковой системы
Банки кэшируются. Когда загруженно максимальное число банков, производится выгрузка неиспользуемых (если таковые имеются)
Event
Управление воспроизведением
www.mail.ru 12
Звук рендерится в отдельном потоке с высоким приоритетом – «запинки» недопустимы
Управляющее воздействие (создание экземпляра события, изменение его позиции и параметров) приходит только из основного потока
Раз в кадр: soundSystem->Update()Все изменения применяются разом
Анимационные плееры
www.mail.ru 13
Персонаж
Состояния:
Бег
Начало прыжка
…
Ключевые кадры:[10, 25, 40]
Звук = startJump
Звук = run
Пока звук играет – храним указатель на него, т. к.:
Нужно перемещать вслед за персонажем
Нужно вовремя остановить, напр. смена состояния, зацикленный звук
Нужно изменять параметры, напр. «тип поверхности»
Музыкальный и амбиентный плееры
www.mail.ru 14
Задержки перед началом и повтором воспроизведения
Зоны на карте
Время сутокАзимут
Таймаут при смене зоныПриоритет трека
Помещения, а также их составные части – отдельные зоны
Пресет реверберацииДополнительные параметры
Протяжённые источники звука
www.mail.ru 15
2D
Антон ОльховикПрограммист, департамент клиентских игр[email protected]
Спасибо!
Mail.RuРазработчик игр и сервисов №1Крупнейший работодатель в отрасли
Работайте у нас[email protected]://corp.mail.ru/career/vacancies/voronezh
www.mail.ru