I´m coming from Wwise, trying to learn FMOD, and i´m wondering how to approach sounds for multiplayer games. For instance, how do you go about sorting local and global sounds, for example UI sounds. Is it something that should be done in Unity or can i approach that in FMOD?
The short answer to this question is that you don’t need to do anything special. Just design sounds in FMOD Studio as you would for a single-player game; provided you set up your listeners and event emitters correctly in Unity, you will never need to filter sounds to only play for some players.
As for the longer answer…
As far as FMOD is concerned, there are two different types of multiplayer game.
In network multiplayer games, each player has their own console or computer, and each such device runs its own instance of the game. These instances communicate over the network, but each one maintains a local copy of the game state.
In split-screen games, all players share a single console or computer, presumably by using different controllers or different sections of a shared keyboard. This one console or computer runs a single instance of the game.
In network multiplayer games, each instance of the game has its own instance of the FMOD Engine. These separate instances of the FMOD Engine do not communicate with each other directly. Instead, each instance of the game issues commands to the FMOD Engine based on the local copy of the game state.
Events that occur in the shared game state - which is to say, which are communicated over the network such that each instance of the game replicates that event in its local copy of the game state - will prompt those individual instances of the game to command their local instance of the FMOD engine to play the appropriate sound.
Events that only occur in one instance of the game (such as a player interacting with their UI) only occur in that instance of the game, and so only trigger sound events in that one instance of the game.
This means there’s no need to “filter out” such sounds on other players’ instances of the game, because those events never occur on those other instances in the first place.
In split-screen multiplayer games, there is only one computer or console that all players share, and only one set of speakers. This means that it is physically impossible to filter the sounds each player hears to only include some of the sounds occurring in the game.
In FMOD, a “listener” is a moveable point in 3D space that you can position anywhere in a Unity scene - and which you’ll usually attach to your game’s camera. It’s used to determine how FMOD events should be spatialized (read: panned and attenuated based on their distances and positions from the listener) in your game.
The FMOD Engine supports having multiple “listeners” for the purposes of determining the spatialization of 3D events, meaning that as long as you attach a separate FMOD listener to each camera in a split-screen multiplayer game, FMOD will handle the panning and attenuation of your game’s 3D events automatically. (The exact details of how it does this are covered in the FMOD API User Manual.)
Does that sound like the information you wanted?