Animator plus | Custom, optimized animator

I think it’s inappropriate to get rid of this thing. It won’t do anything. Unless it worsens readability. I am currently working on updating the module

I have updated the module to the second version

You are acting like it was readable in the first place???

And how won’t it do anything it is removing unnecessary lines of code you had for no reason

2 Likes

In fact, yes, for me it is in second place after productivity, I think many people agree with me. Still, the second most important function of the module is to give the user the opportunity to edit it, and in order for this opportunity to be, it is necessary that the readability be good. In my opinion, this is very convenient when, instead of 10 lines of code, I replace it with a single function with a “talking name”. Well, like, for example, I could create all the types right inside the main module, but this cumbersome code doesn’t make sense in the context of animation. The situation is quite similar here.

SRP - the principle of OOP, which means that each object should have one responsibility. A function called “pose interpolation” code should not be responsible for the interpolation method.

Maybe my memory is failing me, but there is also an ISP principle that literally says that too “fat” interfaces need to be divided into smaller and more specific ones

But that is the only place where you use the function so why not just handle everything in the same place?

1 Like

And the Easing module had so much unnecessary parts to it

Besides Why would you need to create an entirely new module just for it to be used once?

2 Likes

“Even if the smoothing function is currently used only in one place, this does not mean that it will always be like this. That is why it is important to follow the principles of good design, such as the principle of openness/closeness (OCP) and the principle of sole responsibility (SRP)”

That’s what one person told me, I think he’s right. In general, if performance does not suffer, then of course I will give my voice in favor of readability, even if it requires more lines of code.

In general, for me personally, it is just convenient to adhere to all the principles at once, and not just some. Well, like, it’s more convenient this way

Didn’t you just say readability was second? And besides, where did you get the “performance does not suffer” part? Did you make a benchmark?

Because it just can’t suffer.
The cost of importing and calling functions from another module is negligible, literally, the memory cost for this is no more than that of some “print” function. I’m sorry I didn’t answer right away, I had trouble articulating my thoughts.

1 Like

Metatables suck… You might observe that I try pretty… | by Elttob | Medium

This might be helpful

1 Like

Maybe you’re right. But link is not loading, XD

1 Like

Tonight I will work on the possibility of “creating plugins” And actually creating them. The first thing I’ll do is add a Pause and Resume function. Why in the form of a plugin? I don’t want to clog up my module with unnecessary functions. (Still, my module is intended to completely repeat the work of the official animator, and not add its own functions)

I tried to do rootMotion recently, but failed because I didn’t understand how to implement it at all

I don’t think you should make root motion by yourself. Simply, motors6d already exist. All you need is just apply tweens on the C0 of a specific motor depending on the keyframePoint (or how is it called). Motors6D already have root motions. Why reinvent the wheel then?

1 Like

Either I didn’t understand you, or you misunderstood me. RootMotion = track the humanoidroot at the moment of animation. (There are many uses for this)

does it support Animation Event :thinking:

1 Like

Yes, I just fixed the function:GetMarkerReachedSignal, it returns the Value of the marker.
Also, I actually added this signal in the typing so that there would be hints.

1 Like

This is a great module and I am really excited to use it. I attempted to implement it into my game and I keep getting this error
Screenshot 2024-11-04 164803
and im not entirely sure why. Do you think you have any solutions or fixes?

1 Like

I’m working on a solution to the problem.

I’m not sure if the problem that @ceat_ceat was talking about is the same as the one I was having, but I tried out the module that they provided and it seemed to work completely fine.

Good Module.

I made something similar to this, and one of the key problems I faced when storing massive amount of Keyframes was this: Load Times.

Studio (and Game) load times would absolutely skyrocket due to all the Keyframes that would take up all of the Instance space up. (You can reach thousands of megabytes if you are not careful).

What I would recommend you do in order to address this problem is by creating another format that is a more compressed format of Keyframes and Poses for game use (saved as multiple StringValues called “Chunks”)

Using buffers and helper modules like BufferUtil to make using buffers nicer.
(OR, and this might be easier)
Turning all Keyframes and Poses into JSON and Compressing it down using This String Compressor
(Uncompressing it when reading)

If you go with any of these paths, just remember that Roblox caps all String Properties to 200,000. so you’ll need to split your exported compressed animation each 200,000 nth string and order them as “Chunks of Animations”