Questions about using Groups for a pre-Match lobby

Hello everyone,

Me and my friends are making a competitive game where you play by matches (not like a MMO, where the game is always happening, more like a MOBA).
We are using the Match api everything is looking good so far.

For the sake of private testing we want to have a “pre game lobby” to make custom games, where people can join and set their roles as players or spectators before the game start. Anyone who ever played a competitive game like League of Legends or CS:GO will see what i mean.

For now, i implemented the pre game lobby with the match api. Basically when the macth is created it is in “lobby mode”, players can join and leave, then we have an opcode to start the game and the state changes to “game mode”.
Looking back at it i really don’t like having the lobby along with the game logic in the match and i want to change that.

My first idea was to make another match that would serve as a lobby but it still felt wrong.

By digging into the documentation i found this page that speaks about using groups to make long term matchs with no real time functionalities.
Naturally i thought about using groups to make my pre match lobby and i think this is the best answer to my needs.

So here are my questions:

  1. Are groups indeed the best answer to this problem ? I’m pretty sure it is but still i’d appreciate if someone have better suggestions.

  2. By digging the client libraries documentation (.NET) i realized that you can create groups and do basic operation without additionnal backend code (like the client.CreateGroupAsync() function for example).
    While this looks very convenient i don’t really like the idea of clients being able to create groups without the possibility to prevent potential abuse. Also, since i’m going to need RPCs to update group metadata i’d rather have every group functionnalities as RPCs i think.
    So the question is: Can you add control over these features in some way ? (some kind of middleware)
    Maybe i’m just bad at digging the doc but i didn’t find much info on this topic.

(also sorry if bad english)

I think your original solution to using the existing match as a lobby is the best approach. While it does potentially overload the responsibility of the match if you aren’t careful, if you design the states properly you should be okay. Is there a particular reason why you don’t like your current solution?