การจับคู่กลุ่ม
การจับคู่กลุ่มจะถูกใช้เมื่อผู้ใช้หลายคนต้องการเข้าร่วมเกมด้วยกันในฐานะทีมเดียวกัน
การจับคู่กลุ่มสามารถขอได้ไม่เพียงแต่เมื่อมีการจับคู่คำขอในระดับกลุ่มเท่านั้น แต่ยังสามารถทำได้เมื่อกลุ่มและบุคคลรวมกันเป็นทีมขึ้นอยู่กับจำนวนสมาชิกในทีม
Note
Group matchmaking is only supported in group matching and cannot be used in individual matching.
คู่มือนี้อธิบายว่าผู้ใช้สามารถเข้าร่วมกลุ่มได้อย่างไรโดยการป้อนค่า 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 Reference: MatchMaking ::createGroup
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // matchId ที่ลงทะเบียนในคอนโซล
int point = 300; // คะแนนที่ใช้สำหรับการแข่งขัน
string extraData = "ข้อมูลเพิ่มเติมของคุณ"; // ข้อมูลเพิ่มเติมที่ใช้สำหรับการแข่งขัน
MatchMaking::createGroup(matchId, point, extraData, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
เอกสารอ้างอิง API: MatchMaking.createGroup
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // matchId ลงทะเบียนในคอนโซล
val point = 300 // คะแนนที่ใช้สำหรับการแข่งขัน
val extraData = "ข้อมูลเพิ่มเติมของคุณ"; // ข้อมูลเพิ่มเติมที่จะใช้สำหรับการแข่งขัน
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 Reference: MatchMaking .createGroup
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // matchId ลงทะเบียนในคอนโซล
int point = 300; // คะแนนที่ใช้สำหรับการแข่งขัน
String extraData = "ข้อมูลเพิ่มเติมของคุณ"; // ข้อมูลเพิ่มเติมที่จะใช้สำหรับการแข่งขัน
MatchMaking.createGroup(matchId, point, extraData, (result, data) -> {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
API Reference: 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 Reference: HIVEMatchMaking createGroup
#import "HIVEService.h"
NSInteger matchId = 25; // matchId ที่ลงทะเบียนในคอนโซล
NSInteger point = 300; // คะแนนที่ใช้สำหรับการจับคู่
NSString *extraData = @"ข้อมูลเพิ่มเติมของคุณ"; // ข้อมูลเพิ่มเติมที่ใช้สำหรับการจับคู่
[MatchMakingInterface createGroupWithMatchId:matchId
point:point
extraData:extraData
completion:^(HIVEResult *result, id data) {
if ([result isSuccess]) {
// call successful
} else {
// Call failed. See error code below
}
}];
เข้าร่วมกลุ่ม¶
คุณสามารถเข้าร่วมกลุ่มได้ ผู้ใช้ที่ไม่ใช่ผู้นำกลุ่มสามารถเข้าร่วมกลุ่มเพื่อจับคู่เป็นทีมเดียวกัน
เมื่อเรียกใช้วิธีการเข้าร่วมกลุ่ม พารามิเตอร์ที่ใช้คือ matchId
รหัสกลุ่ม GroupCode
ที่ออกเมื่อสร้างกลุ่ม คะแนนที่จะใช้สำหรับการจับคู่ point
(จำนวนเต็มตั้งแต่ 0 ถึงน้อยกว่า 10^10) และข้อมูลเพิ่มเติมที่จะใช้สำหรับการจับคู่ extraData
(ข้อมูลภายใน 256 ตัวอักษร เช่น ชื่อเล่น ระดับ ประเทศ เป็นต้น)
Note
ผู้ใช้ที่ไม่ใช่หัวหน้ากลุ่มจะต้องขอเข้าร่วมกลุ่ม หน่วยการจับคู่สำหรับ matchId
ที่จะใช้เป็นอาร์กิวเมนต์จะต้องตั้งค่าเป็น 'ทีม'。
นี่คือตัวอย่างโค้ดสำหรับการเข้าร่วมกลุ่ม.
API Reference: MatchMaking .joinGroup
using hive;
int matchId = 25; // matchId ลงทะเบียนในคอนโซล
string groupCode = "5001789"; // รหัสกลุ่ม
int point = 300; // คะแนนที่ใช้สำหรับการแข่งขัน
string 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 Reference: 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 ลงทะเบียนในคอนโซล
val groupCode = "5001789" // รหัสกลุ่ม
val point = 300 // คะแนนที่ใช้สำหรับการแข่งขัน
val extraData = "your extraData"; // ข้อมูลเพิ่มเติมที่จะใช้สำหรับการแข่งขัน
MatchMaking.joinGroup(matchId, groupCode, 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 .joinGroup
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // matchId ที่ลงทะเบียนในคอนโซล
String groupCode = "5001789"; // รหัสกลุ่ม
int point = 300; // คะแนนที่ใช้สำหรับการแข่งขัน
String extraData = "your extraData"; // ข้อมูลเพิ่มเติมที่จะใช้สำหรับการแข่งขัน
MatchMaking.joinGroup(matchId, groupCode, point, extraData, (result, data) -> {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
API Reference: MatchMakingInterface.requestMatchMaking
import HIVEService
let matchId: Int = 25 // หมายเลขการแข่งขันที่ลงทะเบียนในคอนโซล
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 Reference: 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]) {
// call successful
} else {
// Call failed. See error code below
}
}];
การถอนกลุ่ม¶
ฉันกำลังออกจากกลุ่ม.
หากสมาชิกในกลุ่มใดอยู่ในสถานะ 'พร้อม' พวกเขาจะไม่สามารถถอนตัวได้ นอกจากนี้ หากหัวหน้ากลุ่มถอนตัว สมาชิกที่เหลือหนึ่งคนจะกลายเป็นหัวหน้ากลุ่มโดยอัตโนมัติ หากไม่มีสมาชิกที่เหลืออยู่ กลุ่มจะถูกลบโดยอัตโนมัติ
นี่คือตัวอย่างโค้ดสำหรับการถอนกลุ่ม.
เอกสารอ้างอิง API: MatchMaking .leaveGroup
#include "HiveMatchMaking.h"
int MatchId = 25; // matchId ลงทะเบียนในคอนโซล
FHiveMatchMaking::LeaveGroup(MatchId, FHiveMatchMakingOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// เรียกสำเร็จ
} else {
// การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
}
}));
API Reference: 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 Reference: MatchMakingInterface.deleteRequesting
เอกสารอ้างอิง API: HIVEMatchMaking deleteRequesting
การออกจากกลุ่มสมาชิกโดยบังคับ¶
ผู้นำกลุ่มสามารถลบสมาชิกเฉพาะออกได้โดยบังคับ การลบโดยบังคับสามารถร้องขอได้เฉพาะสำหรับสมาชิกในกลุ่มเดียวกันและไม่สามารถใช้ได้ในระหว่างการแข่งขันที่กำลังดำเนินอยู่
เมื่อเรียกใช้วิธีบังคับออกสมาชิกกลุ่ม ให้ใช้ targetPlayerId
ของสมาชิกที่คุณต้องการบังคับออกเป็นอาร์กิวเมนต์.
ต่อไปนี้คือตัวอย่างโค้ดสำหรับการลบสมาชิกกลุ่มออกอย่างบังคับ
เอกสารอ้างอิง API: MatchMaking .kickGroupUser
using hive;
int matchId = 25; // matchId ที่ลงทะเบียนในคอนโซล
long targetPlayerId = 123456789; // รหัสผู้เล่นของสมาชิกที่ต้องการขับไล่
MatchMaking.kickGroupUser(matchId, targetPlayerId, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
API Reference: MatchMaking ::kickGroupUser
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // matchId ลงทะเบียนในคอนโซล
long long targetPlayerId = 123456789; // รหัสสมาชิกผู้เล่นที่ถูกบังคับให้ออก
MatchMaking::kickGroupUser(matchId, targetPlayerId, [=](ResultAPI const & result, MatchMakingGroupData data) {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
API Reference: MatchMaking.kickGroupUser
import com.hive.MatchMaking
import com.hive.ResultAPI
val matchId = 25 // matchId ลงทะเบียนในคอนโซล
val targetPlayerId = 123456789 // รหัสสมาชิกผู้เล่นที่ต้องการส่งออก
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 Reference: MatchMaking .kickGroupUser
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // matchId ลงทะเบียนในคอนโซล
long targetPlayerId = 123456789; // รหัสสมาชิกผู้เล่นที่ถูกบังคับให้ออก
MatchMaking.kickGroupUser(matchId, targetPlayerId, (result, data) -> {
if (result.isSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
});
API Reference: MatchMakingInterface.kickGroupUser
import HIVEService
let matchId = 25 // The matchId registered in the console
let targetPlayerId = 123456789 // The member player id to forcibly expel
MatchMakingInterface.kickGroupUser(matchId: matchId, targetPlayerId) { result, data in
if result.isSuccess() {
// call successful
}
else {
// Call failed. See error code below
}
}
API Reference: HIVEMatchMaking requestMatchMaking
#import "HIVEService.h"
NSInteger matchId = 25; // matchId ที่ลงทะเบียนในคอนโซล
NSNumber *targetPlayerId = 123456789; // รหัสผู้เล่นของสมาชิกที่ต้องการขับไล่
[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 registered in the console
FHiveMatchMaking::GetGroupInfoByUser(MatchId, FHiveMatchMakingOnMatchMakingGroupDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveMatchMakingGroupData& MatchMakingGroupData) {
if (Result.IsSuccess()) {
// call successful
} else {
// Call failed. See error code below
}
}));
API Reference: 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 Reference: 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 Reference: MatchMakingInterface.getGroupInfoByUser
API Reference: HIVEMatchMaking getGroupInfoByUser
การสอบถามข้อมูลกลุ่มตามรหัสกลุ่ม¶
สอบถามข้อมูลเกี่ยวกับกลุ่มตามรหัสกลุ่ม ใช้เพื่อตรวจสอบว่ากลุ่มมีอยู่หรือไม่
ต่อไปนี้คือตัวอย่างโค้ดที่ดึงข้อมูลกลุ่มตามรหัสกลุ่ม
API Reference: MatchMaking .getGroupInfoByGroupCode
#include "HiveMatchMaking.h"
FString GroupCode = TEXT("5001789"); // group code
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 Reference: 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" // 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 Reference: MatchMaking .getGroupInfoByGroupCode
API Reference: MatchMakingInterface.getGroupInfoByGroupCode
API Reference: 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 ลงทะเบียนในคอนโซล
bool Ready = true; // พร้อม
int Point = 300; // คะแนนที่ใช้สำหรับการแข่งขัน
FString ExtraData = TEXT("ข้อมูลเพิ่มเติมของคุณ"); // ข้อมูลเพิ่มเติมที่จะใช้สำหรับการแข่งขัน
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 Reference: 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 ที่ลงทะเบียนในคอนโซล
val ready = true // สถานะความพร้อม
val point = 300 // คะแนนที่ใช้สำหรับการแข่งขัน
val extraData = "your extraData"; // ข้อมูลเพิ่มเติมที่จะใช้สำหรับการแข่งขัน
MatchMaking.updateGroupUser(matchId, ready, 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 Reference: 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 // The matchId registered in the console
let ready: Bool = true // Ready status
let point: Int = 300 // Match usage points
let extraData: String? = "your extraData" // Additional information to be used for the match
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 Reference: 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 คนในขณะทำการขอร้อง
- สมาชิกที่ไม่ใช่หัวหน้ากลุ่ม (หัวหน้าห้อง) ต้องตั้งสถานะ 'พร้อม' เป็นจริง
- หากมีการแข่งขันที่มีอยู่ ต้องลบก่อนที่จะทำการขอร้อง
- เฉพาะหัวหน้ากลุ่ม (หัวหน้าห้อง) เท่านั้นที่สามารถทำการขอร้องได้
Warning
หากคุณขอการจับคู่อีกครั้งในขณะที่มีการขอการจับคู่ที่กำลังดำเนินอยู่ การจับคู่ที่มีอยู่จะไม่ถูกหยุด และฟังก์ชัน callback จะส่งคืนค่าผิดพลาด (MatchMakingResponseError
) ดังนั้นโปรดตรวจสอบสถานะการจับคู่ก่อนผ่าน ตรวจสอบสถานะการจับคู่ ก่อนที่จะขอการจับคู่
นี่คือตัวอย่างโค้ดสำหรับคำขอที่ตรงกัน
API Reference: 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 Reference: MatchMaking ::requestGroupMatching
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
int matchId = 25; // Registered matchId in the console
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 Reference: MatchMakingInterface.requestGroupMatching
API Reference: HIVEMatchMaking requestGroupMatching
ยกเลิกคำขอการจับคู่ (ลบ)¶
ยกเลิก (ลบ) การแข่งขัน การแข่งขันต้องถูกลบหากตรงตามหนึ่งหรือมากกว่าหนึ่งเงื่อนไขต่อไปนี้
- หากผู้ใช้ยกเลิกการแข่งขัน
- หากสถานะการแข่งขันเป็นการหมดเวลา
-
หากเกมระหว่างผู้ใช้เสร็จสมบูรณ์อย่างสำเร็จ
คุณต้องขอให้ลบการแข่งขันหลังจากอัปเดตผลการแข่งขัน (อันดับ, คะแนน, สถานะชนะ/แพ้, ฯลฯ) ข้อมูลบนเซิร์ฟเวอร์เกม.
ต่อไปนี้คือตัวอย่างโค้ดสำหรับการยกเลิก (ลบ) คำขอที่ตรงกัน
API Reference: 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 Reference: 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 Reference: MatchMaking .deleteGroupMatching
API Reference: MatchMakingInterface.deleteGroupMatching
API Reference: HIVEMatchMaking deleteGroupMatching
โครงสร้างวัตถุ MatchMakingGroupData¶
นี่คือตัววัตถุที่ถูกส่งมาซึ่งเป็นการตอบสนองต่อคำขอฟีเจอร์หลักที่จัดทำโดยกลุ่มการจับคู่
- สร้างกลุ่ม
- เข้าร่วมกลุ่ม
- บังคับลบสมาชิกกลุ่ม
- รับข้อมูลกลุ่มโดยผู้ใช้
- รับข้อมูลกลุ่มโดยรหัสกลุ่ม
- อัปเดตข้อมูลสมาชิก
- ขอการจับคู่
- ยกเลิก (ลบ) คำขอการจับคู่
วัตถุการตอบสนองประกอบด้วยข้อมูลที่ป้อนระหว่างการร้องขอ รหัสกลุ่ม ข้อมูลผู้นำกลุ่ม ข้อมูลสมาชิกทีม และข้อมูลผลการจับคู่
ชื่อฟิลด์ | คำอธิบาย | ประเภท |
---|---|---|
groupCode | รหัสกลุ่มที่สร้างขึ้นเมื่อสร้างกลุ่ม | String |
ownerPlayerId | playerId (ผู้นำกลุ่ม) ที่ขอสร้างกลุ่ม | Long |
requestGameIndex | ดัชนีเกมการแข่งขัน | Int |
requestMatchId | รหัสการแข่งขันที่ขอ (ในรูปแบบที่ลงทะเบียนใน Hive console) | Int |
requestStatus | สถานะการขอการแข่งขัน (requested : ขอการแข่งขัน, notRequested : ไม่ได้ขอ (หรือไม่มีการแข่งขันที่กำลังดำเนินการ)) | String |
requestTimeUtc | เวลาที่ขอการแข่งขัน (เช่น: 2025-01-02T11:13:50.96) | String |
matchingStatus | สถานะความก้าวหน้าของการแข่งขัน (matchingInProgress : กำลังจับคู่, timeout : ไม่มีการจับคู่เกิดขึ้นภายในเวลาที่กำหนด, matched : การจับคู่สำเร็จ) | String |
matchingType | ว่ามันเป็นการเข้าร่วมทีม หรือการเข้าร่วมบุคคล (มีอยู่ถ้าสถานะการจับคู่คือ matched) (team : ทีม, player : บุคคล, unknown : ถ้าไม่มีการยืนยันการจับคู่) | String |
matchingId | รหัสที่กำหนดให้กับการแข่งขันที่สำเร็จ (มีอยู่ถ้าสถานะการจับคู่คือ matched) (เช่น: 539:21_2025-01-02T11:45:55.25_1) | String |
memberInfoList | รายการข้อมูลผู้เล่นสมาชิกที่ปัจจุบันอยู่ในกลุ่ม MatchMemberInfo | Array |
matchingTeamInfoList | รายการข้อมูลทีม MatchingResultTeamInfo หากการแข่งขันสำเร็จ (มีอยู่ถ้าสถานะการจับคู่คือ matched) | Array |
โครงสร้างวัตถุ MatchMemberInfo¶
นี่คือวัตถุที่ถูกส่งเมื่อเข้าร่วมการแข่งขันทีม มันประกอบด้วยข้อมูลผู้ใช้ของสมาชิกทีมที่อยู่ในทีมเดียวกัน (กลุ่ม)
ชื่อฟิลด์ | คำอธิบาย | ประเภท |
---|---|---|
playerId | playerId ของสมาชิกกลุ่ม | Long |
ready | สถานะความพร้อมของสมาชิกกลุ่ม | Boolean |
point | คะแนนของสมาชิกกลุ่ม | Int |
extraData | ข้อมูลอื่น ๆ ที่สมาชิกกลุ่มให้ (มีอยู่หากผู้ใช้ใช้ extraData ตามคำขอ) | String |
โครงสร้างวัตถุ MatchingResultTeamInfo¶
นี่คือวัตถุที่ถูกส่งเมื่อทีมเข้าร่วมการแข่งขันและการจับคู่สำเร็จ (เมื่อ matchingStatus เป็น matched) มันประกอบด้วยดัชนีทีมและข้อมูลเกี่ยวกับผู้ใช้ที่เป็นสมาชิกของทีม
ชื่อฟิลด์ | คำอธิบาย | ประเภท |
---|---|---|
teamIndex | ดัชนีที่ไม่ซ้ำกันของทีม | Int |
playerInfos | รายการข้อมูลผู้ใช้ที่เป็นของทีม MatchingResultPlayerInfo | Array |
ตรวจสอบสถานะการจับคู่¶
กำลังตรวจสอบสถานะการจับคู่ของผู้ใช้.
เมื่อเรียกใช้วิธีการตรวจสอบสถานะการจับคู่ มันจะส่งกลับสถานะการจับคู่หนึ่งในสามสถานะด้านล่าง
- กำลังจับคู่ (matchingStatus: matchingInProgress)
- จับคู่สำเร็จ (matchingStatus: matched)
- หมดเวลา (matchingStatus: timeout)
คุณสามารถตรวจสอบสถานะการจับคู่โดยใช้ API Get Group Information by User หรือ API Get Group Information by Group Code
การจับคู่กำลังดำเนินการ¶
หากสถานะการจับคู่เป็น กำลังดำเนินการ คุณต้องเรียกใช้วิธีการซ้ำเพื่อเช็คสถานะการจับคู่เพื่อดูว่ามันได้ถึง จับคู่แล้ว หรือไม่
แนะนำให้เรียกวงจรการโทรซ้ำที่ช่วงเวลาตั้งแต่ 3 ถึง 10 วินาที ขึ้นอยู่กับลักษณะการใช้งานของแอปพลิเคชัน ยังสามารถเพิ่มช่วงเวลาต่อไปได้อีกด้วย
การจับคู่สำเร็จ¶
หากสถานะการจับคู่คือ จับคู่สำเร็จ เกมของนักพัฒนาจะถูกเปิดใช้งาน นี่หมายความว่าผู้ใช้ที่เชื่อมต่อผ่าน Hive SDK อยู่ในสถานะที่จะเล่นเกมร่วมกัน และผู้ใช้ที่จับคู่สามารถเข้าร่วมเกมของนักพัฒนาได้
หมดเวลา¶
หากสถานะเป็นการหมดเวลา (matchingStatus: timeout
) คุณต้อง ลบ การจับคู่ที่มีอยู่และ ขอ การจับคู่ใหม่อีกครั้ง
รหัสข้อผิดพลาด¶
รหัสข้อผิดพลาด | ข้อความ | คำอธิบาย |
NEED_INITIALIZE | MatchMakingNotInitialized | หากการตั้งค่า SDK ยังไม่ได้ทำ (AuthV4.setup) |
INVALID_SESSION | MatchMakingNeedSignIn | หากยังไม่ได้ลงชื่อเข้าใช้ AuthV4 |
RESPONSE_FAIL | MatchMakingResponseError | หากการเรียก API ล้มเหลวเนื่องจากพารามิเตอร์ไม่ถูกต้อง ปัญหาเครือข่าย หรือหากมีการขอการจับคู่ในขณะที่อยู่ในสถานะการขอการจับคู่แล้ว |