Hi Creators!
Input Action System (IAS) is now fully released, with robust support for hardware bindings and action types universally available to support all your games . IAS unlocks a future where input on Roblox is modular, scalable, and cross-platform – you can build a shooter, driving simulator, or action game whose control schemes adapt on the fly if a player switches hardware mid-game, like plugging a Gamepad into their laptop. IAS also serves as a foundational pillar for our next-generation technologies like Server Authority and the Character Controller Library.
To bring cross-platform input to all games by default, we’re also officially migrating all default player scripts to IAS. The new player scripts are functionally identical while being simplified, modular, and integrated within our data-driven system. If you have custom input logic alongside the default scripts, you should audit your game to ensure the entire input ecosystem functions as intended with the new scripts. To give you ample time for this, we are introducing this as a standard three-phase rollout (see details below).
Check out our new video below that breaks down how and why we converted our default player scripts to IAS, and why you should adopt IAS for your custom input needs as well.
We’ll also host a live webinar on July 9th, 11am PST to answer any questions about the system or player script migration.
Keep reading to see what’s new to IAS since our last release and learn more about what you need to do to opt into our new player scripts today!
A Quick Refresher on IAS
IAS is a platform-abstract, data-driven input layer that decouples structural gameplay intent from literal hardware events. Instead of writing separate scripts for different input devices, you can now write a single piece of code that works across all of them.
IAS consists of three core instances:
InputAction: The gameplay mechanic a player intends to perform. Each Action has anInputActionTypethat determines the input type it expects to read in.InputBinding: A hardware-specific input assignment. The input configuration should map to the associated action type.InputContext: A grouping of related actions. Contexts can be enabled, disabled, and prioritized dynamically based on gameplay state.
For a more detailed walk-through, check out our step-by-step guide on how to start building with IAS. You can also reference our sample placefiles below:
- Movement action: IAS Direction2D (89.2 KB)
- Boolean action: IAS Example UI Popup.rbxl (66.8 KB)
What’s New Since Client Beta?
We’ve added some major new features landing with today’s full release.
Click here to view
-
Enhanced touch support: We’re introducing new touch keycodes that can be used as bindings for various action types! These include:
TouchPosition, which returns whether an active touch has occurred for a boolean action, or the raw position of an active touch for a ViewportPosition action.TouchPinch, which returns the velocity of a two-finger pinch gesture for a Direction1D action.TouchDelta, which returns the velocity of a one-finger swipe for a Direction2D action type.
-
UI Modifiers: We’re extending modifier key functionality to touch input through the new
UIModifierproperty onInputBinding. Just like on other platforms, the primary touch binding will only fire if the assigned on-screen modifier is actively being touched. -
Enhanced Pointer-Device Support: You can now read accurate, velocity-based directional values directly through pointer-device bindings.
TrackpadPinchandMouseWheelbindings now seamlessly map to Direction1D action types, andTrackpadPanandMouseDeltabindings map to Direction2D actions. -
Directional Input Clamping: We’re introducing ClampMagnitudeToOne, a new boolean property on InputBinding that caps composite directional inputs at a maximum magnitude of 1. This ensures that moving diagonally doesn’t give characters a hidden speed advantage over cardinal directions. It defaults to true.
-
Per-axis Multipliers: We’re adding Vector3Scale, a new property on
InputBindingmultipliers that provides independent scale tuning for Direction3D actions, similar to Vector2Scale. This is useful for 3D navigation like flying to fine-tune how fast a player ascends or descends compared to their horizontal movement speed.
We’ve also fixed a number of bugs to improve the quality and reliability of using IAS.
Click here to view
- InputBindings now reliably reset to false when a cursor or touch is released rather than when the pointer leaves the bounding box of a pressed UIButton.
- Analog inputs (like gamepad thumbsticks and triggers) that are sunk by the engine now correctly reset their action states.
- Thumbstick directional keycodes now properly apply the ReponseCurve property correctly.
- Passing a boolean input into a Direction1D action now correctly throws a runtime type-error instead of failing silently.
- Highlighting or selecting a UI element via gamepad navigation now correctly routes button press signals into the IAS pipeline.
Upgrading Default Player Scripts To Use IAS
We’ve migrated our player scripts to use IAS to provide default controls that you know and love! This adds native, highly modular cross-platform support out-of-the-box, as well as proper input sinking across all your InputActions.
Functionally, these new scripts behave identically to the legacy player scripts; there are no visual or mechanical differences for the default gameplay configurations for movement and camera. However, if you have built custom inputs for your game that worked alongside the legacy player scripts, you should audit your game to ensure everything continues to function exactly as expected.
How to Opt-In
To switch your game over to the new player scripts, navigate to your Explorer panel and locate Workspace. In the Properties panel, locate and set the new PlayerScriptsUseInputActionSystem variable to Enabled.
Keep the following in mind as you opt in to these new player scripts:
- Server Authority / CCL Compatibility: If you have already been utilizing these player scripts for early Server Authority or CCL development, your flag should already be enabled, and no further action is required.
- Forked Player Scripts: If you have forked player scripts and want to retain your custom controls, you still need to enable the Workspace variable above, then set
StarterPlayer.CreateDefaultPlayerModuleto Disabled. This is the new explicit mechanism to prevent the engine from overriding your custom player scripts at run-time. We strongly recommend testing your custom logic after going through these steps to make sure everything functions as expected. - References to Legacy Player Scripts: If your custom input code references internal methods within the legacy
PlayerModule(e.g.,GetControls()), you may need to update those scripts since those legacy endpoints may no longer exist. Since default player scripts are subject to future updates, we recommend avoiding direct dependencies on internalPlayerModulecomponents.
This upgrade follows our standard three-phase rollout process for potentially breaking changes. We’ll share exact dates closer to each phase – before moving onto Phase 2, we want to ensure everyone has had ample time to audit their game. Please do not hesitate to reach out to us if you need assistance!
Three-phase rollout timeline
| Phase | PlayerScriptsUseInputActionSystem Value | Creator Impact |
|---|---|---|
| Phase 1 (right now!) | Default = Disabled | No breaking change. Creators can opt-in by setting the Workspace variable to Enabled. |
| Phase 2 ETA: Early 2027 | Default = Enabled | Potentially breaking change. Games referencing the old player scripts, or relying on previous input sinking patterns, will likely break. Creators can quickly revert by setting the Workspace property to Disabled and re-publishing. Note: Opting out should be a temporary measure until you migrate your games. At this point, we will announce the Phase 3 timeline. |
| Phase 3 ETA: Mid 2027 | Property is removed altogether | All places (new and existing) will receive the new player scripts. The old player scripts will no longer be accessible. |
What’s Next?
As you adopt the new default player scripts and create with IAS, our team will be eagerly developing new features to make the system even better for you. In the near future, we plan to release improved Studio tooling to make auditing, verifying, and mapping your cross-platform bindings easier and visual. We are also actively investigating native frameworks to support player-side key remapping and input configurations with zero custom scripting required!
Made with love
A massive thank you to @NoUniqueAddress, @AykeriZero, @runitbackrolfo, @SharpenedByWater, @MetaVars, @n3wr1ch, and @Astonish1656 for their incredible work building this foundational system, and a huge thank you to everyone who experimented, built, and provided invaluable feedback during our Client Beta phase
Please don’t hesitate to reach out if you have any questions about the full release or the new player scripts rollout. We are excited to see how IAS streamlines cross-platform input development for you. Happy building!