グループマッチメイキング
グループマッチメイキングは、複数のユーザーが同じチームとして一緒にゲームに参加したいときに使用されます。
グループマッチングは、グループベースでマッチングリクエストが行われる場合だけでなく、チームメンバーの数に応じてグループと個人がチームを形成する場合にもリクエストできます。
Note
グループマッチメイキングはグループマッチングでのみサポートされており、個別マッチングでは使用できません。
このガイドでは、ユーザーがグループを作成した際に提供されたGroupCode値を入力してグループに参加し、マッチをリクエストする方法を説明します。
SDKにおけるマッチメイキング操作の流れ¶
グループマッチメイキングは以下の順序で行われます。
- グループ(ルーム)を作成 → メンバーグループ参加 → マッチングリクエスト
Hive SDKを使用してグループマッチメイキングを実装する際、マッチメイキングの全体的な流れは、ユーザーがグループリーダーであるかグループメンバーであるかによって異なります。
グループリーダーの視点から見たマッチメイキングプロセスの流れ¶
グループメンバーの視点から見たマッチメイキングプロセスの流れ¶
グループを作成¶
グループマッチメイキングを使用するには、まずグループを作成する必要があります。
複数のユーザーが一緒にゲームに参加したい場合、作成されたグループは同じチームとしてマッチングされます。
グループ作成メソッドを呼び出す際には、matchId
に対応するマッチ情報がHiveコンソールに事前に登録されている必要があります。
使用されるパラメータはmatchId
、スコアpoint
(0から10^10未満の整数)、およびマッチに使用される追加情報extraData
(ニックネーム、レベル、国などの256文字以内の情報)です。
Note
The match unit for the matchId
to be used as an argument must be set to 'team'. Additionally, the user who created the group will be the group leader.
グループを作成するためのサンプルコードです。
APIリファレンス: MatchMaking .createGroup
using hive;
int matchId = 25; // コンソールに登録されたmatchId
int point = 300; // マッチに使用されるポイント
string extraData = "your extraData"; // マッチに使用される追加情報
MatchMaking.createGroup(matchId, point, extraData, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
if (result.isSuccess()) {
// 呼び出し成功
} else {
// 呼び出し失敗。以下のエラーコードを参照してください
}
});
#include "HiveMatchMaking.h"
int MatchId = 25; // コンソールに登録されたmatchId
int Point = 300; // マッチ使用スコア
FString ExtraData = TEXT("your extraData"); // マッチに使用する追加情報
FHiveMatchMaking::CreateGroup(MatchId, Point, ExtraData, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
}));
API リファレンス: MatchMaking ::createGroup
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // コンソールに登録されたmatchId
int point = 300; // マッチに使用されるポイント
string extraData = "your extraData"; // マッチに使用する追加情報
MatchMaking::createGroup(matchId, point, extraData, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
APIリファレンス: MatchMaking.createGroup
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // matchId registered in the console
val point = 300 // points used for the match
val extraData = "your extraData"; // additional information to be used for the match
MatchMaking.createGroup(matchId, point, extraData, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// call successful
} else {
// Call failed. See error code below
}
}
})
APIリファレンス: MatchMaking .createGroup
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // matchId はコンソールに登録されています
int point = 300; // マッチに使用されるポイント
String extraData = "your extraData"; // マッチに使用される追加情報
MatchMaking.createGroup(matchId, point, extraData, (result, data) -> {
if (result.isSuccess()) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
APIリファレンス: MatchMakingInterface.createGroup
import HIVEService
let matchId: Int = 25 // matchId registered in the console
let point: Int = 300 // points used for the match
let extraData: String? = "your extraData" // additional information to be used for the match
MatchMakingInterface.createGroup(matchId: matchId, point: point, extraData: extraData) { result, data in
if result.isSuccess() {
// call successful
}
else {
// Call failed. See error code below
}
}
APIリファレンス: HIVEMatchMaking createGroup
#import "HIVEService.h"
NSInteger matchId = 25; // コンソールに登録されたmatchId
NSInteger point = 300; // マッチに使用されるポイント
NSString *extraData = @"your extraData"; // マッチに使用する追加情報
[MatchMakingInterface createGroupWithMatchId:matchId
point:point
extraData:extraData
completion:^(HIVEResult *result, id data) {
if ([result isSuccess]) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}];
グループに参加¶
グループに参加できます。グループリーダーでないユーザーは、同じチームとしてマッチングされるためにグループに参加できます。
グループ参加メソッドを呼び出す際に使用されるパラメータは、matchId
、グループ作成時に発行されたGroupCode
、マッチングに使用するスコアpoint
(0から10^10未満の整数)、およびマッチングに使用する追加情報extraData
(ニックネーム、レベル、国などの256文字以内の情報)です。
Note
A user who is not a group leader must request to join the group. The match unit for the matchId
to be used as an argument must be set to 'team'.
これはグループ参加のための例のコードです。
API リファレンス: MatchMaking .joinGroup
using hive;
int matchId = 25; // matchId はコンソールに登録されています
string groupCode = "5001789"; // グループコード
int point = 300; // マッチに使用されるポイント
string extraData = "your extraData"; // マッチに使用される追加情報
MatchMaking.joinGroup(matchId, groupCode, point, extraData, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
#include "HiveMatchMaking.h"
int MatchId = 25; // コンソールに登録されたmatchId
FString GroupCode = TEXT("5001789"); // グループコード
int Point = 300; // マッチ使用スコア
FString ExtraData = TEXT("your extraData"); // マッチに使用する追加情報
FHiveMatchMaking::JoinGroup(MatchId, GroupCode, Point, ExtraData, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
}));
API リファレンス: MatchMaking ::joinGroup
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // コンソールに登録されたmatchId
string groupCode = "5001789"; // グループコード
int point = 300; // マッチに使用されるポイント
string extraData = "your extraData"; // マッチに使用される追加情報
MatchMaking::joinGroup(matchId, groupCode, point, extraData, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
API リファレンス: MatchMaking.joinGroup
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // matchId registered in the console
val groupCode = "5001789" // group code
val point = 300 // points used for the match
val extraData = "your extraData"; // additional information to be used for the match
MatchMaking.joinGroup(matchId, groupCode, point, extraData, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
APIリファレンス: MatchMaking .joinGroup
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // matchId registered in the console
String groupCode = "5001789"; // グループコード
int point = 300; // マッチに使用されるポイント
String extraData = "your extraData"; // マッチに使用される追加情報
MatchMaking.joinGroup(matchId, groupCode, point, extraData, (result, data) -> {
if (result.isSuccess()) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
APIリファレンス: MatchMakingInterface.requestMatchMaking
import HIVEService
let matchId: Int = 25 // コンソールに登録されたmatchId
let groupCode: String = "5001789" // グループコード
let point: Int = 300 // 試合に使用されるポイント
let extraData: String? = "your extraData" // 試合に使用される追加情報
MatchMakingInterface.joinGroup(matchId: matchId, point: point, extraData: extraData) { result, data in
if result.isSuccess() {
// call successful
}
else {
// Call failed. See error code below
}
}
API リファレンス: HIVEMatchMaking requestMatchMaking
#import "HIVEService.h"
NSInteger matchId = 25; // matchId registered in the console
NSString *groupCode = @"5001789"; // group code
NSInteger point = 300; // points used for the match
NSString *extraData = @"your extraData"; // additional information to use for the match
[MatchMakingInterface joinGroupWithMatchId:matchId
groupCode:groupCode
point:point
extraData:extraData
completion:^(HIVEResult *result, id data) {
if ([result isSuccess]) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}];
グループ引き出し¶
私はグループを離れます。
グループメンバーの誰かが「準備完了」状態にある場合、彼らは脱退できません。また、グループリーダーが脱退すると、残りのメンバーのうちの一人が自動的にグループリーダーになります。残りのメンバーがいない場合、グループは自動的に削除されます。
これはグループ引き出しのための例のコードです。
API リファレンス: MatchMaking .leaveGroup
APIリファレンス: MatchMaking ::leaveGroup
APIリファレンス: MatchMaking.deleteRequesting
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // コンソールに登録されたmatchId
MatchMaking.leaveGroup(matchId, object : MatchMaking.MatchMakingResultListener {
override fun onMatchMakingResult(result: ResultAPI) {
if (result.isSuccess) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
API リファレンス: MatchMaking.INSTANCE .deleteRequesting
APIリファレンス: MatchMakingInterface.deleteRequesting
グループメンバー強制退出¶
グループリーダーは特定のメンバーを強制的に削除することができます。強制削除は同じグループのメンバーに対してのみ要求でき、進行中の試合中には使用できません。
グループメンバー強制退出メソッドを呼び出す際は、強制的に退出させたいメンバーのtargetPlayerId
を引数として使用してください。
グループメンバーを強制的に削除するためのサンプルコードは以下の通りです。
API リファレンス: MatchMaking .kickGroupUser
using hive;
int matchId = 25; // matchId registered in the console
long targetPlayerId = 123456789; // 強制的に追放されるメンバーのプレイヤーID
MatchMaking.kickGroupUser(matchId, targetPlayerId, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
APIリファレンス: MatchMaking ::kickGroupUser
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // コンソールに登録されたmatchId
long long targetPlayerId = 123456789; // 強制的に追放するメンバーのプレイヤーID
MatchMaking::kickGroupUser(matchId, targetPlayerId, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
API リファレンス: MatchMaking.kickGroupUser
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // コンソールに登録されたmatchId
val targetPlayerId = 123456789 // 強制的にエクスポートするメンバープレイヤーID
MatchMaking.kickGroupUser(matchId, targetPlayerId, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// call successful
} else {
// Call failed. See error code below
}
}
})
APIリファレンス: MatchMaking .kickGroupUser
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // コンソールに登録されたmatchId
long targetPlayerId = 123456789; // 強制的に追放するメンバーのプレイヤーID
MatchMaking.kickGroupUser(matchId, targetPlayerId, (result, data) -> {
if (result.isSuccess()) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
APIリファレンス: MatchMakingInterface.kickGroupUser
API リファレンス: HIVEMatchMaking requestMatchMaking
#import "HIVEService.h"
NSInteger matchId = 25; // コンソールに登録されたmatchId
NSNumber *targetPlayerId = 123456789; // 強制的に追放するメンバーのプレイヤーID
[MatchMakingInterface kickGroupUserWithMatchId:matchId
targetPlayerId:targetPlayerId
completion:^(HIVEResult *result, id data) {
if ([result isSuccess]) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}];
グループユーザーに基づくグループ情報クエリ¶
グループ内のユーザーに基づいてグループ情報を照会します。 これは、グループに参加している他のユーザーの情報を確認したり、マッチングリクエスト後のマッチング結果を確認するために使用されます。
グループユーザーのステータスを定期的に確認することをお勧めします。
以下は、グループユーザーに基づいてグループ情報を照会する例のコードです。
APIリファレンス: MatchMaking .getGroupInfoByUser
#include "HiveMatchMaking.h"
int MatchId = 25; // コンソールに登録されたmatchId
FHiveMatchMaking::GetGroupInfoByUser(MatchId, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// 呼び出し成功
} else {
// 呼び出し失敗。以下のエラーコードを参照してください
}
}));
APIリファレンス: MatchMaking ::getGroupInfoByUser
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // コンソールに登録されたmatchId
MatchMaking::getGroupInfoByUser(matchId, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
APIリファレンス: MatchMaking.getGroupInfoByUser
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // コンソールに登録されたmatchId
MatchMaking.getGroupInfoByUser(matchId, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// call successful
} else {
// Call failed. See error code below
}
}
})
APIリファレンス: MatchMaking .getGroupInfoByUser
APIリファレンス: MatchMakingInterface.getGroupInfoByUser
APIリファレンス: HIVEMatchMaking getGroupInfoByUser
グループコードに基づくグループ情報クエリ¶
グループコードに基づいてグループの情報を照会します。グループが存在するかどうかを確認するために使用されます。
以下は、グループコードに基づいてグループ情報を取得する例のコードです。
APIリファレンス: MatchMaking .getGroupInfoByGroupCode
#include "HiveMatchMaking.h"
FString GroupCode = TEXT("5001789"); // グループコード
FHiveMatchMaking::GetGroupInfoByGroupCode(GroupCode, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
}));
APIリファレンス: MatchMaking ::getGroupInfoByGroupCode
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
string groupCode = "5001789"; // group code
MatchMaking::getGroupInfoByGroupCode(groupCode, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
APIリファレンス: MatchMaking.getGroupInfoByGroupCode
import com.hive.MatchMaking
import com.hive.ResultAPI
val groupCode = "5001789" // グループコード
MatchMaking.getGroupInfoByGroupCode(groupCode, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// call successful
} else {
// Call failed. See error code below
}
}
})
APIリファレンス: MatchMaking .getGroupInfoByGroupCode
APIリファレンス: MatchMakingInterface.getGroupInfoByGroupCode
APIリファレンス: HIVEMatchMaking getGroupInfoByGroupCode
メンバー情報の更新¶
グループ内のメンバーは、ステータスや情報を変更できます。
メンバー情報変更メソッドを呼び出す際、パラメータにはグループリーダーを除くメンバーの準備状況を示すready
、マッチで使用するスコアpoint
(0から10^10未満の整数)、およびマッチで使用する追加情報extraData
(ニックネーム、レベル、国などの情報、256文字以内)が含まれます。
Warning
グループのすべてのメンバーは、グループリーダーがマッチングリクエストを行うために準備完了の状態でなければなりません。
グループリーダーにとって、準備完了の値は常にtrueであり、それをfalseに変更するとエラーが発生します。
これはグループ参加のための例のコードです。
APIリファレンス: MatchMaking .updateGroupUser
using hive;
int matchId = 25; // matchId registered in the console
bool ready = true; // readiness status
int point = 300; // points used for the match
string extraData = "your extraData"; // additional information to be used for the match
MatchMaking.updateGroupUser(matchId, ready, point, extraData, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
#include "HiveMatchMaking.h"
int MatchId = 25; // コンソールに登録されたmatchId
bool Ready = true; // 準備完了
int Point = 300; // マッチに使用されるポイント
FString ExtraData = TEXT("your extraData"); // マッチに使用される追加情報
FHiveMatchMaking::UpdateGroupUser(MatchId, Ready, Point, ExtraData, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
}));
APIリファレンス: MatchMaking ::updateGroupUser
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // matchId registered in the console
bool ready = true; // readiness status
int point = 300; // points used for the match
string extraData = "your extraData"; // additional information to be used for the match
MatchMaking::updateGroupUser(matchId, ready, point, extraData, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
APIリファレンス: MatchMaking.updateGroupUser
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // matchId registered in the console
val ready = true // readiness status
val point = 300 // points used for the match
val extraData = "your extraData"; // additional information to be used for the match
MatchMaking.updateGroupUser(matchId, ready, point, extraData, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
APIリファレンス: MatchMaking .updateGroupUser
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // matchIdはコンソールに登録されています
boolean ready = true; // 準備状況
int point = 300; // マッチに使用されるポイント
String extraData = "your extraData"; // マッチに使用される追加情報
MatchMaking.updateGroupUser(matchId, ready, point, extraData, (result, data) -> {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
APIリファレンス: MatchMakingInterface.updateGroupUser
import HIVEService
let matchId: Int = 25 // コンソールに登録されたmatchId
let ready: Bool = true // 準備完了ステータス
let point: Int = 300 // マッチ使用ポイント
let extraData: String? = "your extraData" // マッチで使用する追加情報
MatchMakingInterface.updateGroupUser(matchId: matchId, ready: ready, point: point, extraData: extraData) { result, data in
if result.isSuccess() {
// call successful
}
else {
// Call failed. See error code below
}
}
APIリファレンス: HIVEMatchMaking updateGroupUser
#import "HIVEService.h"
NSInteger matchId = 25; // matchId registered in the console
BOOL *ready = true; // group code
NSInteger point = 300; // points used for the match
NSString *extraData = @"your extraData"; // additional information to be used for the match
[MatchMakingInterface updateGroupUserWithMatchId:matchId
ready:ready
point:point
extraData:extraData
completion:^(HIVEResult *result, id data) {
if ([result isSuccess]) {
// call successful
} else {
// Call failed. See error code below
}
}];
一致するリクエスト¶
マッチをリクエストしています。グループ内のすべてのメンバーが準備完了の状態になると、グループリーダーはマッチリクエストを行うことができます。
マッチをリクエストする際の前提条件は以下の通りです。
- リクエスト時にグループメンバーが少なくとも2人必要です。
- グループリーダー(ルームリーダー)でないメンバーは、'準備完了'のステータスをtrueに設定する必要があります。
- 既存のマッチがある場合は、リクエストを行う前に削除する必要があります。
- リクエストを行えるのはグループリーダー(ルームリーダー)のみです。
Warning
既にマッチングリクエストが進行中の場合に再度マッチングをリクエストすると、既存のマッチングは中断されず、コールバック関数はエラー値(MatchMakingResponseError
)を返します。 したがって、マッチングをリクエストする前に、必ずマッチングステータスの確認を通じてマッチングのステータスを確認してください。
これは一致要求のための例のコードです。
APIリファレンス: MatchMaking .requestGroupMatching
#include "HiveMatchMaking.h"
int MatchId = 25; // コンソールに登録されたmatchId
FHiveMatchMaking::RequestGroupMatching(MatchId, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}));
APIリファレンス: MatchMaking ::requestGroupMatching
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // コンソールに登録された matchId
MatchMaking::requestGroupMatching(matchId, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
APIリファレンス: MatchMaking.requestGroupMatching
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // コンソールに登録されたmatchId
MatchMaking.requestGroupMatching(matchId, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
APIリファレンス: MatchMaking .requestGroupMatching
APIリファレンス: MatchMakingInterface.requestGroupMatching
APIリファレンス: HIVEMatchMaking requestGroupMatching
マッチングリクエストのキャンセル (削除)¶
マッチをキャンセル(削除)しています。マッチは、以下の1つ以上の条件を満たす場合に削除されなければなりません。
- ユーザーがマッチをキャンセルした場合
- マッチのステータスがタイムアウトの場合
-
ユーザー間のゲームが正常に完了した場合
ゲームサーバー上でゲーム結果(ランキング、スコア、勝敗状況など)のデータを更新した後、マッチの削除をリクエストする必要があります。
以下は、マッチングリクエストをキャンセル(削除)するための例コードです。
APIリファレンス: MatchMaking .deleteGroupMatching
#include "HiveMatchMaking.h"
int MatchId = 25; // コンソールに登録されたmatchId
FHiveMatchMaking::DeleteGroupMatching(MatchId, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
}));
APIリファレンス: MatchMaking ::deleteGroupMatching
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // matchIdはコンソールに登録されています
MatchMaking::deleteGroupMatching(matchId, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
APIリファレンス: MatchMaking.deleteGroupMatching
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // コンソールに登録された matchId
MatchMaking.deleteGroupMatching(matchId, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
APIリファレンス: MatchMaking .deleteGroupMatching
API リファレンス: MatchMakingInterface.deleteGroupMatching
APIリファレンス: HIVEMatchMaking deleteGroupMatching
MatchMakingGroupDataオブジェクト構造¶
これは、グループマッチメイキングによって提供された主要な機能要求に応じて配信されるオブジェクトです。
- グループを作成
- グループに参加
- グループメンバーを強制的に削除
- ユーザーによるグループ情報の取得
- グループコードによるグループ情報の取得
- メンバー情報の更新
- マッチングのリクエスト
- マッチングリクエストのキャンセル(削除)
レスポンスオブジェクトには、リクエスト中に入力された情報、グループコード、グループリーダーの情報、チームメンバーの情報、およびマッチング結果の情報が含まれています。
フィールド名 | 説明 | タイプ |
---|---|---|
groupCode | グループ作成時に生成されるグループコード | 文字列 |
ownerPlayerId | グループ作成をリクエストしたプレイヤーID(グループリーダー) | 長整数 |
requestGameIndex | マッチゲームインデックス | 整数 |
requestMatchId | リクエストされたマッチID(Hiveコンソールに登録された形式) | 整数 |
requestStatus | マッチリクエストのステータス(requested : マッチがリクエストされた、notRequested : リクエストされていない(または、進行中のマッチがマッチングされていない)) | 文字列 |
requestTimeUtc | マッチリクエストの時間(例: 2025-01-02T11:13:50.96) | 文字列 |
matchingStatus | マッチ進行状況のステータス(matchingInProgress : マッチング進行中、timeout : 制限時間内にマッチングが発生しなかった、matched : マッチング成功) | 文字列 |
matchingType | チーム参加か個人参加か(matchingStatusがmatchedの場合に存在)(team : チーム、player : 個人、unknown : マッチング確認が利用できない場合) | 文字列 |
matchingId | 成功したマッチに割り当てられたID(matchingStatusがmatchedの場合に存在)(例: 539:21_2025-01-02T11:45:55.25_1) | 文字列 |
memberInfoList | 現在グループに所属しているメンバーのプレイヤー情報のリスト MatchMemberInfo | 配列 |
matchingTeamInfoList | マッチが成功した場合のチーム情報のリスト MatchingResultTeamInfo(matchingStatusがmatchedの場合に存在) | 配列 |
MatchMemberInfoオブジェクト構造¶
これはチームマッチに参加する際に渡されるオブジェクトです。同じチーム(グループ)に所属するチームメンバーのユーザー情報が含まれています。
フィールド名 | 説明 | タイプ |
---|---|---|
playerId | グループメンバーのplayerId | Long |
ready | グループメンバーの準備状況 | Boolean |
point | グループメンバーのポイント | Int |
extraData | グループメンバーが提供するその他の情報(ユーザーがリクエスト時にextraDataを使用した場合に存在) | String |
MatchingResultTeamInfoオブジェクト構造¶
これは、チームが試合に参加し、マッチングが成功したとき(matchingStatusがmatchedの場合)に配信されるオブジェクトです。チームインデックスと、チームに属するユーザーに関する情報が含まれています。
フィールド名 | 説明 | タイプ |
---|---|---|
teamIndex | チームのユニークインデックス | Int |
playerInfos | チームに属するユーザー情報のリスト MatchingResultPlayerInfo | Array |
一致状況を確認¶
ユーザーのマッチングステータスを確認しています。
一致状況チェックメソッドを呼び出すと、以下の3つの一致状況のいずれかが返されます。
- マッチング中 (matchingStatus: matchingInProgress)
- マッチング成功 (matchingStatus: matched)
- タイムアウト (matchingStatus: timeout)
ユーザーによるグループ情報の取得 APIまたはグループコードによるグループ情報の取得 APIを使用して、一致状況を確認できます。
一致処理中¶
マッチングステータスが進行中の場合、マッチングステータスがマッチ済みに達したかどうかを確認するために、メソッドを繰り返し呼び出す必要があります。
繰り返し呼び出しサイクルは、3秒から10秒の間隔で呼び出すことを推奨します。アプリの実装特性に応じて、時間間隔をさらに延ばすことも可能です。
一致成功¶
一致状況がマッチ成功の場合、開発者のゲームが起動します。これは、Hive SDKを通じて接続されたユーザーが一緒にゲームをプレイできる状態にあり、マッチしたユーザーが開発者のゲームに参加できることを意味します。
タイムアウト¶
ステータスがタイムアウト(matchingStatus: timeout
)の場合は、既存のマッチを削除し、再度マッチをリクエストする必要があります。
エラーコード¶
エラーコード | メッセージ | 説明 |
NEED_INITIALIZE | MatchMakingNotInitialized | SDKのセットアップが行われていない場合(AuthV4.setup) |
INVALID_SESSION | MatchMakingNeedSignIn | AuthV4のサインインが行われていない場合 |
RESPONSE_FAIL | MatchMakingResponseError | API呼び出しが不正なパラメータ、ネットワークの問題、または既にマッチングリクエストの状態にあるときにマッチングリクエストが行われた場合に失敗する |