[Studio Beta] Introducing Gamepad Controller Emulator

I think there’s a bug either in the emulator or the virtual cursor. It only moves the “virtual position” when the direction of the joystick changes, not each frame. We can clearly see this happening in this video:

There’s also another bug where pressing Q (or the “select” button keybind) will bring up the virtual cursor, but then the virtual cursor would reset each time another keybind related to moving the joystick gets pressed. We also can’t turn off the virtual cursor using keybinds. Here’s a demonstration:

10 Likes

Thanks for catching this! We’re working on making virtual cursor compatible with emulator right now. Stay tuned for the full release!

8 Likes

make it where you can change it to DualShock 4/5 icons instead of xbox to get rid of confusion for playstation players

5 Likes

How do you turn the controller emulator off?


Kind of what’s going on:

After toggling on the controller emulator, and pressing play (f5) in studio, UserInputService.GamepadEnabled is true, with of course the keybinds being mapped to controller buttons. Which is to be expected…

So when stopping the playtest, and clicking the controller emulator icon again, the widget disappears, which I’d assume is turning the controller emulator off.
BUT despite having the widget not showing or what I’d presume the controller emulator being off, I playtest again, though for some reason during that playtest the property UserInputService.GamepadEnabled is still set to true(?) even though the controller emulator widget is not currently open and the keyboard keys are not currently mapped to a controller (Which this last part is expected behavior as far as I’m aware but not the GamepadEnabled state).

So to disable the GamepadEnable state from being set true, I turned the beta off (Though closing studio and opening the same place again does that too);
Though I wanted to make a comment on this because the behavior of that specific part seems confusing or unexpected. I turned the beta back on to double check, this only occurs after you turn the controller emulator on for the first time.

Forgot to mention the device was set to HD 1920x1080 under PC, and never changed this throughout the process.


TLDR:

UserInputService.GamepadEnabled is set to true in playtest even though the controller emulator widget is not on/visible.

10 Likes

Thanks for bringing this to our attention. We are aware of this issue, and a fix is on the way!

7 Likes

Is there an emulator for mobile devices on studio too?

Yes, navigate to ‘Test’, then ‘Device’ and then select one of the phones which you want to emulate on.

(You don’t need this Beta enabled for testing mobile devices)

image

image

image

Hey, just wanted to report a bug. For some reason Input.Position doesn’t get set when dragging the right thumbstick around.

local State = UserInputService:GetGamepadState(Enum.UserInputType.Gamepad1)
			
for _, Input : InputObject in State do
	if Input.KeyCode == Enum.KeyCode.Thumbstick2 then
		print(Input.Position) -- This only prints (0, 0, 0) with emulator
	end
end

I am using the xbox one emulator controller.

This code works with an actual controller connected

Thank you Roblox. Its been years since Roblox has been on Xbox and this only just now arrived. So much potential is now being taken in consideration.

Is there an estimate to this fix, still happening

2 Likes

The bug is still occuring, when I launch Studio, UserInputService.GamepadEnabled is set to true by default.

1 Like

I am still experiencing this issue, has a fix been implemented?

Hi, I managed to arrive at a pseudo solution: simply to deactivate the gamepad emulator you need to go to File > Beta Features and directly deactivate Gamepad Emulator between the blue ticks. This will deactivate the emulator and the bug will be solved.

Obviously this shouldn’t be the case, roblox should make the gamepad deactivate by closing the widget and not actually deactivating the function.

Still happeniiiing

2 Likes

@BobaTops For the love of god, this horrendous thing should not be automatically enabling itself! It hijacks the first gamepad slot *PERMANENTLY*, making it impossible to use an *actual* gamepad for testing things in studio because it gets thrown into the second gamepad slot and the core/player scripts ignore thumbstick input from all gamepad slots besides the first one.

Yes, I know I can just turn the beta off. Well, I know that now but it took me three hours. I had to waste three hours trying to narrow down what was causing studio to think I had an extra gamepad connected since I have beta features set to automatically enable. Three hours!

Wonderfully executed as always, y’all! Fourteen engineers worked on this and not one of them thought “hey, maybe this thing shouldn’t be permanently enabled, forever hijacking the first gamepad slot!” A true masterclass.

Not to mention, @Kitsomia seems to have reported this very same issue three months ago and a fix is yet to arrive! For those who aren’t particularly math savvy, that’s 25% of a year. What are we doing here???

Can you tell I’m annoyed that I had waste almost half my work day?

EDIT: Actually, as it turns out, it isn’t even possible to turn off the beta anymore! Thanks Roblox, you have officially bricked my ability to test my game in studio.


The beta features menu after a studio restart showing the “Gamepad Emulator” beta disabled, yet the widget is still loaded.

Time to take matters into my own hands, I guess.

4 Likes

For those searching for this file on PC, it’s located at %localappdata%/Roblox/Versions/<version####>/BuiltInStandalonePlugins/Optimized_Embedded_Signature/.

The <version-####> will be one of the latest Date Modified folders in the Versions folder. Or, you can search the entire Roblox directory for the file named ControlsEmulator.rbxm and then delete (though I prefer to rename) that file.

Hi @Rocky28447,
We hear you, and we understand how frustrating this must be. We’re actively working on a fix, which should be included in the next Studio update. If you’re still unable to use the Gamepad1 slot by the end of the week, please let us know.

In the meantime, could you try turning off the VR Emulator beta to see if that also disables the gamepad beta?

We appreciate your patience and will keep you updated as we work on resolving this!

2 Likes

Hi @Ethanthegrand14, sorry for the delayed response – are you still experiencing this issue? Also, is there any other context in your script? Trying to reproduce with the snippet you provided prints (0,0,0) once at the beginning, but if I run

RunService.RenderStepped:Connect(function()
	local state = UserInputService:GetGamepadState(Enum.UserInputType.Gamepad1)

	for _, input : InputObject in state do
		if input.KeyCode == Enum.KeyCode.Thumbstick2 then
			print(input.Position)
		end
	end
end)

the position changes as expected.

xboxControllerPosition

Thank you for sharing this! I am tired of this bug happening

As of 2/9 this issue now seems to be resolved even with both betas enabled.