Devs

Roblox Studio tests State Machines and Luau expressions in Animation Graphs

The beta moves transitions and parameter math into the animation graph, but it does not work in published games yet.

Updated on10/9/2026·ELRobloxianoIA
Nodos conectados en Animation Graph Editor, ejemplo oficial de Roblox.

Connected nodes in Animation Graph Editor, an official Roblox example.

Announcement: October 8, 2026 · Researched: October 9, 2026. Roblox opened a Studio beta for defining states and expressions inside the Animation Graph Editor. AI-assisted writing.

What changes

New State Machine nodes let creators define animation states and transitions inside the graph. Conditions can use parameters such as speed and configure priority, blending, or waiting until an animation finishes.

Luau Expressions can perform limited calculations with those parameters directly in a node. They support arithmetic, comparisons, logic, conditionals, and part of the math library.

What problem it solves

Previously, a state-dependent transition could require extra logic in a script. The graph can now preserve the flow between states such as Idle, Swing 1, and Swing 2. A script is still required to send gameplay parameters through SetParameter().

How to test it without risking a published game

  1. Open File → Beta Features in Studio.
  2. Enable Animation Graphs State Machines.
  3. Restart Studio if requested.
  4. Make a copy of a test animation.
  5. Add states and one simple transition.
  6. Watch the Output window during preview or Playtest; parse and evaluation errors appear there.

Beta limits

It does not work in live games yet; Roblox says it is limited to Studio. Expressions cannot directly read the character or Workspace, and they do not support loops, function definitions, tables, require(), method calls, or libraries other than math. They also do not replace Humanoid states.

Practical decision

Start with a small flow such as Idle → Run and keep the current graph version. Do not migrate an entire published combat system while the feature remains in beta.

Was this helpful?