游戏聊天
-
- 支持玩家与玩家私聊,保存私聊数据
- 支持多个频道聊天(如队伍频道,公会频道,世界频道,系统频道)
- 支持敏感词过滤
-
- 游戏聊天模块通常是一个单独的进程(也有做法是把聊天模块放到游戏逻辑进程中)
-
- 玩家登录 gameworld 进程时,会把登录消息通知到 chat 进程
- chat 进程生成玩家登录 token 通过 gameworld 进程(此时客户端和 chat 没有建立起连接)返回给客户端
- 玩家客户端使用 token 连接到 chat 进程完成登录
-
- channel:频道对象,其中主要成员是关注该频道的玩家 id 列表和该频道的历史消息
- chat 服务器中有多个 channel,如 世界频道,系统频道,帮派频道(不同帮派对应不同 channel)等
- 服务器启动时会创建固定频道(如世界频道和系统频道),帮派创建时会创建新的帮派频道(惰性创建)
- 玩家登录会把玩家加入到其关注频道的玩家列表中,玩家下线会从频道的玩家列表中移除
- 玩家发送信息会根据类型投递到对应的 channel 中,channel 会广播给关注该频道的用户并缓冲历史信息
-
- 玩家私聊的信息一般会保存起来,而且能给离线玩家发送信息,这个在玩家逻辑进程中实现更加方便
- 逻辑服务器中会维护一份玩家的缓存数据,这份数据会一直存在于服务器内存中,定时存盘
- 玩家的私聊信息存放在玩家的缓存数据中,这样即使时玩家离线也能收到其他玩家的信息
-