I’m currently trying to get to grips with some of the advanced networking stuff available in the engine, like Beacons and Parties etc but I’m running into some brickwalls.
It seems like there’s no default Party Interface to fall back to for sending events between unconnected players. I was under the impression that this was exactly what the Party Interface / beacon system was for - to allow unconnected players to send requests / data to each other but it seems like this is a PS4 / Xbox only feature right now.
Unreal Tournament supports pretty much everything I want to do - but I’m assuming there’s an Online Subsystem that works with Epic’s Launcher, cus I can’t find anything in the source code that’s much different to the engine. Right now I’m just trying to create a ‘PersistentParty’ when a player logs into the main menu. I kind of want to replicate Gears of War 3’s Party system because it was really good and it suits me perfectly.
- Players should create a ‘Party’ when they login to the main menu.
- Menu party can be Invite Only, Friends Only, Public etc
- Party host can search for online lobbies or host a new lobby.
- A ‘Lobby’ is a special kind of Party that can be searched for by the public, original lobby leader configs game settings then transports all players to the actual match.
Problem is there doesn’t seem to be a default party interface, and all the subsystems return nullptr for IOnlinePartyInterface.
This is where I am so far. “UBZGame_PartyManager” is a class that inherits from UParty. I’ve included the Party, Qos and Lobby modules - and enabled the OnlineFramework plugin. I get a failure when trying to create the Persistent party saying no interface exists. Tried this in both PIE and Standalone with Steam - nothing.
void UBZGame_LocalPlayer::TryCreatePersistentParty()
{
IOnlineIdentityPtr OnlineIDInterface = Online::GetIdentityInterface();
TSharedPtr<const FUniqueNetId> UserID = OnlineIDInterface->GetUniquePlayerId(GetControllerId());
const UBZGame_NetworkManager* WorldNM = UBZGame_GameInstance::GetNetworkManager(this);
UBZGame_PartyManager* WorldPM = WorldNM->GetPartyManager();
// Skip if already in a persistent party?
if (WorldPM->GetPersistentParty() != nullptr) { return; }
WorldPM->CreatePersistentParty(*UserID);
}
Feel like this is stuff that @JoeGraf would know… More docs on Beacons / Parties and even better - a working example would be great!