# 匹配系统
# 一、介绍
游戏策划配置可用的游戏模式,开发者即可通过该系统,在可用的游戏模式下进行组队、匹配的操作
匹配系统中的事件流为:创建队伍/加入其它队伍 -> 邀请玩家加入? -> 发起匹配 -> 匹配完成,明确所有阵营 -> 所有玩家点击确认 -> 进入游戏
# 二、使用
// 先在头部引入匹配模块
import { matchSystem } from "@timi/mogs-sdk";
1
2
2
1. 获取可用的游戏模式信息
也就是上面提到的游戏策划的配置结果
const gameModes = await matchSystem.availableGameModes;
gameModes.forEach((item) => console.log(item.gameMode));
1
2
2
2. 创建队伍
从可用游戏模式中挑选一种并创建一支空的队伍
matchSystem.createTeam({
gameMode: xxxx, // 从游戏模式列表中选择一种
fail(err){
console.error(err);
},
success(res){
console.log('createTeam',res);
},
complete(){
console.log('complete');
}
})
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
3. 获取当前队伍的信息
当前如果处于队伍中,可以取得队伍信息(包括队长id,队员列表,队伍id等),否则取得null
const teamInfo = await matchSystem.getCurrentTeam();
if (!teamInfo) {
console.log('当前不存在队伍');
} else {
console.log(teamInfo.teamPlayerList);
}
1
2
3
4
5
6
2
3
4
5
6
4. 邀请他人加入队伍
只要处于队伍中,就可以邀请他人加入队伍
matchSystem.inviteJoinTeam({
inviteeOpenId: xxxx,
teamId: xxxx,
gameMode: xxxx,
fail(err){
console.error(err);
},
success(res){
console.log('inviteJoinTeam',res);
},
complete(){
console.log('complete');
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
5. 发起匹配
在队伍中才可发起匹配
matchSystem.match({
teamId: xxxx, // 可以不传,则默认使用已经创建好的队伍id,
matchScore: xxxx,
fail(err){
console.error(err);
},
success(res){
console.log('match',res);
},
complete(){
console.log('complete');
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
5. 获取匹配结果
匹配完成后可以获取匹配结果(包括匹配房间号、所有阵营的成员信息等)
const matchResult = await matchSystem.getMatchResult();
console.log(matchResult.groupList);
1
2
2
6. 监听队伍信息变化
以下几种情况都会触发队伍信息变化的事件:
1、自己新建队伍
2、玩家加入/离开队伍
3、自己加入一个队伍
mogs会在事件回调中返回:
1、队伍成员的前后比对结果列表(谁加入了以及谁离开了 ps:自己新建队伍时就等于是自己加入了)
2、队长的变化
matchSystem.onTeamPlayersChange((ev) => {
ev.patch.forEach((item) => {
if (item.type === 'ADD') console.log('新增一个队员(新建队伍时就是自己):', item.player);
if (item.type === 'REMOVE') console.log('一个队员离开:', item.player);
});
if (ev.ownerChange) {
console.log('原队长是:', ev.ownerChange.previousValue);
console.log('新队长是:', ev.ownerChange.currentValue);
}
});
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
7. 完整的匹配过程监听
匹配过程分为几个阶段:
一、发起匹配,收到匹配开始的通知,详见onMatchStart
二、匹配完成,收到匹配完成的通知,详见onMatchDone
三、匹配确认,即所有玩家都点击了确认,收到匹配确认的通知,若倒计时结束有玩家未点击确认,则在通知的回调参数中返回已超时的flag,详见onMatchConfirmed
ps: 匹配取消,即有玩家在匹配完成之前点击取消匹配,收到匹配取消的通知,详见onMatchCanceled
事件监听的使用方式同上
TIP
更多匹配模块的api请参考匹配模块