[Studio Beta] Introducing the Animation Graph System

ayy W acttually W roblox hopefully

am I stupid or it’s literally impossible to select animations (or to apply masks) using booleans? what are booleans for then?

Currently, an input on a node can only accept parameters that match its expected type. The “selection” field on a “select” node expects a string. A trigger on a “sequence” node expects a bool.

Nodes currently don’t do any special evaluations when given a parameter of the wrong type. It’d be cool if we could e.g. pass a “Select” node a bool and it’d select either the first choice or second choice based on if the node is true or not. Would save on some code from the programmer’s end.

Usecase : Imagine a platformer jump animation state where you have two jump animation variants. If “select” nodes accepted a bool you could just flip the bool on and off and the select node would pick the first or second one, instead of needing to map a bool state to two separate strings outside the graph in code.

It’d also be cool if we had a “Sequence Select” node, where each time it’s triggered it selects the next animation in the sequence. Useful for oneshot animations with variants, like a sword swing.

if you use a boolean for a “Select” then the inputs need to be named “true” or “false”

Compared to other not-so-great Roblox updates, this is the best and most worthy. I think this update will allow the Roblox engine to advance to the level of AA/AAA engines because many people wanted animation graph

2 Likes

I’ve been experimenting with the graph a lot recently and in my opinion you should allow us to control TimePosition of a clip using parameters, it would be really helpful for my use case.

1 Like

I wnat to use this feature but i can’t make/get any r15 8 direction walking animation. :smiling_face_with_tear:

2 Likes

I second this big time, I had to use a workaround with layered “Over” masks using weights to interlope in order to preserve TimePosition-sensitive animations such as directional Blend2D Locomotion.


:fire:

3 Likes

I have a transition from idle to crawl idle clip (and vice versa, but I have no idea how would I implement it here) as shown here:

I’d like to suggest adding “transition animations” in Select nodes (both in and out transitions). So you could attach an actual OnceAndHold transition animation instead of relying on linear/cubic interpolation to the next clip.

4 Likes

Is there any idea of when this will enter client beta?

2 Likes

Would it be possible to use a Mask node or something to set fade time for a specific joint to 0 while everything else has the default 0.1? I have a bit of an issue where switching items causes the handle to “float” in your hand, since the part name is the same, so the animation that fades out still has an effect on it.

Quick question about RandomSequence’s Seed property, when Seed is set to -1 (random), does each client generate its own RNG independently? So even if the animation is played from the server, different clients would see different random orders? Just want to confirm that a fixed Seed is the only way to keep it consistent across clients.

On your idle sequence, set the loop number to 1 instead of 0 (infinite)

1 Like

How are you populating your MoveLR and MoveFB paramaters to allow the Blend2D clips to transition smoothly?

local player = Players.LocalPlayer
local PlayerModule = require(player.PlayerScripts:WaitForChild("PlayerModule"))
local getControls = PlayerModule:GetControls()

local forwardDirection = 0
local sidewaysDirection = 0

RunService.Stepped:Connect(function(_, DeltaTime: number)
	local inputDirection: Vector3 = getControls:GetMoveVector()

	forwardDirection = math.lerp(forwardDirection, inputDirection.Z, DeltaTime * 5)
	sidewaysDirection = math.lerp(sidewaysDirection, inputDirection.X, DeltaTime * 5)
	
	if not track then return end
	
	track:SetParameter("MoveFB", forwardDirection)
	track:SetParameter("MoveLR", sidewaysDirection)
end)
1 Like

I already figured this out, flop on my end.

But still I have no idea how would I implement OUT transition. I could put sequence node on the normal idle animation but what if there’s more than 2 states (selection node inputs)? Animation transitions for each input would be amazing

1 Like

Mask Nodes seem to be completely broken on R6 rigs, due to joint names having spaces in them.

MaskAnimationNode: missing 'Mask' property (x2) Attribute name contains illegal character ' ' ("Right Shoulder")

When this happens, the graph editor becomes completely unresponseive and the place must be restarted.

Furthermore, when typing numbers, removing the final digit from a decimal number will make it try to aggressively remove the decimal point, resulting in glitches. (better behaviour would rather be to allow users to keep that decimal points, treating 0. as 0.0 in engine?

Oh also, closing the AGE with the “x” button makes it constantly pop up again…

2 Likes

I was afraid of something like that… I wish the blending could be done with a node somehow.

Curious, how are you tackling one time animation plays (usually input based) like a Land or a Jump animation?

1 Like