What undocumented cases are you referring to? Playing an animation on a player should be identical to playing one on an NPC.
If I recall, my big problem was the humanoidrootpart - I didn’t realize you needed a humanoidrootpart in the npc and it wasn’t (It still isn’t to my knowledge) documented and was one of the problems that mislead me. AnimationControllers also made no sense and seemed pretty useless. (Why couldn’t the animations just run directly on the humanoid?)
But you don’t want your static models like animated guns or fishes or whatnot to try climb TrussParts, walk around, have a nametag & healthbar, swim in ROBLOX terrain water, jump and fall etc., right?
I guess you’ve figured it out by now, but AnimationControllers are just an empty skeleton for loading and playing animations, in contrast to Humanoids, which comes with a ton more unrelated features. This break-up is due to the legacy setup of animations - so the Humanoid couldn’t just have its animation-specific API removed due to all the dependency from existing code, likely.
I do agree that we need some good tools to create rigs - that’s currently a more complicated matter. But making animations just takes some effort to get into, and then you can make gorgeous animations in little time. Though I haven’t tried MrNelson’s model rigger plugin yet (seems to be popular though)
Fair enough about HumanoidRootPart. I’ll look into that.
If there was just this one feature in Roblox Animation API @zeuxcg, I’d be willing to use the system. An “add keyframe on the go” API. Instead of animations, I want to be able to insert a keyframe that I have created according to the environments of the game which would enable me to make dynamic animations. For example, I want the character to pick something up from the floor, I want to add keyframes such that the player takes that object with its hand not the thin air. It’ll never be the same exact animation twice. I could make swords collide with players with some primitive collision detection and build a nice sword fighting which is responsive where collisions have impact (see the game exanima) and feels realistic. Unfortunately, I’m pretty sure that Roblox won’t be adding this feature but I’m hoping for an answer if it’s even possible or not.
So, is this gonna happen or will animations remain restricted to the uploader’s places?
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.
While you’re potentially at it please make decals behave the same way.
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.
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.)
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.
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.
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.