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

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

事前にGS2マネージメントコンソールか、SDKからMatchmakingを誰とでも(Anybody)で作成しておきます。
(このサンプルは 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->anybodyDoMatchmaking($request)['item'];
  22. // $gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
  23. // $gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
  24. // 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  25. // ギャザリングに参加しているユーザID一覧をポーリングで取得する
  26. $request = [
  27. 'matchmakingName' => $matchmakingName,
  28. 'gatheringId' => $gathering['gatheringId'],
  29. 'accessToken' => $accessToken
  30. ];
  31. $users = $client->anybodyDescribeJoinedUser($request)['items'];
  32. // $users にギャザリングに参加中のユーザID一覧が返ります
  33. // 参加しているギャザリングから抜ける
  34. $request = [
  35. 'matchmakingName' => $matchmakingName,
  36. 'gatheringId' => $gathering['gatheringId'],
  37. 'accessToken' => $accessToken
  38. ];
  39. $client->anybodyLeaveGathering($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.anybody_do_matchmaking(request)['item']
  21.         
  22. # gathering['gatheringId'] にマッチメイキング成立したギャザリングIDが、
  23. # gathering['joinPlayer'] に現在そのギャザリングに参加している人数が取得されます
  24. # 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  25. # ギャザリングに参加しているユーザID一覧をポーリングで取得する
  26. request = {
  27. 'matchmakingName' => matchmaking_name,
  28. 'gatheringId' => gathering['gatheringId'],
  29. 'accessToken' => access_token
  30. }
  31. users = client.anybody_describe_joined_user(request)['items']
  32.         
  33. # users にギャザリングに参加中のユーザID一覧が返ります
  34.         
  35. # 参加しているギャザリングから抜ける
  36. request = {
  37. 'matchmakingName' => matchmaking_name,
  38. 'gatheringId' => gathering['gatheringId'],
  39. 'accessToken' => access_token
  40. }
  41. client.anybody_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. // マッチメイキングを実行する
  16. String matchmakingName = "matchmaking-0001";
  17. Gs2MatchmakingClient client = new Gs2MatchmakingClient(credentials)
  18.         .withRegion(region);
  19. AnybodyDoMatchmakingRequest request = new AnybodyDoMatchmakingRequest()
  20.         .withMatchmakingName(matchmakingName)
  21.         .withAccessToken(accessToken);
  22. AnybodyGathering gathering = client.anybodyDoMatchmaking(request).getItem();
  23.         
  24. // gathering.getGatheringId() にマッチメイキング成立したギャザリングIDが、
  25. // gathering.getJoinPlayer() に現在そのギャザリングに参加している人数が取得されます
  26. // 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  27. // ギャザリングに参加しているユーザID一覧をポーリングで取得する
  28. AnybodyDescribeJoinedUserRequest request = new AnybodyDescribeJoinedUserRequest()
  29.         .withMatchmakingName(matchmakingName)
  30.         .withGatheringId(gathering.getGatheringId())
  31.         .withAccessToken(accessToken);
  32. List<String> users = client.anybodyDescribeJoinedUser(request).getItems();
  33.         
  34. // users にギャザリングに参加中のユーザID一覧が返ります
  35.         
  36. // 参加しているギャザリングから抜ける
  37. AnybodyLeaveGatheringRequest request = new AnybodyLeaveGatheringRequest()
  38.         .withMatchmakingName(matchmakingName)
  39.         .withGatheringId(gathering.getGatheringId())
  40.         .withAccessToken(accessToken);
  41. client.anybodyLeaveGathering(request);