-
游戏中的聊天
2024-04-30 02:53一般游戏内一般能与好友聊天,世界聊天。但是如果加上陌生人聊天呢?陌生人的头像和昵称如何显示?何时更新?
聊天会话
聊天会话就像是给好友,陌生人,频道聊天包了一层。游戏会话作用有记录群名与群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的资料详情时,也要更新对方的资料。
历史消息中的昵称头像如何更新
在我处理的时候,本地的历史消息中不存放对方昵称与头像,对方的个人信息与历史消息分开存储,显示的时候直接取本地最新信息。
参考
-
记录一次回合制游戏简单框架
2024-04-28 00:30 -
DotHexo-自制博客生成器
2024-01-06 00:22 -
TMP实现超链接
2023-12-05 00:00 -
todo
2023-10-03 23:30 -
游戏排行榜
2023-09-11 03:50 -
ET框架的软路由
2023-08-19 22:43 -
《小王子》
2023-07-09 00:00 -
如果我做一个博客系统
2023-06-03 13:52 -
实现NPC的AI-行为树
2023-05-30 00:12 -
实现NPC的AI-有限状态机
2023-05-29 01:27 -
Jenkins
2023-04-27 20:42 -
游戏中接入ChatGPT
2023-03-19 03:08 -
varint编码
2022-11-07 12:20 -
JPS路径搜索算法
2022-05-23 05:08 -
布隆过滤器以及如何删除
2022-04-20 01:31 -
HashMap
2022-03-30 02:28 -
洪水填充算法判断地图是否有封闭区域
2022-03-21 03:08 -
A*寻路
2022-03-03 00:48 -
游戏定时器
2021-10-20 22:40 -
心跳检测与断线重连
2021-10-18 11:31 -
环形缓冲区
2021-09-15 19:30 -
观察者模式
2021-08-31 01:05 -
Protobuf使用
2021-08-24 20:10 -
获取配置文件内容
2021-08-16 14:10 -
数据结构总结
2021-05-01 00:00