การจับคู่กลุ่ม
การจับคู่กลุ่มจะถูกใช้เมื่อผู้ใช้หลายคนต้องการเข้าร่วมเกมด้วยกันในฐานะทีมเดียวกัน。
การจับคู่กลุ่มสามารถขอได้ไม่เพียงแต่เมื่อมีการจับคู่คำขอในลักษณะกลุ่ม แต่ยังรวมถึงเมื่อกลุ่มและบุคคลสร้างทีมขึ้นอยู่กับจำนวนสมาชิกในทีมด้วย
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 {
// การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
}
});
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 registered in the console
NSInteger point = 300; // points used for the match
NSString *extraData = @"your extraData"; // additional information to use for the match
[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: 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
}
});
เอกสารอ้างอิง 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 = "ข้อมูลเพิ่มเติมของคุณ"; // ข้อมูลเพิ่มเติมที่จะใช้สำหรับการแข่งขัน
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 Reference: MatchMaking .joinGroup
import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25; // matchId ที่ลงทะเบียนในคอนโซล
String groupCode = "5001789"; // รหัสกลุ่ม
int point = 300; // คะแนนที่ใช้สำหรับการแข่งขัน
String 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
API Reference: MatchMaking ::leaveGroup
API Reference: 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
เอกสารอ้างอิง 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 // หมายเลขการแข่งขันที่ลงทะเบียนในคอนโซล
let targetPlayerId = 123456789 // หมายเลขสมาชิกผู้เล่นที่ต้องการไล่ออก
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; // หมายเลขการแข่งขันที่ลงทะเบียนในคอนโซล
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
เอกสารอ้างอิง 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 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 Reference: MatchMaking .getGroupInfoByUser
API Reference: MatchMakingInterface.getGroupInfoByUser
API Reference: HIVEMatchMaking getGroupInfoByUser
การสอบถามข้อมูลกลุ่มตามรหัสกลุ่ม¶
ทำการสอบถามข้อมูลเกี่ยวกับกลุ่มตามรหัสกลุ่ม ใช้เพื่อตรวจสอบว่ากลุ่มนั้นมีอยู่จริงหรือไม่
ต่อไปนี้คือตัวอย่างโค้ดที่ดึงข้อมูลกลุ่มตามรหัสกลุ่ม
API Reference: MatchMaking .getGroupInfoByGroupCode
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 Reference: 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
}
});
เอกสารอ้างอิง 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 ลงทะเบียนในคอนโซล
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 Reference: MatchMakingInterface.updateGroupUser
import HIVEService
let matchId: Int = 25 // หมายเลขการแข่งขันที่ลงทะเบียนในคอนโซล
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 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: MatchMaking .requestGroupMatching
API Reference: 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) {
// call successful
} else {
// Call failed. See error code below
}
}
})
API Reference: MatchMaking .requestGroupMatching
เอกสารอ้างอิง API: MatchMakingInterface.requestGroupMatching
API Reference: HIVEMatchMaking requestGroupMatching
ยกเลิกคำขอการจับคู่ (ลบ)¶
ยกเลิก (ลบ) การแข่งขัน การแข่งขันต้องถูกลบหากตรงตามหนึ่งหรือมากกว่าหนึ่งเงื่อนไขต่อไปนี้
- หากผู้ใช้ยกเลิกการแข่งขัน
- หากสถานะการแข่งขันเป็นการหมดเวลา
-
หากเกมระหว่างผู้ใช้เสร็จสมบูรณ์อย่างสำเร็จ
คุณต้องขอให้ลบการแข่งขันหลังจากอัปเดตผลการแข่งขัน (อันดับ, คะแนน, สถานะชนะ/แพ้, ฯลฯ) ข้อมูลบนเซิร์ฟเวอร์เกม.
ต่อไปนี้คือตัวอย่างโค้ดสำหรับการยกเลิก (ลบ) คำขอการจับคู่
API Reference: MatchMaking .deleteGroupMatching
API Reference: 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 | หมายเลข ID ของการแข่งขันที่ขอ (ในรูปแบบที่ลงทะเบียนใน 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 | หมายเลข ID ที่มอบให้กับการแข่งขันที่สำเร็จ (มีอยู่ถ้าสถานะการจับคู่เป็น 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 ล้มเหลวเนื่องจากพารามิเตอร์ไม่ถูกต้อง ปัญหาเครือข่าย หรือหากมีการส่งคำขอจับคู่ในขณะที่อยู่ในสถานะคำขอจับคู่แล้ว |