MatchmakingRequest
Register this player for matchmaking, using the given skill and matchShortCode.
Players looking for a match using the same matchShortCode will be considered for a match, based on the matchConfig.
Each player must match the other for the match to be found.
If the matchShortCode points to a match with realtime enabled, in order to minimize latency, the location of Players and their proximity to one another takes precedence over their reciprocal skill values.
Request Parameters
Parameter | Required | Type | Description |
---|---|---|---|
action | No | string | The action to take on the already in-flight request for this match. Currently supported actions are: 'cancel' |
customQuery | No | JSON | The query that will be applied to the PendingMatch collection |
matchData | No | JSON | A JSON Map of any data that will be associated to the pending match |
matchGroup | No | string | Optional. Players will be grouped based on the distinct value passed in here, only players in the same group can be matched together |
matchShortCode | Yes | string | The shortCode of the match type this player is registering for |
participantData | No | JSON | A JSON Map of any data that will be associated to this user in a pending match |
skill | No | number | The skill of the player looking for a match |
Response Parameters
A response to a matchmaking request
Parameter | Type | Description |
---|---|---|
scriptData | ScriptData | A JSON Map of any data added either to the Request or the Response by your Cloud Code |
Nested types
ScriptData
A collection of arbitrary data that can be added to a message via a Cloud Code script.
Parameter | Type | Description |
---|---|---|
myKey | string | An arbitrary data key |
myValue | JSON | An arbitrary data value. |
Error Codes
Key | Value | Description |
---|---|---|
skill | may not be null | skill must be provided |
action | UNKNOWN | action is not valid |
matchShortCode | may not be null | matchShortCode must be provided |
matchShortCode | NOT_FOUND | No matchConfig was found with the given matchShortCode |
customQuery | INVALID_QUERY | No customQuery is not a valid mongo query |
match | NOT_FOUND | No match was found for the current player |
matchmaking | NOT_AVAILABLE | MatchMaking is not available for this game |
realtime | NOT_AVAILABLE | RealTime is not available for this game |
Code Samples
C#
using GameSparks.Api;
using GameSparks.Api.Requests;
using GameSparks.Api.Responses;
...
new MatchmakingRequest()
.SetAction(action)
.SetCustomQuery(customQuery)
.SetMatchData(matchData)
.SetMatchGroup(matchGroup)
.SetMatchShortCode(matchShortCode)
.SetParticipantData(participantData)
.SetSkill(skill)
.Send((response) => {
GSData scriptData = response.ScriptData;
});
ActionScript 3
import com.gamesparks.*;
import com.gamesparks.api.requests.*;
import com.gamesparks.api.responses.*;
import com.gamesparks.api.types.*;
...
gs.getRequestBuilder()
.createMatchmakingRequest()
.setAction(action)
.setCustomQuery(customQuery)
.setMatchData(matchData)
.setMatchGroup(matchGroup)
.setMatchShortCode(matchShortCode)
.setParticipantData(participantData)
.setSkill(skill)
.send(function(response:com.gamesparks.api.responses.MatchmakingResponse):void {
var scriptData:ScriptData = response.getScriptData();
});
Objective-C
#import "GS.h"
#import "GSAPI.h"
...
GSMatchmakingRequest* request = [[GSMatchmakingRequest alloc] init];
[request setAction:action;
[request setCustomQuery:customQuery;
[request setMatchData:matchData;
[request setMatchGroup:matchGroup;
[request setMatchShortCode:matchShortCode;
[request setParticipantData:participantData;
[request setSkill:skill;
[request setCallback:^ (GSMatchmakingResponse* response) {
NSDictionary* scriptData = [response getScriptData];
}];
[gs send:request];
C++
#include <GameSparks/generated/GSRequests.h>
using namespace GameSparks::Core;
using namespace GameSparks::Api::Responses;
using namespace GameSparks::Api::Requests;
...
void MatchmakingRequest_Response(GS& gsInstance, const MatchmakingResponse& response) {
GSData scriptData = response.getScriptData();
}
......
MatchmakingRequest request(gsInstance);
request.SetAction(action)
request.SetCustomQuery(customQuery)
request.SetMatchData(matchData)
request.SetMatchGroup(matchGroup)
request.SetMatchShortCode(matchShortCode)
request.SetParticipantData(participantData)
request.SetSkill(skill)
request.Send(MatchmakingRequest_Response);
Java
import com.gamesparks.sdk.api.autogen.GSRequestBuilder.MatchmakingRequest;
import com.gamesparks.sdk.api.autogen.GSResponseBuilder.MatchmakingResponse;
import com.gamesparks.sdk.api.autogen.GSTypes.*;
import com.gamesparks.sdk.api.GSEventListener;
...
gs.getRequestBuilder().createMatchmakingRequest()
.setAction(action)
.setCustomQuery(customQuery)
.setMatchData(matchData)
.setMatchGroup(matchGroup)
.setMatchShortCode(matchShortCode)
.setParticipantData(participantData)
.setSkill(skill)
.send(new GSEventListener<MatchmakingResponse>() {
@Override
public void onEvent(MatchmakingResponse response) {
}
});
Cloud Code
var request = new SparkRequests.MatchmakingRequest();
request.action = ...;
request.customQuery = ...;
request.matchData = ...;
request.matchGroup = ...;
request.matchShortCode = ...;
request.participantData = ...;
request.skill = ...;
var response = request.Send();
var scriptData = response.scriptData;