I am trying to mimic / recreate the Party and Matchmaking system from Gears of War 3 (because it’s still great tbh), and am trying to use the PartyBeaconHost and PartyBeaconClient objects to reserve space on a Server before actually connecting to it. At the moment, I’m using this to create a Persistent Party so players can match-make together and stay together through the menus etc.
Unfortunately, UParty (Another engine class entirely) relies on your Online Sub System of choice providing an implementation for OnlinePartyInterface (spoiler alert: literally NONE of them do this) - so unless you’re using Epic’s own OSS (whatever that is) then this class is pretty much useless.
I have been able to get the default player to create the Host Beacon (AOnlineBeaconHost) and Host Beacon Object (APartyBeaconHost - confusing naming convention btw) - but the Host Player doesn’t make themselves a reservation on the Server, so there appear to be no players in the party according to the beacon (even though the player is in the Session using PartySessionName).
This is how I create the Beacon Host and Beacon Host Object (in a custom manager class that takes the place of UParty)
So, a few questions after this point:
-
How do I make a reservation for the Server? I’m not sure if I need to create a Client Beacon for the Server Player and use that - or can I just add a reservation manually by calling APartyBeaconHost::AddReservation()
-
Do remote clients know when reservations are being made on the host they are connected to?
-
When a host decides “let’s create or host a new game session” - what do they do? I notice that UPartyBeaconState is a UObject rather than an Actor, which leads me to believe you’re meant to save it off somewhere, then create a new AOnlineBeaconHost and APartyBeaconHost on the other side and restore it from that state. Clients are in the ‘PartyGameSession’ together, but how do they know to re-make their reservations on the other side. Actually, what DO clients do on the other side?
-
Finally - Let’s say a Listen Server is hosting a Game Session - how do I set this up so that the session can be found by strangers, and they can make a reservation for the Game (with their own Party members) - but without joining the persistent party? Do I have to create an entirely different set of beacons for that?