パスコードマッチメイキングを実行

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

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

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

(このサンプルは 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->passcodeCreateGathering($request)['item'];

// $gathering['passcode'] に作成したギャザリングに参加するためのパスコードが返ります
// 何らかの共有手段をゲーム側で用意し、他のユーザがギャザリングに参加できるようにします

// ギャザリングに参加する
$passcode = '00000000';
$request = [
        'matchmakingName' => $matchmakingName,
        'passcode' => $passcode,
        'accessToken' => $accessToken
];
$gathering = $client->passcodeJoinGathering($request)['item'];

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

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

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

// 参加しているギャザリングから抜ける
$request = [
        'matchmakingName' => $matchmakingName,
        'gatheringId' => $gathering['gatheringId'],
        'accessToken' => $accessToken
];
$client->passcodeLeaveGathering($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.passcode_create_gathering(request)['item']

# gathering['passcode'] に作成したギャザリングに参加するためのパスコードが返ります
# 何らかの共有手段をゲーム側で用意し、他のユーザがギャザリングに参加できるようにします

# ギャザリングに参加する
passcode = '00000000'
request = {
        'matchmakingName' => matchmakingName,
        'passcode' => passcode,
        'accessToken' => access_token
}
gathering = client.passcode_join_gathering(request)['item'];

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

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

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

# 参加しているギャザリングから抜ける
request = {
        'matchmakingName' => matchmaking_name,
        'gatheringId' => gathering['gatheringId'],
        'accessToken' => access_token
}
client->custom_auto_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);
PasscodeCreateGatheringRequest request = new PasscodeCreateGatheringRequest()
        .withMatchmakingName(matchmaking.getName())
        .withAccessToken(accessToken);
PasscodeGathering gathering = client.passcodeCreateGathering(request).getItem();

// gathering.getPasscode() に作成したギャザリングに参加するためのパスコードが返ります
// 何らかの共有手段をゲーム側で用意し、他のユーザがギャザリングに参加できるようにします

// ギャザリングに参加する
String passcode = "00000000";
PasscodeJoinGatheringRequest request = new PasscodeJoinGatheringRequest()
        .withMatchmakingName(matchmakingName)
        .withPasscode(passcode)
        .withAccessToken(accessToken);
PasscodeGathering gathering = client.passcodeJoinGathering(request).getItem();

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

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

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

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