Frame hitch between Cinematic Sequence Devices playing.

A fix for this that I’ve used is to manually stop the sequence right before the end frame. This way you’re essentially starting the next sequence before the last one finishes.

Try something like this, hope it helps:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Random }

sequence_hitch_fix := class(creative_device):
    
    @editable
    Sequences : []custom_animation_sequence = array{}

    OnBegin<override>()<suspends>:void=

        # Initialization
        # Set the duration of the sequences
        for(Sequence : Sequences):
            Sequence.SetSequenceTime()

        # Loop random sequences
        loop:
            if(SequenceToPlay := Sequences[GetRandomInt(0, Sequences.Length - 1)]):
                SequenceToPlay.PlaySequence()

custom_animation_sequence := class<concrete>():

    # The cinematic sequence device
    @editable
    CinematicSequenceDevice : cinematic_sequence_device = cinematic_sequence_device{}

    # The offset to use for sequences
    PlaybackOffset : float = 0.1

    # Store the duration of the sequence in seconds
    var SequenceDuration : float = 0.0

    # Play the sequence
    PlaySequence()<suspends>:void=
        CinematicSequenceDevice.Play() # Play the sequence
        Sleep(SequenceDuration - PlaybackOffset) # Sleep for the duration of the sequence
        CinematicSequenceDevice.GoToEndAndStop() # Cut the sequence short (somehow this prevents the hitching)

    # Sets the sequence time by skipping to end of the animation and getting the playback time.
    SetSequenceTime():void=

        # Play the sequence and skip to the end frame
        CinematicSequenceDevice.Play() 
        CinematicSequenceDevice.GoToEndAndStop()

        # Set the sequence duration as the current playback time
        set SequenceDuration = CinematicSequenceDevice.GetPlaybackTime()
1 Like