Skip to main content

Motix

Animations that know what they're doing.

Animations that know what they're doing.

Version License Discord


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.

Features

  • 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 - RequestStateTransition bypasses predicates for event-driven overrides
  • Typed builder - BehaviorBuilder with 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

Installation

Get Motix from the Roblox Creator Store:

Install Motix on Roblox

Drop the Motix folder into ReplicatedStorage and require it from your scripts.

local Motix = require(game.ReplicatedStorage.Motix)

Quick Start

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")

Documentation

Full documentation at vel136.github.io/Motix

Community

License

MIT License - Copyright 2026 VeDevelopment