Testing games on real hardware is too difficult

As a Roblox developer, testing our games on real hardware is too difficult. For example, if the game requires mobile-specific hardware, the only way to test it is on real hardware in a live game that was published from Studio. If we want to benchmark performance on real hardware, we must publish from Studio and join the live game.

This workflow is usually okay until you need to iterate quickly. For example, I am currently leading UI on a project called Clip It. We’re essentially building a mobile app using the Roblox engine, in much the same vein as Roblox’s Lua app, and are trying to replicate platform-native interactions and UIs. Recently, some of my more complicated work is implementing our own touch gesture response system using the raw input events. Testing this requires publishing and rejoining the game for every little change because there’s no way to test in Studio with the emulator (it requires an actual touch screen).

Another hurdle is that we want access to Studio’s play testing debug tools when testing on real hardware. For example, we want to be able to access the client and server output from Studio because it’s much easier to read, copy, and access from the Output widget rather than the small mobile window (that can’t be copied from). I also frequently want to access and inspect the instance hierarchy when testing UI on mobile hardware. For example, altering UI instance properties can often be very useful for debugging live why some UI interactions aren’t behaving as expected.

We also want to be able to debug our React-based UIs using React DevTools. This is currently possible when testing in Studio because we can connect React-lua to DevTools locally without having to proxy HTTP requests over the public internet. However, this gets a lot more complicated when testing on real hardware because the Roblox server can’t send requests to my internal home network (without port forwarding). To get this to work, we’d have to have an HTTP server between Roblox and my local network proxying requests, which is way too complicated for us to adopt comfortably. These use cases could be solved by allowing mobile to connect directly to a Studio test session.

If Roblox could solve this problem, the testing workflow at our studio would be massively improved. We’d be able to iterate on changes a lot faster and debug issues with our UI running on real mobile hardware. Our use cases become even more compelling once we introduce platforms other than mobile. For example, accessing and debugging output logs is even more convoluted on console and VR (platforms we eventually want to target).

The solution we propose to this problem is to allow the app on real hardware to connect to a Studio test session directly as if I were running a local test server. This would allow us to access all of the Studio-native debugging tools while also being able to quickly test on real devices.

38 Likes

I can confirm it is a total pain to develop for mobile right now.

I’ve made systems where users drag, pinch, and pan various UI around. I had to publish my testing place and join it over 4,000 times. I can’t imagine how much time I’ve wasted on this because I didn’t have a good way to quickly test my changes on my phone.

11 Likes

If I’m remembering correctly, we even used to have this feature in the past for mobile, where in Studio you would be given a code and you would go on your phone and type it in to test from your mobile device.

I never understood why this feature was removed and not improved upon, probably due to a change in focus towards the device manager, but there is just no replacing the actual hardware.

9 Likes

I don’t remember such a feature but that would be really helpful! Especially since we have Team Create now (changes are immediately synced to the servers), pressing a button to Team Test on your phone would make playtesting much more efficient.

Considering we have more players on mobile than on PC, more focus on mobile compatibility tools sounds like a no-brainer to me

5 Likes

Yes! There was the Roblox Developer app for iOS (sadly it never made its way to Android) that allowed you to enter the “dev code” shown in studio to connect and would let you use your own real hardware to test your experiences.

I would love to see this return in some form or another, even if it was integrated into the Roblox app itself.

9 Likes

Yeah it was a feature removed in late 2016, very very useful at the time!

6 Likes

AHHH so glad somebody else remembers it too! That is exactly it, I had completely forgotten the name of it, thank you!

It absolutely needs to come back in a more universal form. Like OP mentioned, testing on console (PS4/Xbox) and in VR is an absolute nightmare, mobile is also just as difficult like @ScriptOn mentioned without a proper means of testing gestures.

They were also intending on bringing it back in the past:

but not for sure what their plans are now

5 Likes

While I do agree with the spirit of this, I can see some issues if you emulate this in Studio. For starters, the PC you develop on is going to be light-years more powerful than the mobile devices running the same game. If anyone has ever done Android or iOS App development, you know exactly what I’m talking about when trying to benchmark how something behaves on mobile when it comes to clicks, drags, pinch, etc. The emulators for those phone types are very good, but also not exact when it comes to speed and response. Roblox would have the same issue. If Google and Apple haven’t solved that issue after all of these years, I don’t see Roblox doing this either and be fast enough to keep up with all the different mobile devices out there.

The idea though to have a special dev mode just for a mobile device, I have to agree would be much more feasible that the current setup used. Right now, the best way to develop for a mobile is to create a special test mode command that switches your experience to some mobile mode manually with debug output that you have to create on your own, etc. Unfortunately, you have to create all this yourself and the coding challenge will certainly burn you through a couple of days of getting this setup. :face_exhaling:

Right now, you can set Team Developing mode for users that only have “play test” abilities. That should be enough to have a way for the same users to enter some special code in a vanilla Roblox client to be about to join a Team Test session. Sure, they won’t get all the technical output, but the developers will be more interested in this than the users just connecting and trying things out via the Client. :wink:

7 Likes

I think you misunderstood what the post is suggesting.

No where does the OP suggest that Roblox provides a way to emulate the devices themselves, it is suggesting that we are given a way to use other devices for in-studio play sessions rather than having to simulate their experiences (Roblox’s existing implementation) or publish and play outside of studio (what you’ve suggested basically).

So to add some counterpoint to what you mentioned, it wouldn’t be limited to just mobile, ideally we’d be able to do this on every device platform Roblox is available on.

7 Likes

As Cali said, I think you misunderstood. One of the use cases I listed was benchmarking UI running on real hardware, not emulation. The whole point of this post is that emulation is not good enough for our (quite extreme) needs, and it needs to be easier to test games on real hardware.

5 Likes

I understand just fine. :wink:
Whenever this is brought up here, someone or staff always suggest emulation solutions. Just preemptively stating my opinion ahead of time. That’s why in the same post I agree with the OP. :grinning:

5 Likes

Thanks for the feedback, Brooke!
As we spoke today, testing and debugging on device is quite challenging technically, but we will investigate and keep you posted.

Good news is we plan to enable Emulator input for touch screen, VR and console gamepad. Hopefully H2 2024.

5 Likes

I’m looking forward to it! As always, thank you for the transparency. It means a lot!

1 Like