Handheld Ready: Optimize Your Creations for Any Device

Hello Creators!

Back in June, we announced we’re partnering with Xbox for the launch of their new ROG Xbox Ally devices this holiday season!

Today, we’re taking the next major step in our commitment to empowering you to reach players on any supported device, including powerful gaming handheld devices :video_game:.

Starting today, you have access to:

  • A new Cross-Platform Development Guide that explains how to ensure your experience runs well on any device. This guide is based on adaptive design principles that allow you to adapt to the ever-changing landscape of devices, input methods, and form factors.

  • A suite of new and updated APIs to help make your cross-platform development process easier.

  • A new handheld emulator within Roblox Studio so that you can also troubleshoot and make sure that your experiences are ready for the new ROG Xbox Ally, and future handheld devices that support Roblox.

Let’s dive into it!

Our Vision for Cross-Platform Optimization

At Roblox, we envision a future driven by adaptive design, moving beyond traditional device categories. In the past, you’d think of building primarily for a laptop with a fixed screen, keyboard, and mouse. But today’s devices have far more dynamic capabilities, allowing for seamless transitions between different inputs and displays.

Given this continuous evolution, we’re building APIs and creator tools to help your experiences seamlessly adapt to any input types, screen sizes, and orientations. This could help significantly reduce the time needed to troubleshoot, allowing you to focus on what matters most: creating engaging experiences.

Our Principles for Cross-Platform Development

Every experience is unique, but following a few key principles will help you deliver an intuitive and polished experience to every player, on any device. To achieve this, we recommend that you focus on:

:white_check_mark: Input Fluidity: Ensure your experience feels natural on any input device, including: gamepad, mouse/keyboard, touch and VR controllers.

:white_check_mark: Responsive Layout: The layout of your experience UI should adapt to different screen sizes and orientation. On a big computer monitor, you have the space to show lots of actions, while on a smaller screen, you may have to be judicious and only show high importance actions, hiding the rest under menus.

:white_check_mark: Dynamic Sizing: This is about the size of your UI elements, not just their position. Your UI should scale up or down with the screen size so that everything stays the right size and is always easy to click.

:white_check_mark: Legibility & Visual Clarity: Can players actually read your text on a small phone screen or from 10 feet away? Are your buttons easy to see against the background of your experience? Use appropriately sized fonts and colors that stand out.

Check out our Cross-Platform Development Guide for deeper insight on principles and examples that show them in action.

APIs for Cross-Platform Development

To help you implement the principles above, we want to highlight several powerful APIs that simplify these cross-platform workflows:

  • ViewportDisplaySize: A new API to design your UI to fit different physical screen sizes by understanding a device’s perceived display area.

  • PreferredInput: Detects the player’s primary input device, making your UI and interactions adapt to it automatically.

  • Input Action System: Allows you to define actions that work seamlessly across platforms, no matter the input device.

  • Styling: Easily set and apply global overrides to your UI’s properties, making consistent design simple.

  • Flex: Effortlessly make your UI content fill a dynamically sized container, ensuring a responsive look.

Emulating Handheld in Studio

Today, we are also launching handheld emulation in Studio. It will help you test how your experience will look and feel on handheld gaming devices, including the controller input and screen factors.

To enable the emulator:

For users in the next-gen Studio beta:

  1. Navigate to Test > Device Emulator.

  2. From the viewport, select the “Generic Handheld HD” options under “Console” from the device list.

  3. Optionally, check “visual controller” to enable the controller widget and locate the “Generic Handheld” virtual controller to validate your inputs and edit keyboard mappings.

For users not in the next-gen Studio beta:

  1. Go to the Test tab.

  2. Click the Device button and choose the “Generic Handheld HD” options under “Console.”

  3. Then, click Controller and select the “Generic Handheld” virtual controller to validate inputs and edit keyboard mappings. See more details in Emulation.


As we continue to invest further on toolkits, APIs, and feature improvements, we want to hear from you. Please give us feedback on these tools and share any challenges that you may be facing while working with them.

Please let us know if you have any questions!
Thank you.

158 Likes

This topic was automatically opened after 10 minutes.

I think that the handheld addition is sick! Maybe for the next inspire a ROG Xbox Ally could be an additional prize?

13 Likes

Nice. Steam deck support when?

62 Likes

can we get Steam Deck support please

edit: I just want to say that I’m very happy that Roblox is investing more resources into handheld devices! This is definitely something I’d be interested in providing support for in my experiences, but I don’t see the value in purchasing an entirely new handheld device just to play Roblox, especially when I already have one that should be able to run Roblox.

33 Likes

This would require adding Linux support, which I think they said they weren’t intending on doing right now, or any time soon.

13 Likes

This is us reiterating we think they should add Linux and Steam Deck support.

31 Likes

switch 2 drop? just saying it would be funny

17 Likes

I want it just as much as you lot do, in fact - I’m on Linux Mint as we speak! I am BEGGING for native Linux Studio because Vinegar is really buggy :folded_hands:

16 Likes

Imagine the addition of Nintendo to the collaboration (or whatever it’s called, the one where u can request rights) page

9 Likes

I might be a bit out of the loop but are Input Action Objects live yet?
Can I use the new input system in a public game?

I’ve been waiting ages on that so I can finally replace BindableEvents with InputActions.

4 Likes

Since we are getting so many devices supported it would only seem fair to add steam os/linux support for steam decks and Linux based hand helds, they seemed to run much better then their windows gaming hand held alternatives (longer battery life better performance) and seem to be cheaper and more popular in the hand held space too, If you think Linux support is useless a lot of developers love Linux and a lot of players love these Linux based hand helds it shouldnt be to hard to support seeing how android is based on linux its self and chrome os can play roblox!

18 Likes

more devices more problems, thank you roblox

2 Likes

js disable handhelds for your game dawg :sob: :pray: its not THAT hard :wilted_flower:

8 Likes

I don’t even see how this would be a problem anyway, It’d most likely just be like supporting the Xbox One.

4 Likes

please consider adding support for Switch 2 with this handheld update

7 Likes

Sorry to break it to you but, with whats happening right now, it won’t be possible.

I feel as though if you want devs to put more work into multi platform compatibility, especially for controller, which is the most difficult to support while also having the least payoff, you should be adding engine features to make it simpler, not creating guides.

A feature that comes to mind would be that GetImageForKeyCode should work for all keycodes, not just controller. Why? On keyboard, it is easier to use text labels for keybinds. For controller, the easiest way is an image label and GetImageForKeyCode… But theres no cross compatability and to support both you have to manually code it.

Additionally, I don’t think you should be putting Studio Beta features in these guides and the documentation in general, without a warning people that they don’t work in the live games.

8 Likes

any plans for a way to detect when the orientation of the screen changes, kind of like those old mobile apps where you can throw a ragdoll around by rotating the device?

My IAS wrapper is designed to emulate IAS on the client due to no client beta, but it seems that the client beta is enabled based the dev logs, and it was emulating IAS using CAS earlier before this post was made.

1 Like