游戏中的聊天

一般游戏内一般能与好友聊天,世界聊天。但是如果加上陌生人聊天呢?陌生人的头像和昵称如何显示?何时更新?

聊天会话

聊天会话就像是给好友,陌生人,频道聊天包了一层。游戏会话作用有记录群名与群id或对方名字与id,最后聊天时间,是否有消息未读等信息,以便于界面显示与红点逻辑。

游戏会话可分为单聊会话与频道会话。

  • 单聊会话
    顾名思义,玩家与好友或者陌生人一对一聊天。

  • 频道会话

    • 系统频道
      推送系统消息,玩家不可在其中发消息
    • 群组频道
      给在群组中的人推送消息
    • 全服频道
      全服广播消息

游戏中的消息类型

一般游戏中的聊天,玩家能发送的消息有以下几种

  • 文字消息与表情消息
    文字消息与表情消息在unity中可以用TMP的图文混排实现

  • 图片表情消息
    图片表情消息记录一下图片的Id即可实现,不能让用户自定义上传图片,还需要监管。

  • 语音消息
    语音消息需要另接入SDK实现。消息里包含一条语音消息的url,其他玩家点击消息则从SDK服务器下载到本地播放。

  • 自定义消息
    自定义消息一般是游戏内功能。比如分享游戏英雄或者装备。

聊天中的数据包

a给b发送一条私聊消息,那么这条消息要包含

  • 消息Id:用于保证消息唯一

  • FromId:发送方Id

  • ToId:接收方Id

  • 消息类型:确认是属于文字消息,语音消息,自定义消息等类型

  • 消息内容:消息的内容

  • 发送时间:时间戳,用于排序

  • 发送方其他信息,包括名字,头像等,用于更新本地信息。

频道消息则加上了频道id

昵称和头像更新问题

假设a与b是好友,a更新头像与昵称,b可以立即知道。因为a与b互相为好友关系,遍历一下通知很方便。

如果a与b不是好友,a只是与b聊天一次的陌生人,那么a更新头像与昵称,b没必要通知到。

何时更新陌生人昵称和头像呢

当a又与b聊天时,可从聊天的消息中获取a最新的名字和头像,更新本地信息。

当b查看a的资料详情时,也要更新对方的资料。

历史消息中的昵称头像如何更新

在我处理的时候,本地的历史消息中不存放对方昵称与头像,对方的个人信息与历史消息分开存储,显示的时候直接取本地最新信息。

参考

即时通信 IM 昵称头像相关问题-常见问题-文档中心-腾讯云 (tencent.com)

返回顶部