This is more for developers but in the long run better games can come of it.
My main point here is over games that rely on matchmaking. I'm sure most of us have played a game in which one waits in a lobby for the round to end, which can be more or less annoying depending on the length of the round. What if these "rounds" (which I will hereon refer to as "matches") could run simultaneously, starting as soon as there are enough players to begin? What if someone joins mid-round but you don't want that?
We have the game universe APIs, which are great and all, but the problem with the whole system is the fact that developers have ZERO control over where players end up once they're connected to the destination place, which does a lot toward defeating any decent ideas of inter-place matchmaking. The placement is random and the players keep no tether to the original location; there's no sure-fire way to predict or control where players end up.
What would be nice is if we could spawn separate game instances (or even just Workspaces) within our current game, using another place as a template. These instances would have configurable max numbers of players and whether or not they could be joined from the outside, and the players involved are still linked to the "lobby" instance they joined originally (to avoid splitting parties/friends). Ideally, no matter which instance the player is in, they will always be in the same main instance, meaning game.Players has all players in all instances spawned by said main instance.
Possible code example:
local instance = game:GetService("InstanceService"):SpawnInstance(placeId, 6, false);
-- Spawns an instance with the given placeId, 6 max
-- players, and prevents outside joining (i.e. following)
player:SwitchInstance(instance)
-- Switch to that instance.
-- Wait a bit.
player:SwitchInstance(game:GetService("InstanceService"):GetMainInstance())
-- Switch back to the main instance.
Or maybe a multiple Workspace system, where we can have multiple workspaces and change with the player's client renders.
This would be a cool thing to allow our games to do, as it would remove one of the last remaining limitations ROBLOX games have. I'd (we'd?) love to be able to build more match-made style games. This would make a few genres of games with long rounds such as RTSes and competitive building games much more feasible.
Note: I realize the possible confusion between the "Instance" class and the fact that running servers are called "Instances." Would need something to distinguish, or possibly use the Workspace system.
TL;DR: Could we spawn game instances as well as places, or maybe just have multiple workspaces? |