华为联机对战服务房间匹配如何添加机器人

需求背景

最近在使用华为多人对战服务做联机游戏,我们游戏使用的是房间匹配的组房类型,希望在业务低谷时通过机器人填充房间。这里说的机器人指的是在游戏客户端实现的AI逻辑,同一个游戏房间内,所有真人玩家使用相同的机器人信息,比如名称、能力值等。

看了官方文档上目前只有在线匹配场景有明确机器人逻辑,对于房间匹配如何添加机器人并未提及,这里提供一种解决方案。

能力分析

官网关于房间匹配的介绍:

“根据传入的参数,优先加入符合条件且最先创建的对战房间中。若未匹配到符合条件的房间,云侧服务器会为玩家自动创建一个符合条件的房间,并默认当前玩家为该房间房主。此种方式主要适用于根据房间类型进行匹配的游戏场景,例如,新手区、高手区等。”

官网关于房间匹配接口配置:

global.client.matchRoom({
  matchParams: { // 自定义匹配参数,最多支持5条
    param1: 'xxxx',
    param2: 'xxxx',
  },
  roomType: 'xxxx', // 房间类型,比如“高手区”、“菜鸟区”
  customRoomProperties: 'xxxx',
  maxPlayers: 2,
},{customPlayerStatus: 0, customPlayerProperties: ''}).then((room) => {
  // 房间匹配中
  global.room = room;
  global.player = room.player;
}).catch((e) => {
  // 房间匹配失败
});复制

从以上可以看到,房间匹配场景下,服务端不会主动给房间添加机器人,只能在发起匹配时带上机器人属性了。从接口配置可以看到,要满足同一个房间内机器人信息的唯一和所有玩家可见,customRoomProperties可以利用,进房后真实玩家获取房间自定义属性中的机器人信息进行本地设置,保持房间内统一。

解决方案

本游戏一局内有4个玩家,每次玩家发起房间匹配时,结合玩家自身能力值生成3个机器人对象,并将3个机器人信息放置到matchRoom接口的customRoomProperties中,房间匹配成功后,会按照房主(首个进房间的玩家)的customRoomProperties来设置房间自定义属性。

玩家发起房间匹配后,接口会返回room实例,房主本地开始计时,如30s内房间内玩家凑够4人,则房主开启游戏。30s后仍无法凑齐4人,则从房间属性获取相应个数机器人补齐缺失玩家位置,然后开始游戏。

Tips:有个小坑,这里的机器人是纯客户端强加进来的,华为后台不感知,所以即使游戏开始,这个房间在华为后台也仍然是人数不满的,有可能存在其他真实玩家通过房间号加入到这个房间,或者在30s等待时间结束时正好匹配进房的问题,这种场景需要特殊处理一下,即当玩家加入房间后先判断一下房间状态,如果已游戏已开始则自行退出该房间,其他玩家也监听OnJoin事件,游戏开始后收到的新加入的玩家不在游戏内处理。

 

官方文档地址:

https://developer.huawei.com/consumer/cn/agconnect/gameobe

若有疑问,可以提单联系华为技术支持咨询。在线提单地址:

https://developer.huawei.com/consumer/cn/support/feedback/#/add/89?level2=201650609502456486

 

进入华为专区,解锁更多精彩内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值