We have a running preversion of our Unreal Engine game (on LAN) where clients enter the IP/port of a server, then connect.
They all thus enter a lobby level in the game where they choose equipment, etc. before being traveled to the real game level.
I am currently designing the architecture for running this on PlayFab. I already integrated the GSDK and it works fine: I can manually provision and launch servers, retrieve the IP (manually, in Game Manager) and clients connect to it.
I would like to implement the following "player journey" for our game where matches contain two teams of 3 or 4 players.
1. players launch the game and login with PlayFab (custom ID at the moment to make it simple)
2. A "leader player" decides to gather a party of teammates (*not* including the opponents) and send invites. He then enters a freshly created lobby.
3. The other teammates see the invite and, if they accept, they join the same lobby (I would also like the ability to share a "lobby ID" in an external chat/discord for invites)
4. All teammates meet in the lobby where they can see each other, choose equipment, change their name.... and when done, they click the ready button
5. When everybody is ready, I would like to look for another group of people who have matching characteristics such as skill level and who are also looking for an opponent team.
6. Once PlayFab can match these two teams, a dedicated server is launched and all clients receive the IP address + port to connect to.
In the current LAN game, a server is already required at the lobby stage, and the lobby contains ALL match members (from both teams), and Unreal network replication is used to that everyone sees the name+equipment of other players.
I would like to change this and use PlayFab to exchange info between teammates and only start the dedicated server once both teams are complete and ready to play.
I am bit lost in the PlayFab documentation between matchmaking (can it be used for 1), 2) and 3) in my journey?, or can it only be used once teams are complete?) , Social, Party... Can Playfab Party OSS plugin for Unreal be used to replicate Unreal objects between teammates?
Should I use Party to exchange the information about equipment/etc in the lobby?
Could some expert guide me on the very high-level way of doing this and what areas of the API I should learn first? (I can write C++ and do not have to use Blueprint)
Thanks a whole lot in advance!