Allow us to make our animations usable in any game by configuring it and add a library section

More or less asking for Inverse Kinematics

We don’t have plans currently to support sharing animations, but it’s definitely something we’d like to support.

You know what confuses me? How are you guys able to lock the use of animations other people’s animations from the library but not audio?

We could make audio behave the same way, but then we’d break many of games which rely on this behavior to use audio created by users other than the creator.

1 Like

While you’re potentially at it please make decals behave the same way.

1 Like

Couldn’t you make it a setting? So that all of the existing (and new) audios start off as “free to use” but can be disabled? That way it would only break a game if the audio owner went out of their way to disable it, not instantly robbing all games of their audio.

It would be an option, yes. There are some problems which are tricky to resolve:

  • Do we allow users to revoke access to an asset? If so, revoking an asset might be used as a weapon to hurt developers who are relying on your asset.
  • Do we support granting access to specific users/groups? Developers may want to share with specific people but not the general public. We could say anyone who owns the asset can use it, but this doesn’t work for groups as they can’t take assets.
  • If we decide to make all existing assets (audio, animations) “free”, developers may be irritated that assets which they explicitly marked as unavailable are suddenly showing up in the toolbox.
1 Like

Well I suppose if they were never free to start with they should have never been available to use in games by other players.

All in all, I can certainly see your points, but I think we should look at the long run here. Roblox is growing rapidly, and copyrights on music and audio are becoming a bigger problem increasingly. People can’t upload audio they have licensing to because others are free to use them in thousands of other games no matter what their settings are.

The audio still belongs to the original creator. It seems like it would be their right to revoke access to an audio that they own, and potentially created or paid for outside of Roblox.

If I had to decide, I would say that this would have to work the same way the animations do for groups now. If a group needs to use an audio, the group will need to create and own the audio. It’s a little bit out of the way, but it doesn’t seem like the end of the world to provide access. Additionally, granting access to specific users is not a feature currently allowed on animations, so I don’t imagine that’s ever been a problem. (I mean, that’s also not a feature in models, which have existed for years.)

2 Likes

Give plenty of time and it shouldn’t be an issue. Three phases:

###Phase 1
All newly uploaded assets follow new behavior. All old assets are flagged to be set to free, and developers are given a full month to mark their assets as private. The develop page should be overhauled at this point so using it is easy, and assets can be batch updated. I don’t think anyone will complain because

  • Assets were never explicitly marked private – private was the default
  • In the long run this increases privacy
  • With the overhauled develop page, configuring assets shouldn’t be much of a hassle.

At the end of this period, audio and decals not marked as private are set to be publicly available. Assets flagged as private remain private.

###Phase 2
Over the next couple of months, Studio gives developers a warning if they use an asset that’s marked as private. They are given plenty of time to find an alternative or upload their own.

###Phase 3
The changes are finalized, and private assets can no longer be used in games where the creator doesn’t own the asset. The only games that wouldn’t have adapted at this point are games that are no longer maintained – the wonderful thing being that the assets they use are likely also no longer maintained, and as such have been marked as free in phase 1. The number of games broken by this change should be minimal, and ROBLOX will now have the power to make whatever changes to assets it deems necessary without fear.

There are some high-level optimizations that can be done in Lua, that just aren’t practical to implement in C++. An ordinary dev shouldn’t be expected to write their own animation system, but there is so much more that can be done when using a custom animation engine.

Level of Detail

My Lua Joints only exist and run when a graphic or sound is requesting them. When the hand parts are swapped out for a low detail version, the skeleton has fewer joints and parts to worry about.

If a character is off-screen or obstructed, it will stop updating and unload, resulting in 0 animation overhead. This optimization can’t be done in the roblox animation system because a script might want to know where the parts are.

Additional assemblies and animation types that sync by using the same animation ‘clock’

I can add more joints too, and sync their animations. I can also sync it with non-joint animations that play sounds, or anything else I want to make.

If it doesn’t move, it doesn’t update

I can set joints to have a static cframe or give them an abitrary Lua function that returns a cframe. This allows my Lua joints to fall asleep.
http://i.imgur.com/IzKmpTh.gif
http://i.imgur.com/4hDJWvc.gif

I can have joints without parts

http://i.imgur.com/DjjhDfA.gif

It can run any type of animation.

Animated hair, animated weapons, mounts, inverse kinematics; anything that results in a cframe, I can do it
http://i.imgur.com/0KIA5Gv.gif

Custom easing styles

My animation systems have had easing styles since before roblox even had an animation system. If I can write it in lua, I can make it an easing style.
2 keyframes:
http://i.imgur.com/FruWWKC.gif
(Groups of joints reuse the same easing result.)

Cache animation results

Once it’s looped through the same transition once or twice, it begins using old results instead of interpolating the same cframes.

Custom animation format and replication

If two completely different animations reference the same cframe, it only replicates that cframe once.

Transform Animation Data

I can mirror animations, or apply any other transformation I might need.

Real-time independent joint scaling

Reliable and Future Proof

Animations that use anchored parts and .CFrame are extremely stable and portable. I can run them in studio without relying on physics or humanoid animation controllers. I haven’t touched this animation system in years and it still works:
http://i.imgur.com/yCbXnbR.gif

C++ runs objectively faster than lua, but custom animation systems are more efficient for me as a developer.

10 Likes

I would argue that users should not be able to revoke access. They should be able to take it off public domain, but users who have taken it should still be able to use it. ROBLOX features shouldn’t be designed to support developer drama and conflicts, much like group payouts. If it ends up being a violation of usage terms like “you need to give me credit for this to use it”, the creator can file a DCMA request through the proper channels.

Groups should be updated to be able to “take” assets. They can already have inventories for audio/decals/etc, so I don’t see why we’d implement something completely different when the foundation is already there. There’d be no need to distinguish between “taken” and “able to use in-game” with the transition I outlined earlier as well.

1 Like

If we’re talking about “taking it” as if it’s in their inventory, I agree. I am moreover referring to the possibility that people are using it simply by the assetid without owning it at all. Either way, however, we’re not talking about drama and conflicts. We’re talking about property and copyrights.

This should not be possible in the first place, and in my earlier post I outlined an elegant solution for phasing this out. Once users are no longer able to use assets without having it in their inventory, they should be able to take an asset and be guaranteed of its usage forever.

This.

So much this.

I wouldn’t mind so if the animator had just a few limitations, I’d be annoyed sure, but I’d still use it. Currently its very restricted and it’s difficult to do some of these optimizations and tricks, if even possible at all, without my own (or tomarty) animation system. I still think hiring an expert to continously work on this instead of an intern every year would help a lot.

How much would we have to pay you collectively to document and open-source it as a sort of animation toolkit? :slight_smile:

Seriously though a near-complete solution like that could be very useful if it was publicly available to play around with, I think it would really help boost development of custom rigs/animations etc.

3 Likes

While uninformative this is very true. Animating with the ROBLOX animator and setting up custom rigs is something I dread every time. I’ve just come back to it after not doing any for a while and I’m incredibly frustrated, here are a few problems:

  • Rigging the character. I spent about an hour looking through different plugins to edit Motor6D’s and in the end found a pretty good one usability-wise, made by @Sharksie however I’d much prefer something integrated into Studio like the new constraint system has. Anyway, the point is it took WAY too long to figure this out and I’ve been making stuff on ROBLOX for like 8 years, how do you expect newer developers to understand it? It’s not even on the Wiki page. @UristMcSparks

  • The editor constantly crashing studio (happened on more than one occasion within the first 5 minutes of trying to animate my new rig) I can’t give you an error because studio stops responding when I move a keyframe to the end of the timeline, which is just one of the things that causes the crash. Other times, the editor breaks thanks to errors I can see in the output, which I’ll make sure to post as a bug report next time. But that’s exactly why I hate using it, it’s always throwing errors and breaking, making me lose everything I’ve just made. It’s not just a one-time 1-in-100,000 incident, it’s ALL THE TIME.

  • Lack of other features. As pointed out by other people in the thread @ScriptOn @BuildIntoGames there aren’t many of them. I won’t post a list since it’s already been covered pretty much.

I know you’ve been saying well we should fix it ourselves and share, but this is one of flagship features in Studio, every game needs animation, every single developer can’t be expected to have to fix/make their own tools because they simply don’t work otherwise.

rant over

This discussion made me think about why we don’t make and submit our own improvements, and why some of us think we shouldn’t.

The reason I arrived at is that it’s too much work. To contribute to the animation editor one has to set up an external text editor, use git to download the animation plugin, test it in studio (which usually requires restarting the place), then submit it back and wait and hope for it to be approved.

It’s not easy to edit and test changes. Initially, the source of the animation editor is completely hidden! If a developer is unaware that the editor is on Github and doesn’t know how to edit plugins installed from the site, they will never make a single change. Not all ROBLOX developers know how to use (or are willing to learn) git either so it’s unlikely for those developers to contribute. Despite its common use among programmers, git is not often used with ROBLOX, so if someone has spent most of their time programming on ROBLOX they may have never even touched git.

Maybe if editing a plugin’s source was easier and maybe if we had better integration with git then we would see more improvements to projects like the animation editor which expect community contribution. I can imagine a sort of ‘Synced Git Folder’ which allows for doing git-related stuff on a model, and having the animation editor run from one of these, visible in studio, to encourage developers to easily make and submit changes.

Last point: it’s not easy to test plugins. If a developers wants to make changes to the animation editor then they have to find a plugin hot swap script or restart the place after every single change. If there was a visible PluginsService, which contained Folders and GitFolders of plugins that allowed for reloading a plugin without restarting the place, then developers would make a lot more contributions to community-sourced plugins.

You’re describing the workflow for most OSS projects, except the part where there’s no fast way to test and debug changes.

I’d feel more comfortable using an animation editor written by people who are competent enough to use Git.

2 Likes

I agree, but I think it’s unrealistic to expect many of the developers on a platform that almost never uses Git to know Git. There’s barely place for it and it barely works well with ROBLOX. ROBLOX tries to streamline everything to work on its own platform, so Git is an outsider to the ROBLOX development workflow. This is a problem both knowledge-wise for developers who don’t know Git, and work-wise for developers that do. If it had some form of integration with ROBLOX, I think it would be more widely used and projects like the animation editor would get more contributions.

I don’t think that Git is the biggest blocker to anyone helping with the animation editor, though. I think Git integration is a neat concept, but making plugins easy to develop is way more important. I’m completely willing to contribute to the ROBLOX Github. I’m not willing to set up a plugin development environment and reload my place dozens of times just to make a few changes and fix a few bugs. The animation editor works well enough that I could have an animation or two done by the time I fix everything I wanted fixed.

Severe necroposting but I still want this. Currently if you want to share an animation you have to upload the animation save in a model and have the recipient export it themselves which is tedious and inane, especially if your model or tool uses multiple animations.

7 Likes