Abilities

Abilities in the Character Controller Library (CCL) evaluate what a character can do, such as the ability to run, jump, climb, and swim. Instead of relying on rigid engine‑defined character states like those in Enum.HumanoidStateType, the CCL enables flexible behavior composition such as a character being able to move while also aiming and crouching.

Enable CCL

The CCL is opt-in through Studio's Avatar Settings window. To enable it:

  1. From the Avatar tab, open Avatar Settings.

    Avatar Settings indicated in Studio's toolbar
  2. Select the Movement tab on the left side of the window and, in the Abilities section, select Character Controller Library.

    Character Controller Library toggle in the Avatar Settings window
  3. All of the standard abilities like Running, Jumping, and Climbing are enabled by default. To disable any of them at runtime, uncheck the associated box.

Configuration

While your game is running (or through a script that runs from ServerScriptService), you can experiment with the built‑in ability configurations. You can also modify specific controllers to adjust the physical simulation of the character and its interaction with the environment, such as the character's base movement speed.

Runtime

To experiment with ability configurations at runtime:

  1. Begin a playtest.

  2. In the Explorer, locate the character model in the Workspace and then expand the Abilities tree under AbilityManagerActor:

  3. Select one of the built-in abilities and, within its Attributes section of the Properties window, customize attributes such as those noted below.

    AbilityAttributes
    Climbing
    Dead
    FacingMoveDirection
    FallingDown
    Freefall
    GettingUp
    Jumping
    NoLocomotion
    Running
    Sitting
    Swimming

Scripted

To set ability configurations for all characters through a script:

  1. Create a new server-side Script within ServerScriptService and rename it to AbilitiesScript.

  2. Copy and paste the following code into the new script. This example multiplies the base movement speed for the Running ability by 2. Feel free to adjust other ability attributes such as those described in the table above.

    Script in ServerScriptService

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local AbilityManagerActor = character:WaitForChild("AbilityManagerActor")
    local Abilities = AbilityManagerActor:WaitForChild("Abilities")
    local Running = Abilities:FindFirstChild("Running")
    if Running then
    -- Double base move speed
    Running:SetAttribute("SpeedMultiplier", 2)
    end
    end
    local function onPlayerAdded(player)
    if player.Character then
    onCharacterAdded(player.Character)
    end
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.