Does anyone know how I could use Verse to make it so that a post process effect is only active to players who are in the storm?

I know nothing about Verse, so I have no idea what is and isn’t possible, let alone how to do any of it. With that said, does anyone know how I could make it so that a post process effect is only active to players who are in the storm? I want to make it so that players who are in the storm experience a “glitching” post process effect I made, but I have no idea how to do it. Is it even possible? And if so, would anyone be willing to walk me through how to do it?

Use a sequencer, have it modify the post process volume property that controls the visibility percentage. (Sorry I don’t recall its name off the top of my head)

Be sure visibility is set to instigator in the sequencer, trigger this with verse per player in the storm.

Thank you! Any idea on the specifics of how to do this? Sorry, as I said I know literally nothing about Verse, so if there’s a tutorial or something you could link me to help me with this I would greatly appreciate it

This covers the cinematic sequencer in general:

In your case you are going to create a level sequence by right clicking in the content browser and creating a new level sequence. Then you are going to add your post process volume as an actor in the sequence by pressing the green “+” symbol.

Then add “Blend Weight” by clicking the green “+” next to your post process volume in the level sequence editor. (This is that visibility property I couldn’t remember the name of)

You need to create KeyFrames, create one at frame 0 with your default blend weight (most likely 0.0 for off / none), go a few frames forward and add another KeyFrame, then change the blend weight.

Be sure you right click the “Blend Weight” in the editor on the left and select: Edit Selection → When Finished: Keep State.

Drag a Cinematic Sequencer and a trigger onto your level, in the cinematic sequencer set the Level Sequence to the one you just created, then using direct binding bind Show in the cinematic sequencer to the triggers “triggered” event. Make Certain the cinematic sequencer is set to display for the instigator only and not all players.

I recommend duplicating this entire setup with a level sequence that transitions the blend weight back to zero (KeyFrames are swapped Start at the ending Blend Weight and transition to 0)

When you want to start and stop them using verse:

#Pseudo Verse:
@editable
StartTrigger : trigger_device = trigger_device{}

@editable
StopTrigger : trigger_device = trigger_device{}

ShowEffectForPlayer(InPlayer : agent) : void =
    StartTrigger.Trigger(InPlayer)

HideEffectForPlayer(InPlayer : agent) : void =
    StopTrigger.Trigger(InPlayer)

Only problem I see, and maybe someone else can chime in for this, You need a way to detect when the player is moving into / out of the storm. I don’t see any events for the storm controller you could bind to. However you can get the storms transform with creative_object_base GetTransform after checking IsValid[] of course.

Then in a loop somewhere you could get the player Translations and calculate the distance using: Distance(vector3, vector3) and checking that this distance is < the circle radius meaning the player is inside the storm otherwise outside. Track each players state with a map PlayerStormState : [agent]logic = map{} if needed. (Shouldn’t if you only are interested in a one off response to the event such as effect on/off)

Another possible way would be to periodically teleport an invisible damage volume that is set to cylinder shape and has the same radius as the storm. You would need to scale this show how to match the changing storm circle radius? Possibly by setting scale in a transform and passing the transform into your moveTo vs just a vector3. Then bind to the agentEnters / agentExits events of the damage volume.

1 Like

Thank you so much!!!

Of Course, if you run into an issue trying to get events binded for the storm reply back and we can dig into it more.

I have read the Verse documentation and did’t find any thing to check if the player is in storm. How can we check that?

Probably would look into IsInVolume in damage volume