dylan-1 avatar image
dylan-1 asked

Marketplace sdk MP::Lobby::CreateLobby is meant to be stateful, with proof

We have implemented the marketplace SDK using the Multiplayer::Lobby namespace that has a breaking bug:

CreateLobby creates a stateless lobby. According to PF staff, they made it sound like it was expected. However, this GitHub doc (Latest commit 4420065 on Dec 16, 2022) proves that this namespace is meant to be stateful; that this is a bug that PF seems to be avoiding.

When will this critical bug be fixed? It's as if this module was outsourced and no one at PF seems to actually know it's even a bug or how to fix it - and, instead, goes with just pushing people to the barely-supported, Mac/Linux-killing, 0-doc OSS SDK that doesn't even support premades for matchmaking (who would want this?).

Related Side Notes:

  • Either an incomplete function or misleading: The API docs also make it look like events are natively-implemented (like the old, legacy namespaces we don't have access to). Not finding out you require SignalR to use these until you've already implemented it is in pretty poor taste - SignalR being a vastly complex pubsub setup that is completely detached from PlayFab. This is misleading as well that the keyword SignalR is not even listed in here; absolutely 0 indication that a third-party client is required for this. The docs very casually imply that it's native, but it is not.

  • Another breaking issue: Your docs imply we don't need SignalR if we want to poll, but there's not even a polling option for checking for Matchmaking friend invites to a game.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

JayZuo avatar image
JayZuo answered

Sorry for the confusion here. By default, CreateLobby will create a lobby using connections. When connections are used, notifications are sent to subscribed players, disconnect detection removes connectionHandles, only owner migration policies using connections are allowed, and lobbies must have at least one connected member to be searchable or be a server hosted lobby with a connected server. For more information, please see UseConnections section in CreateLobby API.

If you do not need real-time notifications and do not want to use PlayFab Multiplayer SDK (PF OSS for Unreal Engine), then you can set UseConnections to false and also OwnerMigrationPolicy to None, then lobbies do not need connections to be searchable.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

dylan-1 avatar image dylan-1 commented ·

Thanks for some insight. To clarify: Without Connections or OwnerMigration, there's now a stateful lobby but with crippled functionality? Is that correct?

  • No owner migration.

  • No callbacks.

  • I can't use Friend Invites no matter what since there's not even a call to poll it.

The greater question is... why do the API docs have 0 mentions of SignalR and why isn't something already implemented for us for events since the Lobby is pretty pointless without it. Feels like an incomplete, sloppy early access module.

All forms of the PF lobby/matchmaking (minus the obsolete stuff that looked like it actually worked and had decent docs) feel low-effort in all forms (stale docs, missing features, breaking namespaces without flags that it's breaking, this issue...). Why would you force us to use incomplete new features without even porting critical features like events? And not tell us what's incomplete/obsolete?

This has been one of the most frustrating experiences I've ever had with game servers and GBaaS, and I've been coding these since 2016.

0 Likes 0 ·
JayZuo avatar image JayZuo ♦ dylan-1 commented ·

Yes, if UseConnections is set to false, there will be no notification and hence no automatic owner migration, no callbacks. And we know real-time notifications is very important for Lobby. Thus, PlayFab provides Multiplayer SDKs which simplifies your work for cross-network and cross-platform play by handling real-time notifications for you. PlayFab Multiplayer SDK is what already implemented for you for events.

Back to the question of SignalR documentation, you can find it at Real-time notifications for Lobby and Matchmaking APIs. Just as the doc said, Using Lobby, Matchmaking, and real-time notifications directly with REST and SignalR APIs is significantly more complex than using Multiplayer SDKs and should only be done if the SDKs don't meet your needs.

0 Likes 0 ·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.