Перейти к основному содержимому

Звуковое ядро

Not (yet) implemented feature

Некоторые функции, описанные в настоящем документе, более не поддерживаются, либо начнут поддерживаться в будущем.

Звуковое ядро - объект движка предоставляющий низкоуровневую реализацию основных понятий и операций с предоставлением более высокоуровневого доступа только к необходимым функциям использования звуков. По структуре игровых ресурсов, все звуки содержаться в /gamedata/sounds/

Поддерживаемые форматы файлов

Поддерживаются wav и ogg форматы файлов, последний является предпочтительным так как поддерживает сжатие с минимальными потерями.

Объекты звукового ядра

2d звук (фоновый) - звук, который не имеет позиции в пространстве и воспроизводится у слушателя в голове, может позиционировать между ушами слушателя.

3d звук (пространственный) - звук, который имеет позицию в пространстве и как правило имеет владельца (тот кто издает этот звук). Позиционирование между ушами слушателя осуществляется автоматически в зависимости от данных слушателя и звука.

Инстансы - копии объектов звуков, которые загружены только статически. Инстансы значительно экономят оперативную память по сравнению с обычными копиями, что позволяет создавать их больше множество. Инстансы могут воспроизводится вне зависимости от основного объекта. Доступ к функциям инстансов значительно ограничен по сравнению с другими звуками, это обусловлено их основным предназначением - они должны проигрываться с минимумом настроек.

Набор звуков - объект содержащий ссылки на инстансы звуков, который может проигрывать эти инстансы. Основное предназначение проигрывание рандомного инстанса для разнообразия звуковых элементов (например набор звуков шагов по асфальту).

Методы загрузки звуков

Статическая (полная) загрузка - весь файл загружается в память единожды, что уменьшает количество свободной памяти. При статической загрузке объект звука может иметь инстансы.

Динамическая (потоковая) загрузка - файл подгружается по мере воспроизведения, значительно экономит оперативную память. При потоковой загрзке объект не может иметь инстансы, потому что звуковой буфер рассчитан только на единоличное проигрывание определенного отрывка звукового файла.

Режимы воспроизведения

Простой режим - звук проигрывается как есть.

Режим проигрывания с задержками - звук проигрывается на основании настроек задержек. При вызове функции воспроизведения, ей передается массив миллисекунд задержек для воспроизведения, где:

  • Нулевой элемент массива означает количество миллисекунд задержки перед воспроизведением;
  • Первый элемент массива означает количество миллисекунд воспроизведения звука;
  • Второй элемент массива означает количество миллисекунд задержки после достижения предыдущего значения;
  • Аналогично первому элементу;
  • Аналогично второму элементу;
  • И так далее.

Каждый элемент локален, то есть указывает количество миллисекунд начиная от текущего места.

Пример массива: {1000, 700, 1300}

  • 1000 миллисекунд до воспроизведения с момента вызова функции;
  • 700 миллисекунд звук будет проигрываться, затем остановится;
  • 1300 миллисекунд звук не будет проигрываться а затем запуститься проигрывание.

Основная идея воспроизведения с задержками заключается в синхронизации звуков и анимации посредством настройки задержек. То есть, чтобы не подстраивать анимацию под звук или звук под анимацию, достаточно указать массив задержек воспроизведения.

Режим воспроизведения с задержками позволяет:

  • Экономить место в звуках, так как не надо делать задержки в самом звуке;
  • Быстро настраивать синхронизацию звука и анимации.