Motix is an animation controller system for Roblox. It manages multi-layer animation blending, a predicate-driven state machine for automatic state transitions, exclusive animation groups for mutual exclusion, and MotixNet: a full network layer for replicating animation state across server and client.
- Multi-layer blending - animations on separate layers play and blend simultaneously
- State machine - predicate-driven automatic state transitions with entry and exit actions
- Exclusive groups - mutual exclusion between animations in the same group, resolved by priority
- Tags - play all animations sharing a tag in a single call
- Layer suppression - states can silence entire layers by lerping their weight to zero
- Manual transitions -
RequestStateTransitionbypasses predicates for event-driven overrides - Typed builder -
BehaviorBuilderwith build-time validation and frozen output - Presets -
BehaviorBuilder.Humanoid()for standard idle/walk/run character setups - MotixNet - animation intent serialization, rate limiting, server validation, desync recovery, and late-join reconciliation over a single
RemoteEvent - MIT licensed
Get Motix from the Roblox Creator Store:
Drop the Motix folder into ReplicatedStorage and require it from your scripts.
local Motix = require(game.ReplicatedStorage.Motix)local Motix = require(ReplicatedStorage.Motix)
local AnimationRegistry = require(ReplicatedStorage.Motix.Modules.AnimationRegistry)
-- 1. Initialize the registry once at startup
AnimationRegistry.GetInstance():Init({
{
Name = "Idle", AssetId = "rbxassetid://YOUR_ID",
Layer = "Base", Looped = true, Priority = 0,
FadeInTime = 0.2, FadeOutTime = 0.2,
Speed = 1.0, Weight = 1.0,
CanInterrupt = true, Tags = {}, Additive = false,
},
})
-- 2. Build a behavior
local Behavior = Motix.BehaviorBuilder.Humanoid():Build()
-- 3. Create a controller
local Config = Behavior:CreateController(
character.Name,
character.Humanoid:FindFirstChildOfClass("Animator"),
true,
Players.LocalPlayer
)
local Controller = Motix.new(Config)
-- 4. React to animation events
Controller.OnPlay:Connect(function(animName)
print("Playing:", animName)
end)
-- 5. Play animations
Controller:Play("Idle")Full documentation at vel136.github.io/Motix
MIT License - Copyright 2026 VeDevelopment