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

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

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

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

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

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
    }
});

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 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

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: 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                    // หมายเลขการแข่งขันที่ลงทะเบียนในคอนโซล
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

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
    }
});

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

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

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

MatchMaking.getGroupInfoByUser(matchId, (result, data) -> {
    if (result.isSuccess()) {
        // การเรียกสำเร็จ
    } else {
        // การเรียกล้มเหลว ดูรหัสข้อผิดพลาดด้านล่าง
    }
});

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()) {
        // 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 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

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]) {
        // call successful
    } else {
        // Call failed. See error code below
    }
}];

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

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

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

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

MatchMaking.requestGroupMatching(matchId, (ResultAPI result, MatchMaking.MatchMakingGroupData data) => {
    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: 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

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: 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
    }
});

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

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 หมายเลข 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

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

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

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

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