Skip to content

Vel136/Motix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

an animation controller system for Roblox

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages