誰とでもマッチメイキングを実行する

ここではサーバサイドSDKの解説をしています。

GS2 SDK for Unity のサンプルは GS2 SDK for Unity のページをご参照ください。

事前にGS2マネージメントコンソールか、SDKからMatchmakingを誰とでも(Anybody)で作成しておきます。

(このサンプルは matchmaking-0001 という名前の Matchmaking が作成されているものとしています)

PHP

// アクセス先リージョンとGSIを設定
$region = 'ap-northeast-1';
$credentials = new Gs2Credentials(CLIENT_ID, CLIENT_SECRET);

// アクセストークンを取得
$serviceId = 'service-0001';
$userId = 'user-0001';
$authclient = new Gs2AuthClient($region, $credentials);
$request = [
 'serviceId' => $serviceId,
 'userId' => $userId
];
$result = $authclient->login($request);
$accessToken = $result['token'];

// マッチメイキングを実行する
$matchmakingName = 'matchmaking-0001';
$client = new Gs2MatchmakingClient($region, $credentials);
$request = [
        'matchmakingName' => $matchmakingName,
        'accessToken' => $accessToken
];
$gathering = $client->anybodyDoMatchmaking($request)['item'];

// $gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
// $gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
// 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます

// ギャザリングに参加しているユーザID一覧をポーリングで取得する
$request = [
        'matchmakingName' => $matchmakingName,
        'gatheringId' => $gathering['gatheringId'],
        'accessToken' => $accessToken
];
$users = $client->anybodyDescribeJoinedUser($request)['items'];

// $users にギャザリングに参加中のユーザID一覧が返ります

// 参加しているギャザリングから抜ける
$request = [
        'matchmakingName' => $matchmakingName,
        'gatheringId' => $gathering['gatheringId'],
        'accessToken' => $accessToken
];
$client->anybodyLeaveGathering($request);

Ruby

# アクセス先リージョンを設定
region = 'ap-northeast-1'

# アクセストークンを取得
service_id = 'service-0001'
user_id = 'user-0001'
authclient = Gs2::Auth::Client.new(region, CLIENT_ID, CLIENT_SECRET)
request = {
 'serviceId' => service_id,
 'userId' => user_id
}
result = authclient.login(request)
access_token = result['token']
# マッチメイキングを実行する
matchmaking_name = 'matchmaking-0001'
client = Gs2::Matchmaking::Client.new(region, CLIENT_ID, CLIENT_SECRET)
request = {
        'matchmakingName' => matchmaking_name,
        'accessToken' => access_token
}
gathering = client.anybody_do_matchmaking(request)['item']

# gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
# gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
# 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます

# ギャザリングに参加しているユーザID一覧をポーリングで取得する
request = {
        'matchmakingName' => matchmaking_name,
        'gatheringId' => gathering['gatheringId'],
        'accessToken' => access_token
}
users = client.anybody_describe_joined_user(request)['items']

# users にギャザリングに参加中のユーザID一覧が返ります

# 参加しているギャザリングから抜ける
request = {
        'matchmakingName' => matchmaking_name,
        'gatheringId' => gathering['gatheringId'],
        'accessToken' => access_token
}
client.anybody_leave_gathering(request)

Java

// アクセス先リージョンとGSIを設定
String region = "ap-northeast-1";
IGs2Credential credentials = new BasicGs2Credential(CLIENT_ID, CLIENT_SECRET);

//アクセストークンを取得
String serviceId = "service-0001";
String userId = "user-0001";
LoginRequest request = new LoginRequest()
        .withServiceId(serviceId)
        .withUserId(userId);
Gs2AuthClient authclient = new Gs2AuthClient(credentials)
        .withRegion(region);
LoginResult result = authclient.login(request);
String accessToken = result.getToken();

// マッチメイキングを実行する
String matchmakingName = "matchmaking-0001";
Gs2MatchmakingClient client = new Gs2MatchmakingClient(credentials)
        .withRegion(region);
AnybodyDoMatchmakingRequest request = new AnybodyDoMatchmakingRequest()
        .withMatchmakingName(matchmakingName)
        .withAccessToken(accessToken);
AnybodyGathering gathering = client.anybodyDoMatchmaking(request).getItem();

// gathering.getGatheringId() にマッチメイキング成立したギャザリングIDが、
// gathering.getJoinPlayer() に現在そのギャザリングに参加している人数が取得されます
// 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます

// ギャザリングに参加しているユーザID一覧をポーリングで取得する
AnybodyDescribeJoinedUserRequest request = new AnybodyDescribeJoinedUserRequest()
        .withMatchmakingName(matchmakingName)
        .withGatheringId(gathering.getGatheringId())
        .withAccessToken(accessToken);
List<String> users = client.anybodyDescribeJoinedUser(request).getItems();

// users にギャザリングに参加中のユーザID一覧が返ります

// 参加しているギャザリングから抜ける
AnybodyLeaveGatheringRequest request = new AnybodyLeaveGatheringRequest()
        .withMatchmakingName(matchmakingName)
        .withGatheringId(gathering.getGatheringId())
        .withAccessToken(accessToken);
client.anybodyLeaveGathering(request);