ข้ามไปที่เนื้อหา

การจับคู่กลุ่ม

การจับคู่กลุ่มจะถูกใช้เมื่อผู้ใช้หลายคนต้องการเข้าร่วมเกมด้วยกันในฐานะทีมเดียวกัน

การจับคู่กลุ่มสามารถขอได้ไม่เพียงแต่เมื่อมีการจับคู่คำขอในระดับกลุ่มเท่านั้น แต่ยังสามารถทำได้เมื่อกลุ่มและบุคคลรวมกันเป็นทีมขึ้นอยู่กับจำนวนสมาชิกในทีม

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

using hive;
int matchId = 25;       // The matchId registered in the console
MatchMaking.leaveGroup(matchId, (ResultAPI result) => {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});
#include "HiveMatchMaking.h"

int MatchId = 25; // matchId ลงทะเบียนในคอนโซล
FHiveMatchMaking::LeaveGroup(MatchId, FHiveMatchMakingOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
    if (Result.IsSuccess()) {
        // เรียกสำเร็จ
    } else {
        // การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
    }
}));

API Reference: MatchMaking ::leaveGroup

#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;

int matchId = 25;           // matchId ลงทะเบียนในคอนโซล

MatchMaking::leaveGroup(matchId, [=](ResultAPI const & result) {
    if (result.isSuccess()) {
            // call successful
    } else {
            // Call failed. See error code below
    }
});

เอกสารอ้างอิง 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

import com.hive.MatchMaking;
import com.hive.ResultAPI;
int matchId = 25;           // The matchId registered in the console
MatchMaking.leaveGroup(matchId, (result) -> {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});

API Reference: MatchMakingInterface.deleteRequesting

import HIVEService
let matchId = 25            // The matchId registered in the console
MatchMakingInterface.leaveGroup(matchId: matchId) { result in
    if result.isSuccess() {
        // call successful
    } else {
        // Call failed. See error code below
    }
}

เอกสารอ้างอิง API: HIVEMatchMaking deleteRequesting

#import "HIVEService.h"
NSInteger matchId = 25;          // Registered matchId in the console

[MatchMakingInterface leaveGroupWithMatchId:matchId
                                       completion:^(HIVEResult *result, id data) {
    if ([result isSuccess]) {
        // call successful
    } else {
        // Call failed. See error code below
    }
}];

การออกจากกลุ่มสมาชิกโดยบังคับ

ผู้นำกลุ่มสามารถลบสมาชิกเฉพาะออกได้โดยบังคับ การลบโดยบังคับสามารถร้องขอได้เฉพาะสำหรับสมาชิกในกลุ่มเดียวกันและไม่สามารถใช้ได้ในระหว่างการแข่งขันที่กำลังดำเนินอยู่

เมื่อเรียกใช้วิธีบังคับออกสมาชิกกลุ่ม ให้ใช้ 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

using hive;

int matchId = 25;       // matchId ลงทะเบียนในคอนโซล

MatchMaking.getGroupInfoByUser(matchId, (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
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

import com.hive.MatchMaking;
import com.hive.ResultAPI;

int matchId = 25; // ลงทะเบียน matchId ในคอนโซล

MatchMaking.getGroupInfoByUser(matchId, (result, data) -> {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});

API Reference: MatchMakingInterface.getGroupInfoByUser

import HIVEService
let matchId = 25                    // Registered matchId in the console

MatchMakingInterface.getGroupInfoByUser(matchId: matchId) { result, data in
    if result.isSuccess() {
        // call successful
    }
    else {
        // Call failed. See error code below
    }
}

API Reference: HIVEMatchMaking getGroupInfoByUser

#import "HIVEService.h"
NSInteger matchId = 25;                 // Registered matchId in the console

[MatchMakingInterface getGroupInfoByUserWithMatchId:matchId
                                         completion:^(HIVEResult *result, id data) {
    if ([result isSuccess]) {
        // call successful
    } else {
        // Call failed. See error code below
    }
}];

การสอบถามข้อมูลกลุ่มตามรหัสกลุ่ม

สอบถามข้อมูลเกี่ยวกับกลุ่มตามรหัสกลุ่ม ใช้เพื่อตรวจสอบว่ากลุ่มมีอยู่หรือไม่

ต่อไปนี้คือตัวอย่างโค้ดที่ดึงข้อมูลกลุ่มตามรหัสกลุ่ม

API Reference: MatchMaking .getGroupInfoByGroupCode

using hive;

string groupCode = "5001789";   // group code

MatchMaking.getGroupInfoByGroupCode(groupCode, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
    if (result.isSuccess()) {
        // การเรียกสำเร็จ
    } else {
        // การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
    }
});
#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

import com.hive.MatchMaking;
import com.hive.ResultAPI;

String groupCode = "5001789"; // Group code

MatchMaking.getGroupInfoByGroupCode(groupCode, (result, data) -> {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});

API Reference: MatchMakingInterface.getGroupInfoByGroupCode

import HIVEService
let groupCode = "5001789" // Group code

MatchMakingInterface.getGroupInfoByGroupCode(groupCode: groupCode) { result, data in
    if result.isSuccess() {
        // call successful
    }
    else {
        // Call failed. See error code below
    }
}

API Reference: HIVEMatchMaking getGroupInfoByGroupCode

#import "HIVEService.h"
NSString *groupCode = @"5001789"; // Group code

[MatchMakingInterface getGroupInfoByGroupCodeWithGroupCode:groupCode
                                         completion:^(HIVEResult *result, id data) {
    if ([result isSuccess]) {
        // การเรียกสำเร็จ
    } else {
        // การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
    }
}];

การอัปเดตข้อมูลสมาชิก

สมาชิกในกลุ่มสามารถเปลี่ยนสถานะหรือข้อมูลของตนได้.

เมื่อเรียกใช้วิธีการแก้ไขข้อมูลสมาชิก พารามิเตอร์จะรวมถึงสถานะความพร้อมของสมาชิกที่ไม่รวมถึงหัวหน้ากลุ่ม 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

using hive;
int matchId = 25;       // matchId ลงทะเบียนในคอนโซล

MatchMaking.requestGroupMatching(matchId, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});
#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

import com.hive.MatchMaking;
import com.hive.ResultAPI;

int matchId = 25;           // ลงทะเบียน matchId ในคอนโซล

MatchMaking.requestGroupMatching(matchId, (result, data) -> {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});

API Reference: MatchMakingInterface.requestGroupMatching

import HIVEService

let matchId = 25                    // ลงทะเบียน matchId ในคอนโซล

MatchMakingInterface.requestGroupMatching(matchId: matchId) { result, data in
    if result.isSuccess() {
        // call successful
    }
    else {
        // Call failed. See error code below
    }
}

API Reference: HIVEMatchMaking requestGroupMatching

#import "HIVEService.h"

NSInteger matchId = 25;                 // ลงทะเบียน matchId ในคอนโซล

[MatchMakingInterface requestGroupMatchingWithMatchId:matchId
                                         completion:^(HIVEResult *result, id data) {
    if ([result isSuccess]) {
        // call successful
    } else {
        // Call failed. See error code below
    }
}];

ยกเลิกคำขอการจับคู่ (ลบ)

ยกเลิก (ลบ) การแข่งขัน การแข่งขันต้องถูกลบหากตรงตามหนึ่งหรือมากกว่าหนึ่งเงื่อนไขต่อไปนี้

  • หากผู้ใช้ยกเลิกการแข่งขัน
  • หากสถานะการแข่งขันเป็นการหมดเวลา
  • หากเกมระหว่างผู้ใช้เสร็จสมบูรณ์อย่างสำเร็จ

    คุณต้องขอให้ลบการแข่งขันหลังจากอัปเดตผลการแข่งขัน (อันดับ, คะแนน, สถานะชนะ/แพ้, ฯลฯ) ข้อมูลบนเซิร์ฟเวอร์เกม.

ต่อไปนี้คือตัวอย่างโค้ดสำหรับการยกเลิก (ลบ) คำขอที่ตรงกัน

API Reference: MatchMaking .deleteGroupMatching

using hive;
int matchId = 25;       // matchId registered in the console

MatchMaking.deleteGroupMatching(matchId, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});
#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

import com.hive.MatchMaking;
import com.hive.ResultAPI;

int matchId = 25;           // matchId ลงทะเบียนในคอนโซล

MatchMaking.deleteGroupMatching(matchId, (result, data) -> {
    if (result.isSuccess()) {
        // call successful
    } else {
        // Call failed. See error code below
    }
});

API Reference: MatchMakingInterface.deleteGroupMatching

import HIVEService

let matchId = 25                    // ลงทะเบียน matchId ในคอนโซล

MatchMakingInterface.deleteGroupMatching(matchId: matchId) { result, data in
    if result.isSuccess() {
        // call successful
    }
    else {
        // Call failed. See error code below
    }
}

API Reference: HIVEMatchMaking deleteGroupMatching

#import "HIVEService.h"

NSInteger matchId = 25;                 // ลงทะเบียน matchId ในคอนโซล

[MatchMakingInterface deleteGroupMatchingWithMatchId:matchId
                                         completion:^(HIVEResult *result, id data) {
    if ([result isSuccess]) {
        // call successful
    } else {
        // Call failed. See error code below
    }
}];

โครงสร้างวัตถุ 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

ตรวจสอบสถานะการจับคู่

กำลังตรวจสอบสถานะการจับคู่ของผู้ใช้.

เมื่อเรียกใช้วิธีการตรวจสอบสถานะการจับคู่ มันจะส่งกลับสถานะการจับคู่หนึ่งในสามสถานะด้านล่าง

  1. กำลังจับคู่ (matchingStatus: matchingInProgress)
  2. จับคู่สำเร็จ (matchingStatus: matched)
  3. หมดเวลา (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 ล้มเหลวเนื่องจากพารามิเตอร์ไม่ถูกต้อง ปัญหาเครือข่าย หรือหากมีการขอการจับคู่ในขณะที่อยู่ในสถานะการขอการจับคู่แล้ว