カスタムオートマッチメイキングを実行する

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

事前にGS2マネージメントコンソールか、SDKからMatchmakingをカスタムオート(CustomAuto)で作成しておきます。
(このサンプルは 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. 'attribute1' => 10,
  20. 'attribute2' => 20,
  21. 'attribute3' => 30,
  22. 'attribute4' => 40,
  23. 'attribute5' => 50,
  24. 'searchAttribute1Min' => 0, 'searchAttribute1Max' => 20,
  25. 'searchAttribute2Min' => 10, 'searchAttribute2Max' => 30,
  26. 'searchAttribute3Min' => 20, 'searchAttribute3Max' => 40,
  27. 'searchAttribute4Min' => 30, 'searchAttribute4Max' => 50,
  28. 'searchAttribute5Min' => 40, 'searchAttribute5Max' => 60,
  29. 'accessToken' => $accessToken
  30. ];
  31. $result = $client->customAutoDoMatchmaking($request)
  32. $gathering = $result['item'];
  33. // $result['done'] が true を返した場合はマッチメイキングは完了しています。
  34. // その場合、$gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
  35. // $gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
  36. // 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  37. //
  38. // $result['done'] が false の場合は検索処理が一定時間経過ものの、まだマッチメイキングは完了していません。
  39. // $result['searchContext'] に検索の中断状態に関するトークンが返ります。
  40. // 中断されたマッチメイキングを再開する
  41. $request = [
  42. 'matchmakingName' => $matchmakingName,
  43. 'attribute1' => 10,
  44. 'attribute2' => 20,
  45. 'attribute3' => 30,
  46. 'attribute4' => 40,
  47. 'attribute5' => 50,
  48. 'searchAttribute1Min' => 0, 'searchAttribute1Max' => 20,
  49. 'searchAttribute2Min' => 10, 'searchAttribute2Max' => 30,
  50. 'searchAttribute3Min' => 20, 'searchAttribute3Max' => 40,
  51. 'searchAttribute4Min' => 30, 'searchAttribute4Max' => 50,
  52. 'searchAttribute5Min' => 40, 'searchAttribute5Max' => 60,
  53. 'accessToken' => $accessToken,
  54. 'searchContext' => $gathering['searchContext']
  55. ];
  56. $result = $client->customAutoDoMatchmaking($request)
  57. $gathering = $result['item'];
  58. // $result['done'] が true を返すまで繰り返します。
  59. // ギャザリングに参加しているユーザID一覧をポーリングで取得する
  60. $request = [
  61. 'matchmakingName' => $matchmakingName,
  62. 'gatheringId' => $gathering['gatheringId'],
  63. 'accessToken' => $accessToken
  64. ];
  65. $users = $client->customAutoDescribeJoinedUser($request)['items'];
  66. // $users にギャザリングに参加中のユーザID一覧が返ります
  67. // 参加しているギャザリングから抜ける
  68. $request = [
  69. 'matchmakingName' => $matchmakingName,
  70. 'gatheringId' => $gathering['gatheringId'],
  71. 'accessToken' => $accessToken
  72. ];
  73. $client->customAutoLeaveGathering($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. # マッチメイキングを実行する
  15. matchmaking_name = 'matchmaking-0001'
  16. client = Gs2::Matchmaking::Client.new(region, CLIENT_ID, CLIENT_SECRET)
  17. request = {
  18. 'matchmakingName' => matchmaking_name,
  19. 'attribute1' => 10,
  20. 'attribute2' => 20,
  21. 'attribute3' => 30,
  22. 'attribute4' => 40,
  23. 'attribute5' => 50,
  24. 'searchAttribute1Min' => 0, 'searchAttribute1Max' => 20,
  25. 'searchAttribute2Min' => 10, 'searchAttribute2Max' => 30,
  26. 'searchAttribute3Min' => 20, 'searchAttribute3Max' => 40,
  27. 'searchAttribute4Min' => 30, 'searchAttribute4Max' => 50,
  28. 'searchAttribute5Min' => 40, 'searchAttribute5Max' => 60,
  29. 'accessToken' => access_token
  30. }
  31. result = client->custom_auto_do_matchmaking(request)
  32. gathering = result['item']
  33.         
  34. # result['done'] が true を返した場合はマッチメイキングは完了しています。
  35. # その場合、gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
  36. # gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
  37. # 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  38. #
  39. # gathering['done'] が false の場合は検索処理が一定時間経過ものの、まだマッチメイキングは完了していません。
  40. # result['searchContext'] に検索の中断状態に関するトークンが返ります。
  41. # 中断されたマッチメイキングを再開する
  42. request = {
  43. 'matchmakingName' => matchmaking_name,
  44. 'attribute1' => 10,
  45. 'attribute2' => 20,
  46. 'attribute3' => 30,
  47. 'attribute4' => 40,
  48. 'attribute5' => 50,
  49. 'searchAttribute1Min' => 0, 'searchAttribute1Max' => 20,
  50. 'searchAttribute2Min' => 10, 'searchAttribute2Max' => 30,
  51. 'searchAttribute3Min' => 20, 'searchAttribute3Max' => 40,
  52. 'searchAttribute4Min' => 30, 'searchAttribute4Max' => 50,
  53. 'searchAttribute5Min' => 40, 'searchAttribute5Max' => 60,
  54. 'accessToken' => access_token,
  55. 'searchContext' => gathering['searchContext']
  56. }
  57. result = client->custom_auto_do_matchmaking(request)
  58. gathering = result['item']
  59.         
  60. # result['done'] が true を返すまで繰り返します。
  61. # ギャザリングに参加しているユーザID一覧をポーリングで取得する
  62. request = {
  63. 'matchmakingName' => matchmaking_name,
  64. 'gatheringId' => gathering['gatheringId'],
  65. 'accessToken' => access_token
  66. }
  67. users = client->custom_auto_describe_joined_user(request)['items']
  68.         
  69. # users にギャザリングに参加中のユーザID一覧が返ります
  70. # 参加しているギャザリングから抜ける
  71. request = {
  72. 'matchmakingName' => matchmaking_name,
  73. 'gatheringId' => gathering['gatheringId'],
  74. 'accessToken' => access_token
  75. }
  76. 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. CustomAutoDoMatchmakingRequest request = new CustomAutoDoMatchmakingRequest()
  19. .withMatchmakingName(matchmakingName)
  20. .withAttribute1(10)
  21. .withAttribute2(20)
  22. .withAttribute3(30)
  23. .withAttribute4(40)
  24. .withAttribute5(50)
  25. .withSearchAttribute1Min(0).withSearchAttribute1Max(20)
  26. .withSearchAttribute2Min(10).withSearchAttribute2Max(30)
  27. .withSearchAttribute3Min(20).withSearchAttribute3Max(40)
  28. .withSearchAttribute4Min(30).withSearchAttribute4Max(50)
  29. .withSearchAttribute5Min(40).withSearchAttribute5Max(60)
  30. .withAccessToken(accessToken);
  31. CustomAutoDoMatchmakingResult result = client.customAutoDoMatchmaking(request);
  32. CustomAutoGathering gathering = result.getItem();
  33. // result.getDone() が true を返した場合はマッチメイキングは完了しています。
  34. // その場合、gathering.getGatheringId() にマッチメイキング成立したギャザリングIDが、
  35. // gathering.getJoinPlayer() に現在そのギャザリングに参加している人数が取得されます
  36. // 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  37. //
  38. // result.getDone() が false の場合は検索処理が一定時間経過ものの、まだマッチメイキングは完了していません。
  39. // result.getSearchContext() に検索の中断状態に関するトークンが返ります。
  40. // 中断されたマッチメイキングを再開する
  41. CustomAutoDoMatchmakingRequest request = new CustomAutoDoMatchmakingRequest()
  42. .withMatchmakingName(matchmakingName)
  43. .withAttribute1(10)
  44. .withAttribute2(20)
  45. .withAttribute3(30)
  46. .withAttribute4(40)
  47. .withAttribute5(50)
  48. .withSearchAttribute1Min(0).withSearchAttribute1Max(20)
  49. .withSearchAttribute2Min(10).withSearchAttribute2Max(30)
  50. .withSearchAttribute3Min(20).withSearchAttribute3Max(40)
  51. .withSearchAttribute4Min(30).withSearchAttribute4Max(50)
  52. .withSearchAttribute5Min(40).withSearchAttribute5Max(60)
  53. .withAccessToken(accessToken)
  54. .withSearchContext(result.getSearchContext());
  55. CustomAutoDoMatchmakingResult result = client.customAutoDoMatchmaking(request);
  56. CustomAutoGathering gathering = result.getItem();
  57. // result.getDone() が true を返すまで繰り返します。
  58. // ギャザリングに参加しているユーザID一覧をポーリングで取得する
  59. CustomAutoDescribeJoinedUserRequest request = new CustomAutoDescribeJoinedUserRequest()
  60. .withMatchmakingName(matchmakingName)
  61. .withGatheringId(gathering.getGatheringId())
  62. .withAccessToken(accessToken);
  63. List<String> users = client.customAutoDescribeJoinedUser(request).getItems();
  64. // users にギャザリングに参加中のユーザID一覧が返ります
  65. // 参加しているギャザリングから抜ける
  66. CustomAutoLeaveGatheringRequest request = new CustomAutoLeaveGatheringRequest()
  67. .withMatchmakingName(matchmakingName)
  68. .withGatheringId(gathering.getGatheringId())
  69. .withAccessToken(accessToken);
  70. client.customAutoLeaveGathering(request);