Simplified test server instances

As a developer it is currently too hard to rapidly test my game because studio test servers and clients are bloated with features irrelevant to the testing process.

The problem

Whenever you start a test server, Roblox Studio opens a new instance for the server and each player. So if you test the game with 3 players, Roblox Studio opens 4 instances. These instances all have to initialize their widgets, plugins and other settings. However, most of the time you will not be needing any of those widgets or plugins because players and the server won’t have access to them anyway once the game is published. Yet these all have to be loaded before you even get to test your game. In the video below I open up a test server with 3 players, which takes me almost 20 seconds.

Obviously, having to sit through all of this when you realize “Oh I forgot to enable my script :man_facepalming:” is not a good feeling.

My proposal

I would like to propose a minimal Test Server feature where you can start up a test server and clients in separate, isolated instances. These instances have no widgets, ribbon bar, plugins or anything like that attached to them. Think of them as instances that are simply the world view when popped out of a studio instance. Arguably the only additional feature that would be useful to keep enabled would be the command bar for live debugging purposes.

Why this is important and useful

First of, integrity. When testing your game in studio there can always be subtle differences with a real server depending on which plugins you have installed. These plugins could alter the gameplay (for example, a shift to sprint plugin) without the developer realizing. This could in turn lead to longer debug times when you fail to realize that one of your plugins is the reason why something does or doesn’t work in studio and vice versa in online server.

Secondly, this would improve the testing workflow. Having a simple, minimalist client and server window opens up a lot of screen space. This is useful when you want to test UI for example, because your otherwise shrinked screen would not have the same dimensions as other popular screen resolutions. And for users with a single monitor, this would make it a lot easier to drag and drop the client and server windows next to each other. Otherwise you would have to pop-out each world view individually which gets all messy real quick, especially given that selecting a popped-out world view also forces its corresponding studio instance back on top of your monitor.

Thirdly, speed. If I want to install a lot of plugins, have a lot of widgets open or litter my workspace in the worst way possible, I should not be punished for it with slow test server start-ups. Even if this feature only makes it a couple seconds quicker to open up a test server, having responsive studio behavior feels a lot less frustrating.

82 Likes

This would be such a wonderful update!!

At some point last month, I was having serious issues finding which script was causing a bug in my game, so I had to disable and enable groups of scripts (a process which took well over 6 hours) to find it. There were several times when I launched testing just to realize I had disabled/enabled the wrong scripts.

Definitely a frustrating issue, thanks for articulating it so well!

3 Likes

As a Roblox developer, I spend more time waiting for tests to start/end than I spend actually testing and debugging my game, whether I’m using test servers or playing solo. When I’m trying to fix one elusive bug, the last thing I want is to wait 10 seconds between each test, since it makes the experience that much more irritating.

If Roblox is able to address my issue, I would be able to iterate upon and improve my game much faster I currently do.

12 Likes

As a Roblox developer, 16gb of ram is just barely enough to run 2-3 instances for testing multiplayer. It is sucking all my memory like it’s no ones business and I have to dedicate myself to making sure everything else is closed or not running. And it very inconsistently runs 3 players properly.

I had no choice but to upgrade to 32gb ram, where I can finally run 3 player instances just fine. However it ends up taking more than half my ram just to get all that running, which is a bit much.

And even with all that ram, it still takes a while to open up and deploy every single instances.

If we could have a minimal version of the instance where the clients just run the game and nothing else while having a normal instance for the server, that would already be a huge game changer in terms of quick and easy testing.

8 Likes

To chime in, I recently have been completely unable to test my game in studio with more than one player and the server on 16 gb. I do not want to have to buy hundreds of dollars worth of memory to compensate for Studio spinning up multiple full-weight instances of itself. Often I only want to be able to test behavior and see output / run commands. I don’t need plugins, script debugging, or anything on the ribbonbar. A read-only explorer and properties would be helpful but not needed. I basically just want to be able to run the regular Roblox client on my game’s unpublished state conveniently from Studio.

2 Likes

Roblox Studio runs much richer now than it did in August of 2021 (at the time of post, just the BuiltInPlugins now account for > 600MB of memory taken up per instance of Roblox Studio), making local testing environments very costly on users’ systems, and developing this problem further.

With Studio’s Layout Refresh, (as of Jan. 2023) major elements of docking are broken using local testing environments, and all plugins, widgets, and settings are reinstantiated. The current method costs system resources multiplicatively.

There is an unintuitive user experience with the process of local testing itself, since it is the testing Server that is opened that must run clients, and not the static file that the testing process began with. I often do a complex join/leave scenario, so that I can watch how my experience responds.

We have the option to use Roblox Studio’s layout refresh to our advantage here, by adding the programs as tabs in the top bar. This eliminates headaches, and increases Studio’s accessibility and performance for those without powerful processors and > 16GB of RAM.

(assume that the tab script icons are replaced by Server/Client icons)

I would be happy with just being able to dock the single, rendering Server/Client tabs to Studio’s primary window for now, and pausing rendering/physics calc. when they are not actively selected in Studio’s viewport. But I hope that others see what I do, where a “split-screen” experience for Studio users could be granted to us via Roblox Studio’s layout refresh in the future.

image

10 Likes

This. This is what is most annoying for me. My main disruption are the widgets duplicating from my studio window when I run a local server. I only really have a single monitor to use, and all this unnecessary widgets that I had open for development also opening on the test instances are making the viewports microscopic (if I need to look at two clients or more as the same time, which is generally the only time when I use this feature).

If I wanted to use a widget while on a test client, I would open it.

This proposed feature does not just save on performance but ease. The widgets such as explorer could ‘focus’ on whatever viewport is selected, seamlessly switching whenever a viewport tab is selected while docked or popped out.

It would also make the cleanup feature so much better, simply closing all the tabs properly and not having to deal with a bunch of client windows. I tend to accidentally leave a client instance open with the “client initiated disconnect” shutdown screen showing.

Any improvement to this system would surely be a welcome change.

2 Likes

Detached play solo was awesome for letting you continue to browse your codebase / map while a test instance was being spun up.

Ever since it was removed, it’s become much clunkier to develop large games. Basically rips you out of your flow as you are forced to stare at a loading screen.

3 Likes

Usually, I develop Roblox games with a single monitor, because it helps me stay productive. However, the amount of screen space widgets take is pretty annoying if you’re looking at every studio window at once, especially if you’re lets say trying to reproduce a bug that requires more than four players.

Having at least a button that just gets rid of those widgets upon startup would just be so so much helpful, as I would just always manually just close all of the widgets upon startup, wasting so much precious time.
It just makes it way more easier to playtest with multiple users.

7 Likes

Yes, something like Unity’s “Maximize on play” button in the editor:
image

1 Like

Also, i would love if there was an option to disable server rendering to simulate how the server in live games work (and to optimize things better, since if the server window’s rendering is disabled then only the client windows will render the game)
I mean i don’t think live game servers render the game at all? Or do they?