What do you want to achieve?
I want to design a multi world game developed in a single Rojo Workspace.
What is the issue?
Lots of code will be shared between all worlds. If all places use the identical source code and scripts decide what to do based on the game.PlaceId, then it would be a lot of work having to update each place separately and new released updates would not be as seamless.
What solution have you thought of so far?
My solution so far is I use a single starter place. When a server loads, it decides what world to load based on player:GetJoinData().TeleportData when the first player joins, or the game loads a default world if there is no teleport data. The server maintains a table with info of each server (such as JobId, player list, what world is it, etc.) using messaging service.
What problems do you have with your solution?
It is not an easy task to teleport players to other worlds. In order to teleport players to different worlds I have to create my own server fill algorithm and teleport players using JobId. I can’t teleport players to worlds using PlaceId since all worlds share the same PlaceId and would not guarantee the correct experience. If I were to use this solution, it would be nice to know the exact algorithm and technical details Roblox uses to fill servers. Players could pick a server to join from a server list with some optional sort settings, but this algorithm would allow the server to automatically teleport the player to the best server without requiring the player to pick one.