Create Animations from KeyframeSequences in live games

As a Roblox dev, it is extremely cumbersome to use/edit animations in their current state.

Workflow
As of now, we have to manually publish each change to an Animation because there are no automated alternatives. Loading animations as web-assets slows down the current workflow, and while it can reduce the amount of memory we’re working with by fetching the data externally from the game, it’s hardly worth the layers of complications it adds to the development process.

If we want to edit any existing animation, we need to hold onto the keyframe sequences anyways or else we have to spend time retrieving them from the Animation instance.
Then after modifying the keyframes, we need to carefully re-publish the animation without overwriting the original. The ‘overwriting an existing animation’ window also has a lot of limitations, so it can slow things down.

Issues
There’s very little benefit to having Animations be a saved asset on the cloud.

  • Tedious to modify an existing Animation
  • Studio Window for overwriting Animations has limitations in how many results it shows at once + search bar can’t filter by name, so overwriting old animations can be a chore.
  • Requires you to store KeyframeSequences instances somewhere so you don’t lose progress since you can’t easily re-aquire the KeyframeSequences from Animation objects.
  • The permission system for sharing animations is very difficult and for little good reason. Moving many animations across projects is an entire process in of itself.
  • Testing Animations across Team Create breaks very easily due to weird restrictions in the permission system that are both unclear and unhelpful
  • There’s time wasted on having them be moderated when they don’t hold information about the rig they will be played on
  • Can’t dynamically create animations at runtime
  • Clutters inventory (with a lot of temporary/unused animations)

Feature
My suggestion is this: let us create Animations from KeyframeSequences in live games.

Currently there’s an API that almost lets us achieve this:
KeyframeSequenceProvider:RegisterKeyframeSequence(KeyframeSequence)

However, this doesn’t work outside of Studio. I’m aware that this probably isn’t as easy as turning on a flag as there’s surely missing functionality. But having this work in live games would reduce a lot of unnecessary workload on the developer.

This wouldn’t be a replacement as much as an additional tool we can use. Even just having them load and play purely client-side would go a long way.

This way we could easily create and modify animation keyframes at a whim and then turn them all into Animations during runtime without having to worry about reuploading animations constantly.

Referenced Posts:
(2017)Running Animations without Uploading
(2016)Allow animation instances to be played -- not just by ID
(2017)Public Animations - #37 by CinnamonLambda

RegisterKeyframeSequence API:

19 Likes

I have this extremely annoying issue where I CANNOT share animations with other games. I had this happening with my friend when I was making custom animations and the game belonged to friends. Just because the animation we used belonged to me, my friends couldn’t see them. But when the animations belonged to my friend, the exact opposite happened, i couldn’t see animations.

Because of this, I had to make a group with my friend and do animation stuff there. It’s really tedious working with animations when they’re on the cloud, and I can’t disagree.

3 Likes

The issue with this is that an exploiter could alter a KeyframeSequence and play that edited animation on their character.
This is probably also the reason why public animations dont exist, so this feature would have to be server side only.

I would still find it useful though.

5 Likes

Exploiters can do that without animation systems, players already have full control of their body. This is not a strong reason to dissuade this suggestion, along with public animations in general.

1 Like

Bumping this because my team needs it a lot. It is quite silly that animations must be cloud assets. In our game it forces us to use a slower luau version of an animator unless we want even more assets for the client to have to load. Not to mention uploading them and putting the id into the object(and updating these animations) is extremely tedious and makes development a chore.

What benefit is there for not allowing us to just use KeyframeSequences?

2 Likes

Yeah this doesn’t make any sense whatsoever, exploiters are a concern if they can affect the game for other clients. This would only be problematic if playing local keyframe sequences auto-replicated - which would be silly

1 Like

Isnt that the case for normal animations though? Im pretty sure exploiters can just insert an animation made by Roblox (or one that is owned by the game creator I think?) and play it on your character, and it does replicate to everyone.

It might be by default, not sure. It’s very simple to workaround though, so it’s not really relevant to this discussion in my opinion