グループマッチメイキング
グループマッチメイキングは、複数のユーザーが同じチームとして一緒にゲームに参加したいときに使用されます。
グループマッチングは、グループベースでマッチングリクエストが行われる場合だけでなく、チームメンバーの数に応じてグループと個人がチームを形成する際にもリクエストできます。
Note
グループマッチメイキングはグループマッチングでのみサポートされており、個別マッチングでは使用できません。
このガイドでは、ユーザーがグループを作成した際に提供されたGroupCodeの値を入力してグループに参加し、マッチをリクエストする方法を説明します。
SDKにおけるマッチメイキング操作の流れ¶
グループマッチメイキングは以下の順序で行われます。
- グループ(部屋)を作成 → メンバーグループ参加 → マッチングリクエスト
Hive SDKを使用してグループマッチメイキングを実装する際、マッチメイキングの全体的な流れは、ユーザーがグループリーダーであるかグループメンバーであるかによって異なります。
グループリーダーの視点から見たマッチメイキングプロセスの流れ¶
グループメンバーの視点から見たマッチメイキングプロセスの流れ¶
グループを作成¶
グループマッチメイキングを使用するには、まずグループを作成する必要があります。
複数のユーザーが一緒にゲームに参加したい場合、作成されたグループは同じチームとしてマッチングされます。
グループ作成メソッドを呼び出す際、matchId
に対応するマッチ情報はHiveコンソールに事前に登録されている必要があります。
使用されるパラメータはmatchId
、スコアpoint
(0から10^10未満の整数)、およびマッチに使用される追加情報extraData
(ニックネーム、レベル、国などの256文字以内の情報)です。
Note
matchId
を引数として使用するためのマッチユニットは'team'に設定する必要があります。さらに、グループを作成したユーザーがグループリーダーになります。
グループを作成するための例のコードはこちらです。
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) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
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()) {
// call successful
} else {
// Call failed. See error code below
}
});
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.joinGroup
import HIVEService
let matchId: Int = 25 // matchId registered in the console
let groupCode: String = "5001789" // group code
let point: Int = 300 // points used for the match
let extraData: String? = "your extraData" // additional information to be used for the match
MatchMakingInterface.joinGroup(matchId: matchId, point: point, extraData: extraData) { result, data in
if result.isSuccess() {
// call successful
}
else {
// Call failed. See error code below
}
}
API リファレンス: HIVEMatchMakingjoinGroup
#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 be used 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.leaveGroup
APIリファレンス: HIVEMatchMaking leaveGroup
グループメンバー強制退出¶
グループリーダーは特定のメンバーを強制的に削除することができます。強制削除は同じグループのメンバーに対してのみ要求でき、進行中のマッチ中には使用できません。
グループメンバー強制退出メソッドを呼び出す際は、強制退出させたいメンバーの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()) {
// 成功しました
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
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) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
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()) {
// call successful
} else {
// Call failed. See error code below
}
});
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]) {
// call successful
} else {
// Call failed. See error code below
}
}];
ユーザーによるグループ情報のクエリ¶
グループ内のユーザーに基づいてグループ情報を照会します。 これは、グループに参加している他のユーザーの情報を確認したり、マッチングリクエスト後のマッチング結果を確認するために使用されます。
グループユーザーのステータスを定期的に確認することをお勧めします。
以下は、グループユーザーに基づいてグループ情報を照会する例のコードです。
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 registered in the console
MatchMaking.getGroupInfoByUser(matchId, object : MatchMaking.MatchMakingGroupDataListener {
override fun onMatchMakingGroupData(result: ResultAPI, data: MatchMaking.MatchMakingGroupDataListener) {
if (result.isSuccess) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
}
})
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()) {
// 呼び出し成功
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
APIリファレンス: MatchMaking.getGroupInfoByGroupCode
import com.hive.MatchMaking
import com.hive.ResultAPI
val groupCode = "5001789" // group code
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
グループ内のすべてのメンバーは、グループリーダーがマッチングリクエストを行うために準備完了の状態でなければなりません。
グループリーダーにとって、準備完了の値は常に真であり、それを偽に変更するとエラーが発生します。
これはグループ参加のための例のコードです。
APIリファレンス: MatchMaking .updateGroupUser
using hive;
int matchId = 25; // コンソールに登録されたmatchId
bool ready = true; // 準備状況
int point = 300; // マッチに使用されるポイント
string extraData = "your extraData"; // マッチに使用される追加情報
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 registered in the console
bool Ready = true; // ready
int Point = 300; // points used for the match
FString ExtraData = TEXT("your extraData"); // additional information to be used for the match
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
bool ready = true; // 準備状況
int point = 300; // マッチに使用されるポイント
string extraData = "your extraData"; // マッチに使用される追加情報
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()) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
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()) {
// 成功した呼び出し
} else {
// 呼び出しに失敗しました。以下のエラーコードを参照してください
}
});
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) {
// call successful
} else {
// Call failed. See error code below
}
}
})
APIリファレンス: MatchMaking .deleteGroupMatching
API リファレンス: MatchMakingInterface.deleteGroupMatching
APIリファレンス: HIVEMatchMaking deleteGroupMatching
MatchMakingGroupDataオブジェクト構造¶
これは、グループマッチメイキングによって提供された主要な機能要求に応じて配信されるオブジェクトです。
- グループを作成
- グループに参加
- グループメンバーを強制削除
- ユーザーによるグループ情報の取得
- グループコードによるグループ情報の取得
- メンバー情報の更新
- マッチングのリクエスト
- マッチングリクエストのキャンセル(削除)
レスポンスオブジェクトには、リクエスト中に入力された情報、グループコード、グループリーダー情報、チームメンバー情報、および一致結果情報が含まれています。
フィールド名 | 説明 | タイプ |
---|---|---|
groupCode | グループ作成時に生成されるグループコード | String |
ownerPlayerId | グループ作成をリクエストしたプレイヤーID(グループリーダー) | Long |
requestGameIndex | マッチゲームインデックス | Int |
requestMatchId | リクエストされたマッチID(Hiveコンソールに登録された形式) | Int |
requestStatus | マッチリクエストのステータス(requested : マッチがリクエストされた、notRequested : リクエストされていない(または、進行中のマッチがマッチングされていない)) | String |
requestTimeUtc | マッチリクエストの時間(例: 2025-01-02T11:13:50.96) | String |
matchingStatus | マッチ進行状況のステータス(matchingInProgress : マッチング進行中、timeout : 制限時間内にマッチングが発生しなかった、matched : マッチング成功) | String |
matchingType | チーム参加か個人参加か(matchingStatusがmatchedの場合に存在)(team : チーム、player : 個人、unknown : マッチング確認が利用できない場合) | String |
matchingId | 成功したマッチに割り当てられたID(matchingStatusがmatchedの場合に存在)(例: 539:21_2025-01-02T11:45:55.25_1) | String |
memberInfoList | 現在グループに所属しているメンバーのプレイヤー情報のリスト MatchMemberInfo | Array |
matchingTeamInfoList | マッチが成功した場合のチーム情報のリスト MatchingResultTeamInfo(matchingStatusがmatchedの場合に存在) | Array |
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呼び出しが不正なパラメータ、ネットワークの問題、またはすでにマッチングリクエスト状態にある際にマッチングリクエストが行われた場合に失敗する |