การจับคู่กลุ่ม
การจับคู่กลุ่มจะถูกใช้เมื่อผู้ใช้หลายคนต้องการเข้าร่วมเกมด้วยกันในฐานะทีมเดียวกัน。
การจับคู่กลุ่มสามารถร้องขอได้ไม่เพียงแต่เมื่อมีการทำคำขอแบบกลุ่มเท่านั้น แต่ยังรวมถึงเมื่อกลุ่มและบุคคลสร้างทีมขึ้นอยู่กับจำนวนสมาชิกในทีมด้วย
Note
การจับคู่กลุ่มรองรับเฉพาะในการจับคู่กลุ่มและไม่สามารถใช้ในการจับคู่บุคคลได้
คู่มือนี้อธิบายวิธีที่ผู้ใช้สามารถเข้าร่วมกลุ่มโดยการป้อนค่าของ GroupCode ที่ให้ไว้เมื่อสร้างกลุ่มและขอการจับคู่
กระบวนการจับคู่ใน SDK¶
การจับคู่กลุ่มจะดำเนินการตามลำดับดังต่อไปนี้
- สร้างกลุ่ม (ห้อง) → การเข้าร่วมกลุ่มสมาชิก → คำขอการจับคู่
เมื่อดำเนินการจับคู่กลุ่มด้วย Hive SDK กระบวนการโดยรวมของการจับคู่จะแตกต่างกันไปขึ้นอยู่กับว่าผู้ใช้เป็นผู้นำกลุ่มหรือสมาชิกกลุ่ม
กระบวนการจับคู่จากมุมมองของหัวหน้ากลุ่ม¶
กระบวนการจับคู่จากมุมมองของสมาชิกกลุ่ม¶
สร้างกลุ่ม¶
คุณต้องสร้างกลุ่มก่อนเพื่อใช้การจับคู่กลุ่ม.
หากผู้ใช้หลายคนต้องการเข้าร่วมเกมด้วยกัน กลุ่มที่สร้างขึ้นจะถูกจับคู่เป็นทีมเดียวกัน
เมื่อเรียกใช้วิธีการสร้างกลุ่ม ข้อมูลการจับคู่ที่ตรงกับ matchId จะต้องลงทะเบียนล่วงหน้าในคอนโซล Hive. 
พารามิเตอร์ที่ใช้คือ matchId คะแนน point (จำนวนเต็มตั้งแต่ 0 ถึงน้อยกว่า 10^10) และข้อมูลเพิ่มเติม extraData (ข้อมูลภายใน 256 ตัวอักษร เช่น ชื่อเล่น ระดับ ประเทศ ฯลฯ) ที่จะใช้สำหรับการแข่งขัน。
Note
หน่วยการแข่งขันสำหรับ matchId ที่จะใช้เป็นอาร์กิวเมนต์ต้องตั้งค่าเป็น 'ทีม' นอกจากนี้ ผู้ที่สร้างกลุ่มจะเป็นผู้นำกลุ่ม
นี่คือตัวอย่างโค้ดสำหรับการสร้างกลุ่ม
เอกสารอ้างอิง 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("ข้อมูลเพิ่มเติมของคุณ");  // ข้อมูลเพิ่มเติมที่ใช้สำหรับการแข่งขัน
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()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});
API Reference: 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 = @"your 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 ที่จะใช้เป็นอาร์กิวเมนต์ต้องตั้งค่าเป็น 'team'. 
นี่คือตัวอย่างโค้ดสำหรับการมีส่วนร่วมของกลุ่ม。
อ้างอิง 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
    }
});
#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 Reference: 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 = "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.joinGroup
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 Reference: 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]) {
        // 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 Reference: MatchMaking.INSTANCE .deleteRequesting
API Reference: MatchMakingInterface.leaveGroup
API Reference: HIVEMatchMaking leaveGroup
การออกจากกลุ่มของสมาชิกที่ถูกบังคับ¶
หัวหน้ากลุ่มสามารถลบสมาชิกเฉพาะออกจากกลุ่มได้โดยบังคับ การลบโดยบังคับสามารถขอได้เฉพาะสำหรับสมาชิกในกลุ่มเดียวกันและไม่สามารถใช้ได้ในระหว่างการแข่งขันที่กำลังดำเนินอยู่
เมื่อเรียกใช้วิธีบังคับออกสมาชิกกลุ่ม ให้ใช้ 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: 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;                 // 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 Reference: 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 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: 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) {
            // การเรียกสำเร็จ
        } else {
            // การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
        }
    }
})
อ้างอิง 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()) {
            // การเรียกสำเร็จ
    } else {
            // การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
    }
});
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 Reference: MatchMaking .updateGroupUser
using hive;
int matchId = 25;       // matchId ที่ลงทะเบียนในคอนโซล
bool ready = true;          // สถานะความพร้อม
int point = 300;            // คะแนนที่ใช้สำหรับการแข่งขัน 
string 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 Reference: 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
#include "HiveMatchMaking.h"
int MatchId = 25; // matchId registered in the console
FHiveMatchMaking::RequestGroupMatching(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 ::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 Reference: 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 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 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) {
            // การเรียกสำเร็จ
        } else {
            // การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
        }
    }
})
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 | หมายเลขที่กำหนดให้กับการแข่งขันที่สำเร็จ (มีอยู่ถ้าสถานะการจับคู่คือ 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 ถูกจับคู่) มันประกอบด้วยดัชนีทีมและข้อมูลเกี่ยวกับผู้ใช้ที่เป็นสมาชิกของทีม
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
|---|---|---|
| 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 ล้มเหลวเนื่องจากพารามิเตอร์ไม่ถูกต้อง ปัญหาเครือข่าย หรือหากมีการส่งคำขอการจับคู่ในขณะที่อยู่ในสถานะคำขอการจับคู่แล้ว | 

