Hi Creators,
We are thrilled to announce that the Input Action System (IAS) is now in Client Beta and can be published in your live experiences!
Thank you for all your feedback and excitement during our Studio Beta over the past couple of months. During Client beta, you’ll be able to publish experiences that use our InputAction, InputBinding, and InputContext instances.
Whether your experience has a few simple actions or dozens of layered gameplay mechanics, we highly recommend migrating to IAS to take advantage of its power and flexibility. Migrating to IAS is a game changer for building out-of-the-box cross-platform experiences. It unlocks:
- Write once, play everywhere: Define a gameplay action (e.g., Shoot), a set of intended bindings, and it will automatically work across keyboard & mouse, gamepad, and touch with no extra code.
- Automatic multi-input support: IAS seamlessly handles players who mix input devices, like connecting a gamepad on their PC or a keyboard with their tablet.
- Future-proof your code: By abstracting actions from specific hardware, your game is ready to play on new platforms without you needing to rewrite your core logic.
For a full introduction to the system, you can read our original Studio Beta announcement here or check out our new step-by-step guide!
A Quick Refresher On IAS
IAS is designed as an abstraction layer to manage input bindings on actions, allowing you to write a single piece of code that works across all devices, simplifying cross-platform development. It introduces three new instances and one new enum:
- InputAction: A gameplay mechanic (like Sprint or Shoot) that can be triggered by several hardware inputs.
- Each action has an InputActionType that determines the type of input it reads in. We currently support Boolean, Direction1D, Direction2D, and Direction3D action types.
- InputBinding: A hardware input (like W, ButtonA, or a touch button) that triggers an Action upon interaction. The inputs configured on a binding need to match the type of the action the binding is connected to.
- InputContext: A group of related actions. You can enable, disable, and prioritize contexts (like DrivingContext vs. WalkingContext) based on game state.
This system enables you to build complex controls for a first-person shooter, a driving simulator, and more, with automatic binding of actions at runtime based on a player’s available input devices.
For a more detailed walk-through, check out our step-by-step guide on how to start building with IAS! You can also check out our sample placefiles below:
- Movement action: IAS_example_Direction2D.rbxl (59.9 KB)
- Boolean action: IAS_example_popup.rbxl (66.8 KB)
New Updates Since Our Studio Beta
In the past couple months, we’ve been hard at work addressing your feedback! Here are some notable new features we’ve added:
- Mouse Keycodes for Boolean Action Types: You can now bind mouse inputs, such as MouseLeftButton, with boolean action types. This was a top request and makes triggering actions with mouse clicks seamless.
- Direction3D Action Type: We’ve introduced a new action type,
Direction3D
, which allows you to capture multi-directional input in the XYZ space. This unlocks true 3D movement for actions like swimming, flying, or other advanced character mechanics. - Studio State Display: Actions now display their current state in the properties panel in Studio, making it easier to debug.
We’ve also fixed a number of bugs, listed below:
- We fixed an issue with the Fire API that would only error with certain inputs.
- We fixed an issue with IAS instances appearing gray in the Studio insert menu.
- We updated the IAS instance icons in Studio to be compatible with both light and dark mode.
- We fixed a bug where setting InputAction.Enabled = false would incorrectly disable other actions.
FAQs
- Is Roblox sunsetting UIS?
- No, we are not sunsetting or getting rid of UIS. UIS will continue to support other useful functionality like GetStringForKeyCode, PreferredInput, InputBegan/InputEnded, and other APIs. However, we strongly encourage you to move your action mapping and input bindings from UIS to IAS for a cleaner, more robust system.
- Is Roblox sunsetting CAS?
- Yes, we plan to sunset CAS in the future. Sunsetting means that your existing code will continue to work, but we will not make any changes to functionality, effectively deprecating the API for future use. All functionality that CAS supports will be supported by IAS before we sunset it. If you use CAS, we highly recommend migrating to IAS.
- Do I need to use Contexts?
- Although actions can exist outside of contexts, we highly recommend placing all your actions within an InputContext. This simplifies management, as you can enable or disable entire groups of actions at once, keeping your code clean and organized.
What’s Next?
This new Input Action System forms the foundation for platform-abstract, data-driven action mapping. Our long-term goal is for all actions within the Roblox ecosystem to flow through IAS, enabling more expressive developer intent and eventually player rebindings. We will continue to extend this system to help you build experiences that play well on all platforms and input devices.
Made with love
A huge thank you to @NoUniqueAddress, @AykeriZero, @uiuxartist, and @MetaVars for all their hard work in building this system. And a huge thank you to you all for all your feedback that has helped us improve and expand IAS!
We can’t wait to see what you build with IAS! Let us know about your experience and if you encounter any issues or features you’d like us to add. Stay tuned for more!