Audio Dispatcher for DOTS by Sniveler Code

від

у

Audio Dispatcher for DOTS від Sniveler Code

https://ift.tt/H4u6tsh

Високопродуктивний, потокобезпечний міст для відтворення звуків AudioSource безпосередньо з Burst-компільованих ECS-завдань. Особливості: пула Zero-GC, розумне перехоплення голосів та відстеження циклів без затримок головного потоку.

Архітектура та продуктивність:

  • 100% сумісний із Burst: Ініціюйте звуки з будь-якого завдання (Job) або системи.
  • Без виділення GC: Повністю попередньо виділені пули об’єктів для як одноразових, так і циклічних звуків.
  • Жодних затримок головного потоку: Подвійне буферизування забезпечує, що головний потік ніколи не чекає на працівників ECS.
  • Оптимізовано під кеш: Структури AudioEvent явно упаковані до 32 байтів, що дозволяє помістити рівно дві події на кожну лінію кешу CPU.

Особливості:

  • Пріоритетне перехоплення голосів: Автоматично повторно використовую найменш гучні AudioSources, коли пули досягають максимальної місткості.
  • Тіньове відстеження циклів сутностей: Прикріплюйте циклічні звуки до рухомих сутностей. Система автоматично зупиняє звук, якщо цільова сутність знищується.
  • Незалежний від TimeScale: Використовує AudioSettings.dspTime, щоб тривалості звучання обчислювалися коректно навіть під час ефектів уповільнення руху.
  • Зручний Builder API: Чистий, ланцюговий синтаксис для ініціювання звуків.
  • Підтримка AudioMixer: Направляйте звуки у різні групи мікшера (SFX, Music, UI).
  • 3D просторовий звук: Повна підтримка Spatial Blend, Min/Max Distance та кривих затухання.
  • Автоматично згенеровані константи C#: Позбавляють від пошуку за рядками та помилок за допомогою стабільних Hash ID.

Ініціювання стандартного звуку Unity з чистого ECS відомо як складне. Audio Dispatcher вирішує це елегантно.

Audio Dispatcher for DOTS — готова до використання система моста аудіо, орієнтована на дані. Вона дозволяє вашим Burst-компільованим завданням викликати, переміщати та зупиняти керовані компоненти AudioSource, не торкаючись Managed Heap або зупиняючи головний потік.

Як це працює:

Замість того, щоб примушувати головний потік чекати завершення ваших завдань, система використовує архітектуру команд подвійного буфера. Ваші системи з високою частотою (наприклад, кулі або вибухи) записують події, вирівняні по кешу до 32 байт, у безблокувальну чергу. Присвячений Burst-компільований «Мозок» обробляє ці події, керує логікою пулінгу та передає головному потоку чистий буфер команд для виконання.

Ідеально під будь-який жанр:

Незалежно від того, чи будуєте ви величезний RTS, хаотичний Bullet Hell чи динамічний шутер, цей інструмент забезпечить масштабованість аудіо разом із кількістю сутностей.

Зручний для розробників:

Вам не потрібно писати шаблонний код. Використайте включений Fluent API для виклику звуків безпосередньо всередині вашого IJobEntity:

AudioID.EXPLOSION.Shot(position).Volume(0.8f).Apply(writer);

Ключові моменти:

  • Чисті архетипи: Циклічні звуки (наприклад двигуни танків) слідують за вашими сутностями за допомогою «Shadow Tracking», тобто ваші основні геймплейні сутності залишаються незмінними та щільно вміщуються в пам’ять.
  • Розумне перехоплення голосів: Якщо ваш аудіопул заповнений, система не просто обрізає випадкові звуки. Вона обчислює пріоритети та автоматично замінює найтихіший або найдальший звук.
  • Стабільні ID: Ідентифікатори Audio генеруються як стабільні хеші. Перестановка вашої аудіобази ніколи не зламає ваш код.

Ціна $0.00

HI-FI News

через найновіші пакети Unity Asset Store http://www.unity3d.com/

23 квітня 2026 року о 16:25

April 23, 2026 at 04:25PM


Коментарі

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *