Headless/Empty Servers

TLDR: Each experience can have 1 headless/empty server.


What do I mean by headless/empty server?

A headless/empty server in this case means one of the following:

  • Headless Server: A server that can not be joined by any players, it can only run things (and only has the purpose for running things) that a server would run if it was by it’s self, things like scripts and interacting with services like DataStoreService, MemoryStoreService, HttpService, doing background tasks, so on so forth. The server has no support for, does not contain, and does not run services for things like local scripts, UI, avatars, emotes, so on and so on, whatever would be directly and only for a player that is connected directly to the server.

  • Empty Server: Your average Roblox server that can run with no one inside it and the developer of the experience can allow people to join if they want. This could also be a separate feature suggestion of allowing servers to start up before anyone is joining, but that is a separate potential discussion.

Both are nice for the purpose of reducing overhead, and increasing performance. These servers would also be better if Roblox decides these servers (probably just the headless one) can have a special in this example DataStoreService, MemoryStoreService, and HttpService limit that is way higher than normal servers.


Why would this feature addition be useful/it is currently too hard to/if Roblox was to address this issue:

  • Manage a global game state without risk of race conditions and or data inconsistency, this can be especially useful for systems/scripts that require a high frequency of updates and need to stay in sync, for example if you have a 2D map with 2D objects and many places these 2D objects can be told to go by any player that owns and spawn them… where is the 2D object moving to, where did it come from, what’s it’s final destination, what data does it carry, did it run into something else or end up at its destination and where is that (but that possibly like x25,000 to all running let’s say main menu servers every again let’s say 5-15 seconds), and again ambitious idea I have but this can be scaled to whatever is appropriate to what the server can handle.

  • Run other logic that doesn’t directly interact with players (in the same server), let’s say for an example saving to datastore the global game state, broadcasting messages about what is going on in the map to players in a different place in the experience that isn’t the main menu, maybe something that would be too intensive or laggy if actual players were connected, etc.

  • Manage/handle events between servers, let’s say you have a global chat or some other system that you don’t want to have each server message each other server and then each other server after that and so on, and you just want it to message (and receive messages) from one central server.

  • Also includes basically any multi server system that requires (or would be very nice to have) a single source of truth.

  • Potential limit increases like mentioned above in the post.


Some ideas to prevent abuse/waste:

  • 1 per experience (or more on request to Roblox).

  • These headless/empty servers will only run as long as there is 1 player playing the experience (regardless of which place they are in, in the experience).

  • Developer has to have good account moderation standing + higher forms of user verification.

  • Headless/empty server has to actually be doing something, if it is empty (like no scripts or anything) or does not do anything for a defined amount of time it is shutdown.


Conclusion:

The experience idea I have (and am working on) would highly benefit from this, if not be impossible without this in the first place.

I am confident that this is a feature desired by a notable amount of Roblox developers, oddly I did not find (at least in the quick searches I did) another post requesting or talking about this.

I am also confident that there are many other use cases I did not mention here and ideas people have to go with this, if anyone has any suggestions/comments to add on to this (or to tell me) please feel free to reply and let me know.

Also a poll because I just want to see my self how many people want it:

  • I want Headless/Empty servers.
  • I’m not sure if I want Headless/Empty servers.
  • I don’t want Headless/Empty servers.
0 voters
7 Likes

how is reading comprehension related to me not wanting to read allat?
Mr.Metatab1e :cold_face:

This would be immensely useful in my use-case, which is to schedule experience notifications for future, close-proximity dates by using MemoryStoreService. Currently, we have programmed a system that dedicates one server to run notification tasks every 5 minutes. This works but took an unnecessary amount of effort to implement in a flawless manner. If we had access to headless servers, the system would have been significantly simpler to implement and prone to less issues through the development process.

2 Likes