Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Audio mixers #33816

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Audio mixers #33816

wants to merge 2 commits into from

Conversation

stalengd
Copy link
Contributor

@stalengd stalengd commented Dec 10, 2024

About the PR

Adds the use of audio mixers for in-game audio. Read the details about mixers in the PR to Robust Toolbox.

There are the proposed mixers (Resources/Prototypes/audio_mixers.yml):

  • Music [No volume slider] (let me know if slider is really needed)
    • Ambience
    • AmbienceMusic
    • LobbyMusic
  • Interface
  • WorldSounds
    • WorldOtherSounds [Default]
    • Midi
    • Jukebox

The child mixers volume sliders are visually indented (see media)

Why / Balance

Technical details

Requires space-wizards/RobustToolbox#5554

We should probably start assigning more specific mixers to the different sounds (for example separate mixer for weapon sounds) after this PR, this can be done by passing mixer id to AudioParams.

Important: Entity-based mixers from prototypes problem

This also is mostly copy-pasted from corresponding part in the PR to Robust Toolbox, so you will not find anything new if you read that one.

TL;DR: Either one integration test should be adjusted/ignored, or I need help to come up with a different way to handle entity-based mixers from prototypes.

The concept of "prototyped" mixers conflicts with entity-based mixers in terms of lifetimes.

My first implementation of this was lazily creating mixers for prototype when requested, newly created mixer then stored in dictionary indefinitely. Unfortunately, some SS14 integration tests does not like this idea when any entity creates more other entities than deletes after got deleted.

This implementation creates all mixer entities from prototypes at start of the simulation (check out the funny way how system knows when its time to spawn entities) and when entities flushed. Set of such entities exists separately on client and server though because single-player games may exist and (probably) entities from server may not be sent to the client fast enough. The problem with this implementation is that other SS14 integration test (DeleteAllThenGhost this time) can't handle that deleting all entities on the server leaves mixer entities on client.

So this problem is relevant and PR probably should not be merged like this, either mixers should be implemented differently (but I don't know how at this point) or SS14 integration tests should be adjusted.

Media

image

Requirements

Breaking changes

None (I hope)

Changelog

🆑

  • add: Added "world sounds", "other sounds" and "jukebox" volume sliders to the game settings menu.

@github-actions github-actions bot added size/L Denotes a PR that changes 1000-4999 lines. Changes: UI Changes: Might require knowledge of UI design or code. S: Needs Review Status: Requires additional reviews before being fully accepted S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Dec 10, 2024
@beck-thompson beck-thompson added P1: High Priority: Higher priority than other items, but isn't an emergency. S: Needs Engine PR Merged Status: Requires an existing Robust Toolbox PR to be merged first. T: New Feature Type: New feature or content, or extending existing content D1: High Difficulty: Extensive codebase knowledge required. A: Core Tech Area: Underlying core tech for the game and the Github repository. Changes: Audio Changes: Might require knowledge of audio. and removed S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Dec 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A: Core Tech Area: Underlying core tech for the game and the Github repository. Changes: Audio Changes: Might require knowledge of audio. Changes: UI Changes: Might require knowledge of UI design or code. D1: High Difficulty: Extensive codebase knowledge required. P1: High Priority: Higher priority than other items, but isn't an emergency. S: Needs Engine PR Merged Status: Requires an existing Robust Toolbox PR to be merged first. S: Needs Review Status: Requires additional reviews before being fully accepted size/L Denotes a PR that changes 1000-4999 lines. T: New Feature Type: New feature or content, or extending existing content
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Request: Jukebox volume slider Audio volume sliders should be using auxiliary
2 participants