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

  • Lots of crashed for simple tasks (moving keyframe, deleting keyframe, etc.)

You mean animation editor. You should file issues with repro steps, or even better just fix them and submit a PR! As mentioned, it’s open source.

  • Custom rig support is overly complicated (still haven’t figured out how to use it)

As far as I know the editor is completely rig-agnostic but we should have a tutorial showing how to use it with custom rigs. cc @UristMcSparks

  • Uses motors which can sometimes be inaccurate, skip frames, etc. (could be fixed, haven’t checked recently)

Please file any bugs like this. @EchoReaper filed one - we’ll fix it.

  • Hard to implement with NPCs (wiki has a terrible explanation/example of it)

I never found it hard really - but cc @UristMcSparks. Also, do you have specific suggestions for improvement?

  • Breaks literally almost every update

This is false and you know it.

  • Cannot share animations with other developers (hence thread)

This is related to some anti-exploit measures we’ve taken. I don’t really think they are very relevant any more but we need to discuss whether we can undo them.

  • Cannot interpolate transparency/size/other properties

Yeah, this is unfortunately the case - will probably stay that way for a while. Don’t have a good solution here.

  • No sound support

You can play sounds (and any other effects - like particles) using keyframe reached events. I agree that ultimately we’d need something more integrated.

  • API and implementation is stupidly confusing

Care to explain how?

  • Cannot take raw animation data (without using anything hacky)

Why do you need this?

  • Saving animations takes over a minute (or more)

Please create a separate thread with this as a bug and we can get Studio team to investigate.

  • The editor doesn’t support the ability to work on animations together

Yes, this is correct. I am not sure what the use case for this is - can you give an example? (sounds, meshes, images all have the same issue).

  • Very little interoplation types (no custom equations either)

Are there types you’re missing? Custom equations are very hard to provide without dramatically reducing the performance but we can easily add new types if you think current types are lacking.

  • No part dependency

What do you mean?

  • No in/ou/inout/outin interp. support

Documentation - Roblox Creator Hub - is this what you mean? Or do you mean something else?

  • Must have humanoid/torso/humanoidrootpart to animate

This is not true - there’s Animation Controller for that. Or do you mean to edit the animation? Not sure what restrictions animation editor places on the rig, but same as above - it’s open source, hopefully easy to fix?

6 Likes

I’m not sure if the editor allows you to play animations in reverse; the API surely does. This is probably easy to add. What do you mean by “supports anchored parts”? Animations only animate motors between parts, so I guess if both parts are anchored you wouldn’t be able to use it; if one is you might.

“Doesn’t support playing in reverse” Play so that animation finishes instantly, and Stop (playtime). I did this with equip/unequip animations and it worked out well

“Doesn’t support anchored parts”
This. I want to animate doors/etc

Responded to this in reply to @BuildIntoGames

I appreciate the system for small games but I don’t see any good reason why it should be used for something large scale. The performance benefits mean nothing to me when it’s so difficult to use and even implement.

I’m not sure what specifically is difficult to use and what the difference is between use and implement - I’m imagining you’re talking about the editor? I’m sure the editor can use usability improvements. I’m sure we’ll accept patches. Also all APIs the editor uses to upload animations are public, you can even make an alternative editor that uses the same animation system.

Here’s two reasons why using ROBLOX animation system/editor is good:

  1. You benefit from the work we are doing on it

  2. You can share the work you are doing with the rest of the community in the form of patches to animation editor that we’d merge in (preferably) or separate plugins that developers can install.

Of course if your needs are far removed from the feature set we provide (e.g. if all of your animations are procedural spring-based, like in PF), then it doesn’t matter much and you’re on your own.

There’s this tendency that we see to have every developer who works on the animation editor to do a ground up rewrite. I believe current editor is at its third iteration, with every iteration redoing everything. I’d much rather see patches that incrementally make it better.

The way big opensource projects work (and closed-source too!) is there’s this codebase that has certain design/flow in it. And there’s this target that a certain developer is trying to reach, for example to add some important feature - and sometimes it requires large-scale changes in the codebase. The problem, then, that is almost part of the job description, is to segment your change in bite-sized pieces, so that every piece can be independently reviewed and merged without replacing it wholesale. I’m not familiar with the code of animation editor that much but I’d imagine at this point it’s past the time where it requires ground-up rewrites, and at the point where all usability improvements can be that - improvements, that are gradually submitted.

Of course, as mentioned above, you’re also free to make an alternative plugin - it’s up to you. The most beneficial route for the community, I believe, is to keep improving the existing editor.

What I usually do is having the main part of my animated rig stay anchored. The rest is unanchored, and able to move freely while still being locked in place by the main part. Same goes for when you anchor the character’s HumanoidRootPart.

Example: Flying building found in Temple of Memories [Voice Chat] - Roblox (needs to click buttons hidden around the map)

On a related note: Animation collision bug

I’ve contemplated that, but I wasn’t sure what sort of adverse effects that would have, so I opted not to do it. If I anchor-hacked every static object I wanted to animate in my game, who knows what potential issues it would cause.

1 Like

If I’m correct, the intense part comes from interpolation in CFrames, not x. I don’t think running a function that says function(x) return x^4 end would be so intensive.

Also can we actually create new keyframes on the fly? I’ve heard about it but never seen it done.

I think the reason nobody wants to work on the current editor is because of how scary it is. I’d probably be able to write 3 editors in the time that it’d take me to understand, analyze, and map out the old code in the editor.

There’s also the more obvious reason - why help my competition or whatnot. I think this could be solved by hiring an intern which works on this (which is what you’ve been doing to my understanding). The fact that it gets rewritten so often is a sign that it wasn’t written well enough the first time. There’s a common denominator there. Maybe someone in charge of the editor overall has strange requirements so all the interns have a hard time writing it or something, I don’t know. I’ve never seen someone rewrite elegant and functional code just because.

I think the best option would be for roblox to contract someone. Pay them a couple million robux and have them focus on it. Make sure it’s someone who knows a lot about it and isn’t just doing it for money. I’m not saying me in specific or anything, but people like AxisAngle and Tomarty (I think he may have worked on the editor already, don’t remember) come to mind. Then give them a liason who does things like fix bugs and add small features that the expert hired animation guy points out. I don’t think anyone wants to do all this work for… basically free. Yeah it may benefit them but so what? They spent all that time and now everyone gets free benefit. It’s selfish but it’s human nature.

tl;dr

Just let us put a simple lerp function for x in.

It likely keeps getting rewritten because whoever writes it doesn’t do a good enough job for the next guy to easily edit it.

Maybe consider hiring one of the experts here to do the editor justice and have an administrator talking with him constantly so that the expert can point out flaws and bugs and the admins can fix it on roblox’s end.

Edit: I think at the very least giving credit to developers for freely doing this would be nice. That’s more of a corporal roblox type of potential issue, though.

1 Like

You’re forgetting that the interfacing between C++ and Lua is pretty slow. Another alternative for custom equations is to build something in C++ that can parse formulas from strings and then evaluate them, but that’s also sub-optimal compared to built-in styles because those would just be compiled C++ methods

Not interested in this attitude, sorry. If you want to make tools and systems for your game and not share - feel free to.

I think the best option would be for roblox to contract someone.

Yes, of course - we develop these tools internally. They are in the open and there are many people who ask for more parts of ROBLOX to become open-source and we are changing more and more builtin systems, both on the client and Studio side, into open-source Lua. So if you (not as in personally you) really think you have solid ideas on how to improve animation editor - contribute.

If I’m correct, the intense part comes from interpolation in CFrames, not x. I don’t think running a function that says function(x) return x^4 end would be so intensive.

C++ → Lua → C++ transitions are really expensive.

3 Likes

An incredible amount of open-source software gets built by people solving issues that they care about and then contributing their solutions to the community at large. A lot of humans don’t behave like you think they do.

9 Likes

The changes I had wanted to make would have drastically altered the scope of the ROBLOX animation editor. To name a few:

  • Set up IK for joints
  • Ability to move connections between parts instead of parts (e.g. move elbow instead of upper/lower arm)
  • Create GUI controllers for animations (e.g. slider for how open/closed a crane claw is)
  • Store metadata (like controllers) in animation model published to ROBLOX so that they’re loaded whenever they’re imported back to the editor
  • Dynamically add/remove parts during the playing of the animation (e.g. new magazine during reload)

All of these can be done with ROBLOX animations, but may or may not be too specific enough for the official animation editor, and there was no guarantee that PRs that change the scope of the official editor this much would be accepted, so this became a project separate from the official editor. I made sure to build it off of ROBLOX animations, but building on top of the official editor wasn’t a good option.


There was also the issue of modularity. The official editor isn’t easy to extend because the whole thing is packed into essentially two scripts: the 800-line GUI handler and the 6000-line main script responsible for everything else. Fulfilling my needs took precedence, so the choice between spending a significant amount of time learning the inner workings of that wordcode wall before even being able to modify it and starting from scratch was an obvious one. If it had been modularized I may have decided to use it as a base instead of starting from scratch:

I’m here’s as a Devils advocate. You were discussing how nobody wanted to do anything.

All I’m saying is “hey as a developer at roblox this is honestly what I’m seeing”

I would love to help roblox in any way I can. I just don’t have time. The reasons I list are why I think most people don’t add on.

Sure - I don’t quite buy that these are the reasons, I think it’s more like ROBLOX community doesn’t embrace the “sharing is good” as much as they could, but not necessarily for rational reasons. It’s like when I ask people whether they have thought of using somebody elses A* module the usual response is “I guess I just wrote my own” - in Unity ecosystem what you do first is you find a plugin on asset store.

I am not trying to convince you personally into switching to our animation system or to share your work to be clear - everybody has their own reasons and there’s never enough time. I personally used to care way too much about code I write for myself, and these days I’m way more towards the “I want to spend my time to help other people out” side.

Ah.

The A* thing would be used by me if the voxel size wasn’t so big, just a heads up.

Would be nice to be able to sell animations as an asset (eg. like a t-shirt for robux).
And have the availability to use that earned robux for DevEx.

2 Likes

Bear in mind that most of us are students, so there’s value in writing our own algorithms for learning.

The community still has a lot to learn about standing on the shoulders of giants. It’s hard for the animator to get better when it keeps getting scrapped and rewritten from scratch.

I think the issue is lack of a good rigging tool. I can’t imagine using the editor would be any easier or harder with a non-humanoid rig, the problem is likely making the rig in the first place.

@BuildIntoGames I’m not sure what you mean here. What are you specifically trying to do that is difficult? Using animations on NPCs? Writing AI?

It took me a solid 2 weeks to figure out how to get it to work because the wiki was really vauge about it. To my knowledge, the wiki page hasn’t changed since then.
(More specifically, the animationcontrollers implementation was pretty different compared to running animations on players, and it has very specific undocumented use cases)

What undocumented cases are you referring to? Playing an animation on a player should be identical to playing one on an NPC.