question

dylan-1 avatar image
dylan-1 asked

Diff between ambiguous GetMatch between OSS vs Client::Multiplayer SDKs?

What is the difference between the OSS SDK GetMatch():

https://learn.microsoft.com/en-us/gaming/playfab/features/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmatchmaking/functions/pfmatchmakingticketgetmatch

vs the Client SDK GetMatch():

https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/matchmaking/get-match?view=playfab-rest

The quickstart suggested we use the client SDK multiplayer::matchmaking then use the OSS SDK for callbacks. Since I'm seeing some funcs that do the same thing in both the SDKs, I'm starting to question myself which one to use (I thought we are supposed to use both, where they compliment each other).

Or does it do the same thing? Eg: If I already implemented Client SDK Multiplayer/Matchmaking and I want to sub to callbacks, I don't need to recode`PFMultiplayerCreateMatchmakingTicket` in OSS and it'll still work?

apissdksunrealdocumentation
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 answered

Figured it out with some deep research and help from PF staff in Discord: 100% completely different; they are incompatible -- and the OSS one supports local (solo queue or console partner) multiplayer ONLY while the Client::Multiplayer is OBSOLETE (not just deprecated - broken due to GameMode). The answer is... USE NEITHER of these. There are 5 matchmaking APIs and almost all the docs are desync'd.

The answer is: Use marketplace sdk Multiplayer::Matchmaking API ONLY. Yes, the old API had event callbacks; the new API is pretty low-effort/beta-like and requires you to poll (+$$/effort).

The matchmaking docs suggest you implement the marketplace sdk then add OSS for event callbacks to prevent polling, but this is actually (once again) a stale doc that's incorrect:

https://discord.com/channels/684463257276121192/803421812352090112/1072941704744796320

The marketplace sdk and the OSS sdk have 0 interactions together; callbacks won't work. Even if you implement OSS, the big caveat no one seems to tell you is that it's for local matchmaking (solo queue) only! If you plan to have premades, OSS will not work for you, from what I can tell.

Stick with the marketplace SDK and poll with the Multiplayer::Matchmaking API.

(!) To clarify further: Client/Matchmaking API is obsolete/broken (since there is no GameMode, so it will never work on newer accounts). The docs don't tell you this.

(!) To clarify further: Matchmaker API is obsolete/broken (since there is no GameMode, so it will never work on newer accounts). The docs don't tell you this.

(!) To clarify further: The entire Client/ API is deprecated ("v1"), even though the Unreal quickstart starts you here (at immediately-deprecated APIs). The docs don't tell you this.

[There are a few related posts I'm going to copy+paste this to; hope that's ok -- clarifies so much]

1 comment
10 |1200

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

Xiao Zha avatar image Xiao Zha commented ·

Thanks for sharing this with the community.

0 Likes 0 ·
Xiao Zha avatar image
Xiao Zha answered

The first link you mention is the Client SDK GetMatch method (which is OSS SDK in Unreal). The second link you mention is the REST API. If you are using the OSS SDK, you may follow the docs Matchmaking quickstart - client SDK - PlayFab | Microsoft Learn to use the GetMatch method in the first link you mention.

3 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 ·

Thanks: Some follow-up questions --

  1. If I already coded CreateMatchmakingTicket (2nd link) via the Unreal marketplace plugin SDK (Multiplayer::Matchmaking), that accomplishes the same thing as the OSS variant `PFMatchmakingTicketGetMatch` (1st link), correct?

  2. To further clarify: If I used the marketplace plugin for CreateMatchmakingTicket (2nd link), will I still get OSS callbacks?

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

What happened is that I:

  1. Originally coded Client/Matchmaking (since your quickstart doc went down the Client/ API line) and found out the Client/Matchmaking api was broken due to GameMode !existing anymore.

  2. I then went to Matchmaker API since I thought it was the only other one, which ... ended up also deprecated, too (?!).

  3. I then went to Multiplayer::Matchmaking, which was the latest advice from PF staff.

  4. For callbacks, I added the OSS SDK (I only just added this). I noticed a bunch of calls that are ambiguously similar to the Multiplayer::Matchmaking funcs in the other SDK. I really prefer not to port matchmaking code for a 4th time - it's getting ridiculous.

If I already implemented CreateTicket(), etc in Multiplayer::Matchmaking API (the other SDK), I don't need to port it again to the OSS SDK, do I? I can keep the other SDK calls and just use the OSS one for event callbacks?

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

No, they are not the exactly the same. If you are using the CreateMatchmakingTicket (2nd link, which is the REST API) via the Unreal marketplace plugin SDK, you need to manually poll the service by TicketId to access the Status of the ticket in matchmaking. If you don’t want to do this, you need to follow the docs Matchmaking quickstart - client SDK - PlayFab | Microsoft Learn to use Unreal Mutiplayer SDK: OSS.

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.