最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何在游戏中快速集成聊天功能

    正文概述 掘金(LeanCloud)   2021-03-31   858

    总览

    本文以「人类跌落梦境」游戏为例,讲解如何在游戏场景下使用 LeanCloud IM SDK。

    如何在游戏中快速集成聊天功能

    LeanCloud 提供的即时通信 SDK 可以应用在多种场景,比如在线客服,直播间弹幕,工作群聊软件等,本文主要介绍在游戏场景中如何快速实现好友聊天功能。在游戏开发中,即时聊天的需求很常见,尤其在多人对战类型的游戏中,即时聊天功能更是必不可少

    LeanCloud IM SDK 可以满足游戏内几乎所有的聊天场景,比如游戏大厅的开放聊天室,组队的房间内聊天,游戏中的快捷聊天与好友私信。

    除了支持发送基础的文字、图片、音视频消息以外,还支持自定义消息类型,可以实现如赠送道具、交换皮肤等扩展消息类型。

    在群聊和开放聊天室等业务场景里,我们也提供了敏感内容过滤、成员角色管理(禁言、踢人、加人、拉黑、更新他人权限)和黑名单的机制,以满足产品运营管理的多样需求。

    SDK 的选择上,LeanCloud 提供了 Android(Java)、iOS(Objective-C/Swift 两个版本)、Unity、微信小游戏等平台的 SDK 供选择。其他游戏平台,如 Cocos Creator、Egret 引擎等也都支持。

    开始游戏

    首先我们来分析下「人类跌落梦境」游戏中涉及到哪些即时通信场景,我将其分为以下几种:

    • 世界频道(综合聊天室)
    • 好友私信
    • 组队聊天(游戏中的聊天)

    其他游戏还可能有

    • 战队聊天室(战队、小队)
    • 订阅频道消息

    而 LeanCloud 设计了四种对话类型:

    • 普通对话
    • 聊天室
    • 系统对话
    • 临时对话

    下面我们会依次介绍这些场景该如何选择对话类型以及注意事项。

    一、世界频道(综合聊天室)

    如何在游戏中快速集成聊天功能

    如上图,在「综合」聊天中,有大量用户在一个群里互动,有以下特点:

    • 群聊人数非常多,群人员上限无限大
    • 在线用户均可参与聊天,无需申请加入群聊,随时加入,随时退出
    • 无固定成员列表,成员之间可能是无好友关系的陌生人
    • 离线后不需要收到消息推送

    针对这种场景 LeanCloud 提供了 聊天室 对话类型。

    聊天室完美契合这种游戏场景,等于量身定制,不需要过多思考,可以拿来即用。

    小 tips:

    1. 虽然「聊天室」原则上不限制成员数量,但对于终端用户而言即表现为过量消息不断刷屏,反而影响用户体验。建议每个聊天室的上限人数控制在 5000 人左右。开发者可以考虑从应用层面将大聊天室拆分成多个较小的聊天室。

    2. 聊天室因为没有成员列表,所以创建的时候指定 members 是没有意义的。

    3. 聊天室有消息优先级的概念,当某个连接因为消息过多出现阻塞写入缓慢的情况下,可以考虑指定消息优先级。低优先级消息在堵塞时会被丢弃,高优先级消息则排队等待下发。默认情况下消息都是中优先级。

    「聊天室」类似的使用场景,还有直播中的弹幕。与综合聊天室一样,弹幕也是只关注在线成员数,而不是具体成员列表。所有参与者进入聊天界面就算加入,关闭界面就算退出,不存在邀请成员加入。

    如何在游戏中快速集成聊天功能

    二、好友私信

    如何在游戏中快速集成聊天功能

    如上图,在「好友」聊天中,可以从好友列表中点击任意好友头像发起聊天,好友聊天有以下特点:

    • 群聊人数只有俩人,属于私聊
    • 聊天记录持久化保存,每次发起聊天需要加载历史聊天记录
    • 两个好友之间的对话是全局唯一的,再次发起聊天不会重新创建新的聊天对话。

    好友对话是即时通信中最常见的一种的场景。在即时通信中对应 普通对话中--单聊/私聊 的对话类型。

    普通对话和微信聊天的功能类似,普通对话分为单聊与群聊,在 IM SDK 中单聊与群聊的代码层面是无差别的,只不过单聊的成员(members)人数为2,群聊成员人数则大于 2。

    普通对话与「聊天室」不同之处:

    1. 有人数限制,一个群聊中最大支持 500 个成员
    2. 可查成员列表、成员在线状态,关注成员信息
    3. 可查历史消息记录
    4. 允许增加、删除成员
    5. 成员离线状态下,可以收到消息推送通知,且上线后会进行消息同步

    IM SDK 自动开启离线消息推送服务(前提是正确接入各平台需要的推送证书,推送配置正确)。如果不需要离线推送,可以在应用设置>安全中心中关闭「推送服务」的开关。

    如何在游戏中快速集成聊天功能

    三、战队聊天室

    其他游戏还有战队聊天室的场景,这种战队内聊天(或小队内聊天)与好友特征相同,聊天记录需要持久存储,在 IM SDK 中对应在即时通信中对应 普通对话中--群聊 的对话类型。

    群聊与单聊除了成员人数不同以外,没有任何区别。

    如何在游戏中快速集成聊天功能

    四、组队聊天(游戏中的聊天)

    游戏中给队友发消息

    如何在游戏中快速集成聊天功能

    如图所示,这种组队聊天有以下特点:

    • 不需要保存聊天记录,不需要查询历史消息
    • 玩家若突然离线,无需发离线消息推送
    • 「房间」具有一次性,游戏结束「房间」即消失
    • 聊天参与的人数较少(最多 8 人组队)

    针对这种场景 LeanCloud 提供了 临时对话 这一对话类型,完全满足以上所有特征,也是开箱即用。

    临时对话的信息不会被持久化保存,也即无法查询历史对话与聊天记录,聊天人数上线为 10 个。

    临时对话在使用上与普通对话类似,其最大特点是较短的有效期(不会被保存到 _Conversation 表中),优势是可以 减少对话的持久化存储在服务端占用的存储空间,从而降低开发者的使用成本。

    这种对话场景,常见于一些网页的弹窗客服。

    小 tip:

    • createConversation 创建普通对话,用 createChatRoom 创建聊天室,用 createTemporaryConversation 创建临时对话。

    如何在游戏中快速集成聊天功能

    五、订阅频道消息

    某些游戏中,有用户主动订阅频道消息的场景,这种消息类型,在 IM SDK 中对应 系统对话(也叫服务号)。服务号的流程是:

    如何在游戏中快速集成聊天功能

    利用系统对话可以发送广播消息给全部用户,可以参考 全局广播文档。

    系统对话可以用于实现机器人自动回复、公众号、服务账号等功能。

    开始聊天

    第一步:安装 SDK

    参考:各平台 SDK 安装指南

    第二步:配置独立 API 域名

    参考:域名绑定指南

    第三步:从简单的单聊、群聊、收发图文消息开始

    1. 一对一单聊
    2. 多人群聊
    3. 聊天记录查询

    第四步:探索更多功能

    1. 消息收发的更多方式,离线推送与消息同步,多设备登录
    2. 安全与签名、黑名单和权限管理、玩转聊天室和临时对话
    3. 详解消息 hook 与系统对话,打造自己的聊天机器人

    其他参考文档

    即时通讯服务总览

    LeanCloud 即时通信使用指南

    系统对话的使用

    消息推送服务总览

    小结

    除了游戏场景以外,IM SDK 也适用于大多数即时通信场景,只要是对话聊天的需求,可以毫不犹豫的选择 LeanCloud SDK,省心省力省成本,还能大大缩短开发周期。

    Photo by Adam Solomon on Unsplash


    起源地下载网 » 如何在游戏中快速集成聊天功能

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元