How to apply a snapshot to only certain event instances

Hi,

I have a specific case that I can’t really figure out how to solve. I’m assuming I’m coming at it the wrong way.

Imagine I have a multiplayer spaceship fighting game, with a bunch of different ship engines, and there are 8 players in a match. What I want is a powerup that, when triggered, kicks in a flanger effect on the engine. However, because it could be distracting, I only want this to be audible for the player who triggers the powerup.

What I initially did was create a Return with the flanger, and with a snapshot, conditionally send the Engine group to that Return when the powerup was active (and only if the powerup was triggered locally). However, as you might expect this has the added effect of sending all currently playing Engine events to the flanger, not just the main player’s, which sounds weird.

Is there any way to use a parameter to scope what events a Snapshot applies to? Ideally I’d just add a “IsLocalPlayer” parameter to all my Engine events, make sure that’s set, and then somehow, when the snapshot triggers, have it only function on events where that parameter is 1.0. Or, is there any other way to kick to kick in an effect on multiple Events (ideally on their group) that doesn’t involve adding the actual effect/logic to 50+ Events?

Thanks!

You say “I only want this to be audible for the player who triggers the powerup.” Does this mean your players are playing on different machines, and hearing the game through different speakers? If so, then each machine would normally have its own copy of the FMOD Studio system running locally, rather than a single system streaming audio to each player’s machine. With FMOD running locally, you can simply ensure the relevant change in game state only takes place on the machine of the player who you want to hear it.

On the other hand, if you are instead making a multiplayer splitscreen game where all players share the same set of speakers, and you want only one engine event instance to be affected by the effect, it is indeed possible to do what you want without giving each engine event its own flanger effect:

  1. Place a send to a return bus in your project’s mixer that contains the flanger effect in the event.
  2. Automate the volume of that send on a parameter such that it only sends an audible signal when the parameter has certain values.
  3. Automate the volume of the event’s master track volume on the same parameter such that it only outputs an audible signal when send is not sending anything to the mixer.

This will result in each event instance routing its signal to the bus containing the flanger, or not, depending on the value of the parameter in that specific event instance.

You also mention needing to duplicate this functionality over multiple events. You can do this more easily by using preset effects: A send can be made a preset effect, and all effects based on a preset effect in your project use the same property values and automation. However, if you choose to do this you will have to automate the volume of a gain effect instead of each event’s master track volume, as it is not currently possible to make a master track’s volume fader a preset. (You can even combine the send and gain effect into a single preset effect chain, if you intend to only ever you them in conjunction with each other.)

Hi Joseph,

My problem is that say I’m playing a game with 3 other AI spaceships, who are all using the same Engine event. I have a snapshot set up with the send like you said. When I kick off that snapshot though, the snapshot applies the effect to all audible Engines, not just “mine.” So that means that if the idea is to just start flanging my Engine, it would apply that flanger to all Engines because the snapshot, as far as I can tell, can’t be scoped to just apply to certain event instances. What I would want is to still hear the other 3 Engine events normal/spatialized, while I hear mine flanged.

My apologies for being unclear: There is no way for a snapshot to control only specific instances of an event. You will have to use local parameters, and set the values of those parameters only for the specific event instances you want to affect. I described a method of doing this without unnecessary duplication of effects in my previous message.

Thanks for clarifying Joseph, I get what you’re talking about now. Thanks, I’ll give that a shot!