Question surrounding snapshots use for online multiplayer

We’re doing a PvP online game on unity.

We can divide our players into 2 categories : Ally, and Enemy.
Both generate the same events, like Footsteps, for example. They have the same base SFX, so we don’t have to multiply our event number by 2.

I wanted to add filters to events generated by player labelled ‘Enemy’. So I investigated, and realized that using local parameters on each and every parameters for each event would probably be sup-optimal. It had to be another way of affecting only a part of the event Instances.

So I guessed I could use snapshots, but then again, when I triggered my snapshot Enemy, of course it affected every instances of the event ‘Footstep’ , since it was in the Group Controller affected by the snapshot.

I wanted my player to emit instances of an event A with a filter A, and enemy players next to him to emit instances of the same event A with a filter B.

I wondered, how can I add a filter to affect half of instances of the same Event ?

If I activate a snapshot concerning an event’s group, will every instances of that event be condemned to get affected by the snapshot ?

Thank you for reading ! I’m fairly new to this, and sorry if it has already been answered. Couldn’t find recent topics

As you have surmised, if you want to affect some instances of an event differently to other instances of the event, you must exercise control on a per-instance basis using local parameters inside those events.

However, it is not necessary that you place the filters and other effects you want inside the events themselves. As you’ve mentioned, doing so is inefficient.

Instead, it is more resource efficient (and easier to maintain) to use the parameters in the events to automate sends to different return buses in your mixer, such that the value of the parameter determines which mixer bus receives the output of each event instance. This allows you to place the effects on the return buses.

To use the names from your example, event A should contain a local labelled parameter with two values, “ally” and “enemy,” and a send to the “enemy sounds” return bus in your mixer. When the parameter’s value is “ally,” the parameter sets the master track volume to 0 dB and the send’s volume to -oo dB; and when the parameter’s value is “enemy,” the parameter sets the master track volume to -oo dB and the send’s volume to 0 dB. This allows you to place filter A in the signal chain of the “ally sounds” group bus, into which event A is routed, and to place filter B into the signal chain of the “enemy sounds” return bus.

1 Like

Okay, I see now ! Thanks for the help !

Two last questions :
Since I’ll still have local parameters ‘Ally’ and ‘Enemy’ on multiple events : Is there a built-in FMOD for Unity function that is able to set a parameter for multiple event instances ? Or should I set them one instance by one instance via paramInstance.setValue(value) ?

And is there a way to create Event presets ? Like, if I want every new event I create to come with a send to, or a reverb effect for example ?

Sorry if it’s something you already answered !
Cheers !

If you want your event instances to be able to have different parameter values, you will have to set each event instance’s parameter values individually. Your event instances are all associated with specific characters, so I imagine you’ll simply set each instance’s ally/enemy parameter value immediately after creating it.

Yes. Right-click on an existing event, then select “Add to Defaults” from the context menu. This marks the event as a default event. Default events appear in the “New Event” submenu of the event browser context menu; selecting one of them from that context menu creates a duplicate of the selected default event.

Unlike preset effects and preset parameters, altering a default event does not automatically update the events based on that default event. This difference in behavior is why they don’t use the same ‘preset’ terminology that we use for preset parameters and preset effects.

2 Likes

Thank you joseph !