question

dylan-1 avatar image
dylan-1 asked

Where is the Unreal-specific OSS documentation that the C++ docs have?

The only OSS docs are ini file setup:

https://learn.microsoft.com/en-us/gaming/playfab/features/multiplayer/networking/party-unreal-engine-oss-quickstart

Where are the Unreal-specific docs like the C++ doc (that is vastly different than the OSS SDK, comparable to giving us a generic JS doc for learning React)? The Unreal one is wildly incomplete - and barely any staff seems to know anything about it.

Before you send me a generalized link to Epic's OSS: No, this is not enough. Anyone that has experienced PF with OSS knows that your interface terminology/vocab is vastly different, as are the entry points. Even the args required are completely different in both name and overload size.

We need a map. Best practices. Flow. Interactions. The failure to even mention that premades aren't supported here or that OSS kills mac/linux support puts a pretty sour spot in the mouth to only find out later, since it's not listed in the docs.

Related Notes:

  • If the average C++ dev (both Indie and AAA) uses Unreal, why would there only be a raw C++ doc? This helps almost no one -- in quite a literal sense.

  • Whoever links the C++ SDK doc when asking about the OSS C++ SDK doc should cease doing this to stop confusing your users since the person linking that likely has no actual development experience. C++ does not equal Unreal OSS C++; not only in architecture and theory, but completely different namespaces. Not even the terminology/vocab is even remotely similar. The args that OSS requires are pretty much 1/3 the ones listed, too. The callbacks are also wildly different, usually responding with only a bool. Everything is different. if there's a superior instructing agents to canned link the C++ doc, I hope their managers read this and audit them for dev knowledge.

  • While there, you may want to mark the docs that your marketplace SDK Multiplayer::Lobby has been broken for the past 2 years since all Q+A about this simply refers us to OSS that is already very limited, undoc'd and barely supported - seemingly by an outsourced third party that isn't even PF).

apissdksunrealmultiplayerdocumentation
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

As the Introduction of PlayFab Multiplayer Unreal Online Subsystem (OSS) said,

This OSS layer works seamlessly on top of the existing base platform OSS layers (such as the base GDK OSS layer provided by Epic for Xbox and PC Game Pass). PlayFab OSS compliments the base OSS by adding support for PlayFab Lobby, Matchmaking, Party networking and Voice over Internet Protocol (VOIP).

Thus, while using PF OSS, you will need to use the IOnlineSession interface provided by Epic, which is different from the APIs used in PlayFab Multiplayer C/C++ SDK. For how to use OnlineSubsystem interfaces, please see https://docs.unrealengine.com/5.0/en-US/online-subsystem-session-interface-in-unreal-engine/ and the more detailed list of interfaces are available here: https://docs.unrealengine.com/5.0/en-US/API/Plugins/OnlineSubsystem/Interfaces/IOnlineSession/.

These docs Epic provides should be sufficient and it can get quickly outdated for newer versions of OSS interface when Epic updates them. So, we do not have other docs for using the PlayFab OSS. Our goal for developers to use the Unreal Online Subsystem interface is without knowing the implementation of how PlayFab implements its matchmaking and session management, i.e., if you want to switch between say Steam and Xbox then the game only needs to modify the configuration file.

Compared with PlayFab Multiplayer C/C++ SDK, PF OSS does have some limitations. For example, Epic's online session interface doesn't provide an API like "JoinMatchmaking" which is needed to support matchmaking with your friends as a team. In general, if you are using Unreal Engine and are familiar with Unreal's OSS interface (and its limitations) then we would say go with PlayFabOnlineSubsystem, if you want more control over the APIs and don't mind implementing the callbacks in your game, we would suggest go with PlayFabMultiplayer C++ SDK.

5 comments
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 ·

This is not an answer - As mentioned earlier, the mapping of terminology between PF and OSS is vastly different, as well as the requirements/limitations.

Tell me, Jay, without looking up any support scripts: From Epic's docs, without looking at any support scripts -- and with links to OSS documentation:

  1. What is a PF Lobby is called in OSS?

  2. What a PF MatchId is called in OSS?

You cannot, because a vocab map doesn't exist and your vocabulary/terminology is completely mapped differently than Epic's OSS. Whoever gave the order to quote this has clearly never used PF's OSS.

Additionally, limitations/reqs that are either unmentioned or needed for a wrapper document to explain the really important limitations that are likely buried if they do exist:

  1. Where does it state that Mac/Linux is unsupported? Even if it does state this, this is surely something you want your users to know front+center.

  2. Where does it state that you cannot matchmake with friends? Even if it does state this, this is surely something you want your users to know front+center.

  3. Where does it state that the OSS SDK is incompatible with the Marketplace SDK, yet compatible with party SDK?

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

As I've mentioned, our goal for developers to use the PF OSS is without knowing the implementation of how PlayFab implements its matchmaking and session management. So, when using PF OSS, there is no need to worry about the mapping of terminology between PF and OSS. You can forget the terminology (Lobby, MatchId) in PlayFab and use it just the same as other Online Subsystems in UE.

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

For the other questions:

  1. It stated both in the OSS Overview and GitHub README.

  2. PF OSS does support matchmaking with friends. What it doesn't support is matchmaking with your friends as a team. We didn't call out this as Unreal's OSS doesn't provide such feature. We'd suppose developers familiar with Unreal's OSS interface will use PF OSS and they do not need to know all the details or features of PlayFab. If they found some features can't be implemented with OSS, they can then dig into PlayFab and try to use PlayFabMultiplayer C++ SDK instead.

  3. PF OSS can be used together with Unreal Marketplace Plugin, they are not incompatible. It's the PF OSS can't interact with the marketplace plugin, there is no sync point between the two. For example, if you are using matchmaking REST API from the marketplace plugin, there will be no OSS delegate fired.

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

Saying that Epic's docs are sufficient is essentially a slap in the face to your users and a non-answer, as this doesn't include a vastly-different terminology map, disclaim the breaking issues/limitations or any of this. I assume you have never used your OSS flavor or this would not be said.

I recall that comments are unmonitored - follow up question here.

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

As I've mentioned, our goal for developers to use the PF OSS is without knowing the implementation of how PlayFab implements its matchmaking and session management. So, when using PF OSS, there is no need to worry about the mapping of terminology between PF and OSS. You can forget the terminology (Lobby, MatchId) in PlayFab and use it just the same as other Online Subsystems in UE.

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.