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

ここではサーバサイドSDKの解説をしています。
GS2 SDK for Unity のサンプルは GS2 SDK for Unity のページをご参照ください。

事前にGS2マネージメントコンソールか、SDKからMatchmakingをパスコード(Passcode)で作成しておきます。
(このサンプルは matchmaking-0001 という名前の 
Matchmaking が作成されているものとしています)

PHP
  1. // アクセス先リージョンとGSIを設定
  2. $region = 'ap-northeast-1';
  3. $credentials = new Gs2Credentials(CLIENT_ID, CLIENT_SECRET);
  4. // アクセストークンを取得
  5. $serviceId = 'service-0001';
  6. $userId = 'user-0001';
  7. $authclient = new Gs2AuthClient($region, $credentials);
  8. $request = [
  9. 'serviceId' => $serviceId,
  10. 'userId' => $userId
  11. ];
  12. $result = $authclient->login($request);
  13. $accessToken = $result['token'];
  14. // ギャザリングを作成する
  15. $matchmakingName = 'matchmaking-0001';
  16. $client = new Gs2MatchmakingClient($region, $credentials);
  17. $request = [
  18.         'matchmakingName' => $matchmakingName,
  19.         'accessToken' => $accessToken
  20. ];
  21. $gathering = $client->passcodeCreateGathering($request)['item'];
  22. // $gathering['passcode'] に作成したギャザリングに参加するためのパスコードが返ります
  23. // 何らかの共有手段をゲーム側で用意し、他のユーザがギャザリングに参加できるようにします
  24. // ギャザリングに参加する
  25. $passcode = '00000000';
  26. $request = [
  27.         'matchmakingName' => $matchmakingName,
  28.         'passcode' => $passcode,
  29.         'accessToken' => $accessToken
  30. ];
  31. $gathering = $client->passcodeJoinGathering($request)['item'];
  32. // $gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
  33. // $gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
  34. // 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  35. // ギャザリングに参加しているユーザID一覧をポーリングで取得する
  36. $request = [
  37. 'matchmakingName' => $matchmakingName,
  38. 'gatheringId' => $gathering['gatheringId'],
  39. 'accessToken' => $accessToken
  40. ];
  41. $users = $client->passcodeDescribeJoinedUser($request)['items'];
  42. // $users にギャザリングに参加中のユーザID一覧が返ります
  43. // 参加しているギャザリングから抜ける
  44. $request = [
  45. 'matchmakingName' => $matchmakingName,
  46. 'gatheringId' => $gathering['gatheringId'],
  47. 'accessToken' => $accessToken
  48. ];
  49. $client->passcodeLeaveGathering($request);

Ruby
  1. # アクセス先リージョンを設定
  2. region = 'ap-northeast-1'
  3. # アクセストークンを取得
  4. service_id = 'service-0001'
  5. user_id = 'user-0001'
  6. authclient = Gs2::Auth::Client.new(region, CLIENT_ID, CLIENT_SECRET)
  7. request = {
  8. 'serviceId' => service_id,
  9. 'userId' => user_id
  10. }
  11. result = authclient->login(request)
  12. access_token = result['token']
  13. # ギャザリングを作成する
  14. matchmaking_name = 'matchmaking-0001'
  15. client = Gs2::Matchmaking::Client.new(region, CLIENT_ID, CLIENT_SECRET)
  16. request = {
  17.         'matchmakingName' => matchmaking_name,
  18.         'accessToken' => access_token
  19. }
  20. gathering = client.passcode_create_gathering(request)['item']
  21. # gathering['passcode'] に作成したギャザリングに参加するためのパスコードが返ります
  22. # 何らかの共有手段をゲーム側で用意し、他のユーザがギャザリングに参加できるようにします
  23. # ギャザリングに参加する
  24. passcode = '00000000'
  25. request = {
  26.         'matchmakingName' => matchmakingName,
  27.         'passcode' => passcode,
  28.         'accessToken' => access_token
  29. }
  30. gathering = client.passcode_join_gathering(request)['item'];
  31. # gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
  32. # gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
  33. # 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  34. # ギャザリングに参加しているユーザID一覧をポーリングで取得する
  35. request = {
  36. 'matchmakingName' => matchmaking_name,
  37. 'gatheringId' => gathering['gatheringId'],
  38. 'accessToken' => access_token
  39. }
  40. users = client->custom_auto_describe_joined_user(request)['items']
  41. # users にギャザリングに参加中のユーザID一覧が返ります
  42. # 参加しているギャザリングから抜ける
  43. request = {
  44. 'matchmakingName' => matchmaking_name,
  45. 'gatheringId' => gathering['gatheringId'],
  46. 'accessToken' => access_token
  47. }
  48. client->custom_auto_leave_gathering(request)

Java
  1. // アクセス先リージョンとGSIを設定
  2. String region = "ap-northeast-1";
  3. IGs2Credential credentials = new BasicGs2Credential(CLIENT_ID, CLIENT_SECRET);
  4. // アクセストークンを取得
  5. String serviceId = "service-0001";
  6. String userId = "user-0001";
  7. LoginRequest request = new LoginRequest()
  8. .withServiceId(serviceId)
  9. .withUserId(userId);
  10. Gs2AuthClient authclient = new Gs2AuthClient(credentials)
  11. .withRegion(region);
  12. LoginResult result = authclient.login(request);
  13. String accessToken = result.getToken();
  14. // ギャザリングを作成する
  15. String matchmakingName = 'matchmaking-0001';
  16. Gs2MatchmakingClient client = new Gs2MatchmakingClient(credentials)
  17.         .withRegion(region);
  18. PasscodeCreateGatheringRequest request = new PasscodeCreateGatheringRequest()
  19.         .withMatchmakingName(matchmaking.getName())
  20.         .withAccessToken(accessToken);
  21. PasscodeGathering gathering = client.passcodeCreateGathering(request).getItem();
  22. // gathering.getPasscode() に作成したギャザリングに参加するためのパスコードが返ります
  23. // 何らかの共有手段をゲーム側で用意し、他のユーザがギャザリングに参加できるようにします
  24. // ギャザリングに参加する
  25. String passcode = "00000000";
  26. PasscodeJoinGatheringRequest request = new PasscodeJoinGatheringRequest()
  27.         .withMatchmakingName(matchmakingName)
  28.         .withPasscode(passcode)
  29.         .withAccessToken(accessToken);
  30. PasscodeGathering gathering = client.passcodeJoinGathering(request).getItem();
  31. // gathering.getGatheringId() にマッチメイキング成立したギャザリングIDが、
  32. // gathering.getJoinPlayer() に現在そのギャザリングに参加している人数が取得されます
  33. // 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  34. // ギャザリングに参加しているユーザID一覧をポーリングで取得する
  35. PasscodeDescribeJoinedUserRequest request = new PasscodeDescribeJoinedUserRequest()
  36. .withMatchmakingName(matchmakingName)
  37. .withGatheringId(gathering.getGatheringId())
  38. .withAccessToken(accessToken);
  39. List<String> users = client.passcodeDescribeJoinedUser(request).getItems();
  40. // users にギャザリングに参加中のユーザID一覧が返ります
  41. // 参加しているギャザリングから抜ける
  42. PasscodeLeaveGatheringRequest request = new PasscodeLeaveGatheringRequest()
  43. .withMatchmakingName(matchmakingName)
  44. .withGatheringId(gathering.getGatheringId())
  45. .withAccessToken(accessToken);
  46. client.passcodeLeaveGathering(request);