Performance provides a quick way to preview animations and KeyframeSequences. It delivers precise playback controls and a diverse collection of tools to customize how animations are played.
View keyframes on the timeline and see their duration and when they start
Incredible Rig Customizability:
Anything with an Animator object is supported (R6, R15, Custom)
Roblox-like 360° (X and Y axis) orbital camera to view the rig
Axis guides to indicate camera direction
Rigs can be changed with the “Change” button
Automatic tool fitting support on R6 and R15 rig types (based on Grip property)
Not Officially Supported: Scenes can be added (bundled with a rig) to the viewport
Finding and Playing Animations Is Easy:
Animations and KeyframeSequences can be selected in the explorer and played by clicking the corresponding tile in the window
The “Browse” button lets you choose from a grid of animations owned by you or your groups and play them
The text field displays the current playing animation and lets you choose from all supported animation ID types (Animation, ClimbAnimation, DeathAnimation, FallAnimation, IdleAnimation, JumpAnimation, RunAnimation, SwimAnimation, WalkAnimation, PoseAnimation, EmoteAnimation, MoodAnimation)
Other:
Performance can be used to play local animations or KeyframeSequences in a play-test. Once a KeyframeSequence starts playing in the window, you can copy the ID that appears in the text field and paste it into a script that applies the ID to an Animation object and plays the animation on a rig. Once done, you can load a play-test and the animation, configured correctly, will play.
API access to Performance for playing local animations
This feature helps those who want to create animation pack plugins. It provides a platform for quickly previewing animations users are interested in and lets them easily copy the temporary ID of it into a script so they can try the animation out in a play-test.
You can check if a user has Performance enabled with:
if _G.PerformanceAPI ~= nil then
--print("Performance is currently active.")
else
--print("You do not own Performance or it is currently disabled.")
end
You can prompt Performance to start playing an animation with:
If you’re interested, you can try it out right now by selecting a KeyframeSequence in the explorer and running the following command in the command bar:
A couple of changes have been made in the background to how Performance works.
Among others, this allows messages to be displayed in the output whenever a new update is available so you can get new content, updates, and bug fixes right when they release.
How do you view R6 anims with it?
Also you should make it so animations aren’t looped on the character because it is hard to see short animations like punches
Thanks for the suggestion! You can change rigs with the “Change” button (top-left of the window). If you don’t have an R6 rig in a project already, you can insert one with the Rig Builder widget under the Avatar tab.
I’ll look into some kind of visible touch targets or indicator for the playback buttons. I figured the progress bar and time indicator clearly indicated if the animation was playing or not but if you have a use case where that is not the case I’d be happy to hear!
Playback speed was added in today’s update. (Just after your reply)
The animation object would likely be difficult to track considering every situation. I’ve thought about something similar though, which entailed displaying the name of the animation that’s playing.
Bit confused regarding what you mean by difficulty - what I had in mind was highlighting the animation you clicked from the list of animations in the plugin, to display which one you selected:
Performance works in edit mode and in play-tests. I meant difficult by a possible situation where a user closes a place file and opens it at a later time. There would be no non-hacky way to identify the object they had selected once the game loads up. I hope this clears up any confusion you had!
that’s understandable - if possible, the ability to highlight within the same session would still be useful, even in spite of the limitations when it comes to not saving across contexts.
Sorry about that. It shouldn’t be happening. The widget might be opening, but off-screen where it cannot be seen.
Could you try right-clicking the blank space where there are no plugin buttons and look to see if there is a checkmark next to where it says “Performance” on the list, so we can establish whether Roblox Studio thinks the widget is open or closed. Next, click the plugin button to open/close the widget and right-click to open that list again to see if there is any change.
If there is any change it’s either a Roblox problem or the widget is being hidden somehow. In this case, try restarting Roblox Studio or your computer.
If there is not, could you disable all other plugins enabled, re-open the place file and try opening the widget again? If this solves the problem, there is likely another plugin interfering with Performance. It would be very helpful to have a list of the plugins that were enabled when you were having problems. You can leave them here or PM them to me, whatever you are comfortable with.
I usually only work in one development place, and have noticed that opening it in an empty baseplate place allows me to open the plugin fine - so presumably something in the place itself is preventing opening of the plugin.
Upon further debugging & removing everything from my place file piece by piece, I have found the culprit: the beta feature workspace.SignalBehavior breaks the plugin when it’s mode is set to Deferred. My guesses are the plugin relies on some intricate behavior with event order execution, which is altered due to the change in signal firing behavior.