ルームマッチメイキングを実行

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

事前にGS2マネージメントコンソールか、SDKからMatchmakingをルーム(Room)で作成しておきます。
(このサンプルは 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. $roomMetaData = 'モンスター討伐、初心者歓迎';
  17. $client = new Gs2MatchmakingClient($region, $credentials);
  18. $request = [
  19.         'matchmakingName' => $matchmakingName,
  20.         'meta' => $roomMetaData,
  21.         'accessToken' => $accessToken
  22. ];
  23. $gathering = $client->roomCreateGathering($request)['item'];
  24. // ギャザリング一覧を取得して参加したいルームを探す
  25. $request = [
  26.     'matchmakingName' => $matchmakingName,
  27.     'accessToken' => $accessToken
  28. ];
  29. $result = $client->roomDescribeGathering($request);
  30. list($items, $nextPageToken) = array($result['items'], $result['nextPageToken']);
  31. // $items にギャザリング一覧が
  32. // $nextPageToken に次のページがある場合は続きを取得する為のトークンが取得されます
  33. // $items[n]['meta'] に作成時に $roomMetaData で指定したギャザリングのメタ情報が含まれますので、参考情報として提示できます
  34. // ギャザリングに参加する
  35. $request = [
  36.         'matchmakingName' => $matchmakingName,
  37.         'gatheringId' => $gathering['gatheringId'],
  38.         'accessToken' => $accessToken
  39. ];
  40. $gathering = $client->roomJoinGathering($request)['item'];
  41. // ギャザリングに参加しているユーザID一覧をポーリングで取得する
  42. $request = [
  43. 'matchmakingName' => $matchmakingName,
  44. 'gatheringId' => $gathering['gatheringId'],
  45. 'accessToken' => $accessToken
  46. ];
  47. $users = $client->roomDescribeJoinedUser($request)['items'];
  48. // $users にギャザリングに参加中のユーザID一覧が返ります
  49. // 参加しているギャザリングから抜ける
  50. $request = [
  51. 'matchmakingName' => $matchmakingName,
  52. 'gatheringId' => $gathering['gatheringId'],
  53. 'accessToken' => $accessToken
  54. ];
  55. $client->roomLeaveGathering($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. room_meta_data = 'モンスター討伐、初心者歓迎'
  16. client = Gs2::Matchmaking::Client.new(region, CLIENT_ID, CLIENT_SECRET)
  17. request = {
  18.         'matchmakingName' => matchmaking_name,
  19.         'meta' => room_meta_data,
  20.         'accessToken' => access_token
  21. }
  22. gathering = client.room_create_gathering($request)['item']
  23. # ギャザリング一覧を取得して参加したいルームを探す
  24. request = {
  25.     'matchmakingName' => matchmaking_name,
  26.     'accessToken' => access_token
  27. }
  28. result = client.room_describe_gathering(request)
  29. items, next_page_token = result['items'], result['nextPageToken']
  30. # items にギャザリング一覧が
  31. # nextPageToken に次のページがある場合は続きを取得する為のトークンが取得されます
  32. # items[n]['meta'] に作成時に room_meta_data で指定したギャザリングのメタ情報が含まれますので、参考情報として提示できます
  33. # ギャザリングに参加する
  34. request = {
  35.         'matchmakingName' => matchmaking_name,
  36.         'gatheringId' => gathering['gatheringId'],
  37.         'accessToken' => access_token
  38. }
  39. gathering = client.room_join_gathering(request)['item']
  40. # ギャザリングに参加しているユーザID一覧をポーリングで取得する
  41. request = {
  42. 'matchmakingName' => matchmaking_name,
  43. 'gatheringId' => gathering['gatheringId'],
  44. 'accessToken' => access_token
  45. }
  46. users = client.room_describe_joined_user(request)['items']
  47. # users にギャザリングに参加中のユーザID一覧が返ります
  48. # 参加しているギャザリングから抜ける
  49. request = {
  50. 'matchmakingName' => matchmaking_name,
  51. 'gatheringId' => gathering['gatheringId'],
  52. 'accessToken' => access_token
  53. }
  54. client.room_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. String roomMetaData = "モンスター討伐、初心者歓迎";
  17. Gs2MatchmakingClient client = new Gs2MatchmakingClient(credentials)
  18. .withRegion(region);
  19. RoomCreateGatheringRequest request = new RoomCreateGatheringRequest()
  20.         .withMatchmakingName(matchmakingName)
  21.         .withMeta(roomMetaData)
  22.         .withAccessToken(accessToken);
  23. RoomGathering result = client.roomCreateGathering(request).getItem();
  24. // ギャザリング一覧を取得して参加したいルームを探す
  25. RoomDescribeGatheringRequest request = new RoomDescribeGatheringRequest()
  26.         .withMatchmakingName(matchmakingName);
  27. RoomDescribeGatheringResult result = client.roomDescribeGathering(request);
  28. // result.getItems() にメッセージ一覧が
  29. // result.getNextPageToken() に次のページがある場合は続きを取得する為のトークンが取得されます
  30. // result.getItems().get(n).getMeta() に作成時に roomMetaData で指定したギャザリングのメタ情報が含まれますので、参考情報として提示できます
  31. RoomJoinGatheringRequest request = new RoomJoinGatheringRequest()
  32.         .withMatchmakingName(matchmaking.getName())
  33.         .withGatheringId(gathering.getGatheringId())
  34.         .withAccessToken(accessToken2);
  35. RoomGathering gathering = client.roomJoinGathering(request).getItem();
  36. // gathering.getGatheringId() にマッチメイキング成立したギャザリングIDが、
  37. // gathering.getJoinPlayer() に現在そのギャザリングに参加している人数が取得されます
  38. // 参加者が規定の人数に達すると、Matchmaking に設定したコールバックURLに成立したギャザリングIDとユーザID一覧の情報が通知されます
  39. //ギャザリングに参加しているユーザID一覧をポーリングで取得する
  40. RoomDescribeJoinedUserRequest request = new RoomDescribeJoinedUserRequest()
  41.     .withMatchmakingName(matchmakingName)
  42.     .withGatheringId(gathering.getGatheringId())
  43.     .withAccessToken(accessToken);
  44. List<String> users = client.roomDescribeJoinedUser(request).getItems();
  45. //users にギャザリングに参加中のユーザID一覧が返ります
  46. //参加しているギャザリングから抜ける
  47. RoomLeaveGatheringRequest request = new RoomLeaveGatheringRequest()
  48.     .withMatchmakingName(matchmakingName)
  49.     .withGatheringId(gathering.getGatheringId())
  50.     .withAccessToken(accessToken);
  51. client.roomLeaveGathering(request);