跳到主要内容

GDD-29 聊天与信息传递系统设计

文档类型:游戏设计文档(Game Design Document) 版本:1.1 日期:2026-07-02 关联文档:GDD-02(✅46 区域聊天与广播)、GDD-07(帮派门派社交四系统)、GDD-08(✅D07 每层独立频道 / ✅D17 附近的人)、GDD-09(✅60-62 祖地传音/追杀令通报)、GDD-13(佣兵悬赏)、GDD-14(✅68 全服通报与情报购买)、GDD-16(✅S09 传音与社交表达 / 师徒道侣结义关系链)、TDD-04(数据库表结构)、TDD-05(API接口设计)

定位:聊天与信息传递是洪荒大陆玩家社交的底层基础设施。本文档在 GDD-16 ✅S09(区域频道+私聊+传音符+表情称号)的基础上,系统性地设计完整的频道层级、消息类型、安全防护、存储策略与社交联动机制,为师徒/道侣/结义/帮派/门派/家族等社交关系提供通信载体,落实「玩家互动优先」(✅97) 的设计哲学。


已确认决策记录(GDD-29 本地,跨文档引用写 GDD-29 ✅C0X

#决策
✅C01频道七层架构:种族频道 / 区域频道 / 世界频道 / 帮派频道 / 门派频道 / 家族频道 / 队伍频道 + 私聊 + 传音符,共 9 类通信通道
✅C02世界层级与频道映射:区域频道按 world_tier 隔离(✅D07),跨层通信需消耗「传音符」道具
✅C03消息类型六类:文字 / 表情 / 系统广播 / 战报分享 / 物品链接 / 位置分享
✅C04敏感词三级过滤:实时拦截(违法/广告)+ 延迟审核(谐音/变体)+ 人工复核队列
✅C05刷屏防护四件套:频率限制 + 自动禁言 + 举报机制 + 新人静默期
✅C06屏蔽/黑名单双轨:个人屏蔽(单向,对方无感)+ 帮派/组织黑名单(帮主/长老操作,影响频道权限)
✅C07系统消息差异化呈现:天启广播(全服金光横幅)/ 拍卖广播(频道内嵌卡片)/ 世界事件(区域弹幕)/ 渡劫成功(全服通报+特效)
✅C08聊天记录存储:本地缓存最近 200 条/频道 + 服务端保留 7 天历史 + 过期自动清理
✅C09聊天社交联动:从聊天消息可直接发起组队邀请 / 交易请求 / 好友申请 / 师徒邀请,消息体携带操作按钮元数据
✅C10表情系统:基础表情免费 + 高阶表情通过成就/商城获取;表情消息与文字消息同等存储
✅C11称号展示:聊天消息携带当前称号前缀,称号可在聊天设置中切换/隐藏
✅C12传音符跨层规则:传音符可跨世界层级发送私聊消息;消耗数量随层级差距递增(跨 1 层 = 1 张,跨 2 层 = 3 张,跨 3 层 = 5 张)

第一章 频道层级体系

1.1 频道总览

洪荒大陆的通信体系由 9 类频道 构成,按作用范围从窄到宽排列:

频道类型作用范围解锁条件消息可见性频道颜色(客户端)
队伍频道当前队伍成员(2-5 人)创建/加入队伍仅队伍成员绿色
家族频道当前家族成员(5-15 人)加入家族仅家族成员粉色
门派频道当前系统门派全体成员加入门派仅门派成员蓝色
帮派频道当前帮派全体成员加入帮派仅帮派成员紫色
区域频道同一世界层级同一区域的所有玩家进入该区域同区域可见白色
种族频道同一种族同一世界层级的所有玩家创角选择种族同族同层可见金色
世界频道当前服务器所有在线玩家筑基期(层级 2)解锁全服可见红色
私聊两名指定玩家无限制仅双方橙色
传音符跨层级的两名指定玩家消耗传音符道具仅双方(跨层)青色

1.2 频道详细规则

1.2.1 队伍频道

维度规则
成员上限5 人(组队上限)
消息保留本地缓存,队伍解散后清除
特殊功能支持物品链接分享、位置分享、战报快捷分享
语音不支持(纯文字游戏,不设语音频道)

1.2.2 家族频道

维度规则
成员上限15 人(家族满级上限,GDD-07 §4.2)
消息保留本地缓存 + 服务端保留 7 天
特殊功能家族事件通知、义团共享委托进度播报
权限家族族长可设置「仅管理可发言」模式(应对家族内部纠纷)

1.2.3 门派频道

维度规则
成员上限按系统门派设定(数百至数千)
消息保留本地缓存 + 服务端保留 3 天
特殊功能门派委托播报、功法库更新通知、同门求助标记
权限掌门/长老可禁言普通弟子;频道内可发布「同门求助」标记(黄色感叹号)

1.2.4 帮派频道

维度规则
成员上限按帮派等级(数百至数千)
消息保留本地缓存 + 服务端保留 7 天
特殊功能帮派领地播报、竞标通知、帮派副本组队、分红通知
权限帮主/副帮主/长老可禁言;可设置「精英频道」子频道(仅精英以上可见)
子频道#帮派-公告(仅管理可发言)、#帮派-精英(精英以上可见)、#帮派-全体

1.2.5 区域频道

维度规则
范围当前 world_tier + 当前区域 zone_id 内所有在线玩家
消息保留仅本地缓存(服务端不持久化区域消息)
消息上限显示最近 100 条,超出滚动清除
特殊功能区域事件播报(妖潮、世界 Boss、混沌裂隙等)、附近玩家求助
限制炼气期(层级 1)区域频道仅本种族可见(✅D03 出生地隔离)

1.2.6 种族频道

维度规则
范围同一 race_id + 同一 world_tier 的所有在线玩家
消息保留本地缓存 + 服务端保留 3 天
特殊功能祖地追杀令通报(✅61)、祖地入侵预警(✅60)、种族事件播报
限制层级 1(出生地)种族频道为默认频道;层级 2+ 种族频道需手动切换

1.2.7 世界频道

维度规则
范围当前服务器所有在线玩家
解锁条件筑基期(层级 2)及以上
消息保留本地缓存 + 服务端保留 1 天
频率限制每 30 秒可发 1 条(防止刷屏)
特殊功能全服通报(天启/渡劫/稀有宝物获取)、情报购买入口(✅68)
消耗每条消息消耗 100 铜钱(小额经济 sink)

1.2.8 私聊

维度规则
范围两名指定玩家,不受世界层级限制(同层)
消息保留本地缓存 + 服务端保留 14 天
特殊功能支持所有消息类型;可发起组队/交易/好友/师徒邀请(✅C09)
限制对方可屏蔽私聊(✅C06);被屏蔽后发送方显示「消息已发送」但对方不可见

1.2.9 传音符(跨层私聊)

维度规则
范围跨世界层级的两名指定玩家
消耗传音符道具,数量随层级差距递增(✅C12)
获取途径生活技能制作 / 商城购买 / 世界事件掉落 / 坊市交易
消息保留同私聊(14 天)
限制炼气期玩家不可使用传音符(层级 1 禁跨层通信)

传音符消耗表

层级差距消耗数量示例
同层0 张(普通私聊即可)层级 2 → 层级 2
跨 1 层1 张层级 2 → 层级 3
跨 2 层3 张层级 1 → 层级 3
跨 3 层5 张层级 1 → 层级 4
跨 4 层8 张层级 1 → 层级 5

传音符消耗递增设计意图:鼓励玩家在同层级内自然社交,跨层通信为稀缺资源消耗型交互,与「层级越高官方存在感越低」(✅D18) 一致。


第二章 频道与世界层级的映射

2.1 层级频道隔离规则

世界层级(world_tier)是频道可见性的核心过滤维度:

频道类型层级隔离规则说明
队伍频道不隔离跨层组队时队伍频道正常工作
家族频道不隔离家族成员可跨层通信
门派频道按层级隔离层级 2 的门派频道与层级 3 的门派频道独立
帮派频道不隔离帮派成员可跨层通信
区域频道严格隔离仅同层同区域可见
种族频道按层级隔离同种族不同层级各有独立频道
世界频道按层级隔离各层级有独立世界频道(层级 1 无世界频道)
私聊不隔离同层私聊无限制
传音符跨层专门用于跨层通信,消耗道具

2.2 各层级频道可用性矩阵

层级队伍家族门派帮派区域种族世界私聊传音符
1 出生地✅(仅本族)
2 洪荒边境
3 太古秘境
4 混沌之渊
5 界域

层级 1(出生地)无门派/帮派/世界频道,强化「种族摇篮」的沉浸感(✅D03);门派与帮派系统在层级 2(洪荒边境)才激活(✅D04)。

2.3 频道切换规则

规则说明
默认频道进入游戏后默认显示「区域频道」+「队伍频道」(如有队伍)
频道切换玩家可手动切换活跃发送频道,聊天输入框左侧显示当前频道标识
多频道接收玩家可同时接收所有已加入频道的消息,通过标签页或颜色区分
频道折叠玩家可折叠/隐藏不关注的频道(不影响接收,仅影响显示)
频道通知可设置各频道的消息通知级别:全部 / 仅 @我 / 仅系统消息 / 静音

第三章 消息类型

3.1 消息类型总览

消息类型标识支持频道说明
文字消息TEXT全部纯文本内容,最大 200 字符
表情消息EMOJI全部系统预设表情,发送后以动画形式展示
系统广播SYSTEM由系统决定天启/渡劫/拍卖/世界事件等系统级通知
战报分享BATTLE_REPORT队伍/家族/帮派/区域点击可查看完整战报详情
物品链接ITEM_LINK全部点击可查看物品详情,支持对比
位置分享LOCATION队伍/家族/帮派点击可打开地图并标记位置

3.2 消息体结构

{
"msg_id": "uuid",
"channel_type": "REGION | FACTION | WORLD | GUILD | SECT | FAMILY | TEAM | WHISPER | VOICE_SCROLL",
"channel_id": "zone_id | guild_id | sect_id | family_id | team_id | target_character_id",
"world_tier": 2,
"sender": {
"character_id": "uuid",
"name": "玩家名",
"race_id": "human",
"realm_tier": 3,
"title": "金丹修士",
"guild_name": "青云帮",
"sect_name": "青云剑宗"
},
"msg_type": "TEXT | EMOJI | SYSTEM | BATTLE_REPORT | ITEM_LINK | LOCATION",
"content": "消息文本内容",
"extra_data": {},
"timestamp": "2026-07-02T10:30:00Z",
"is_muted": false
}

3.3 各消息类型详细设计

3.3.1 文字消息

维度规则
最大长度200 字符(UTF-8,含表情字符)
最小长度1 字符
空格限制不允许纯空格消息
@功能支持 @玩家名 提及(私聊不支持 @)
链接自动识别为纯文本(不渲染为超链接,防钓鱼)

3.3.2 表情消息

维度规则
基础表情免费,约 30 个(洪荒主题:抱拳、飞剑、打坐、渡劫等)
高阶表情通过成就解锁 / 商城购买 / 活动获取(如「龙族之怒」「凤妖涅槃」等种族专属表情)
展示方式聊天框内以动画形式播放(约 1-2 秒),不影响其他消息阅读
发送频率与文字消息共享频率限制

3.3.3 系统广播

系统广播由服务端自动触发,玩家不可手动发送。详细差异化呈现见第七章。

3.3.4 战报分享

维度规则
触发方式战斗结束后点击「分享战报」按钮
展示内容战斗双方名称/境界/种族、战斗结果、关键回合摘要、战报链接
点击行为点击打开战报详情弹窗,显示完整ATB战报日志(GDD-03 v2.1)
限制每场战斗只能分享 1 次;同一战报不可重复分享到同一频道

3.3.5 物品链接

维度规则
触发方式背包界面长按物品 → 「分享到聊天」
展示内容物品名称(品色标记)、品阶、品质、基础属性摘要
点击行为点击打开物品详情弹窗,可与自身装备对比
限制绑定物品可分享但对方不可交易;已上架交易行的物品不可分享

3.3.6 位置分享

维度规则
触发方式地图界面点击「分享位置」
展示内容区域名称、坐标、世界层级
点击行为点击打开地图并标记该位置(仅同层可见)
限制层级 1 玩家不可分享位置给跨层玩家

第四章 敏感词过滤与反诈骗机制

4.1 敏感词三级过滤体系

过滤级别触发时机处理方式覆盖范围
L1 实时拦截消息发送时消息不发送,客户端提示「包含违规内容」违法词汇、政治敏感、广告引流、色情
L2 延迟审核消息发送后异步审核审核期间消息正常显示;若命中则标记为「已折叠」+ 发送者警告谐音变体、拆字、图片文字识别、新型诈骗话术
L3 人工复核L2 标记为可疑的消息进入人工审核队列,24 小时内处理;处理前消息可见但带「待审核」标记误判申诉、新型违规模式

4.2 敏感词库结构

分类示例处理
违法类涉政/涉暴/涉恐L1 直接拦截
广告类外挂/代练/私服/微信号/QQ群L1 直接拦截
色情类明确色情词汇L1 直接拦截
诈骗类充值返利/中奖通知/账号交易L1 拦截 + 客户端弹窗防诈骗提示
变体类谐音/拆字/拼音首字母L2 延迟审核
游戏内违规恶意辱骂/种族歧视/人身攻击L2 延迟审核 + 玩家举报

4.3 反诈骗机制

机制说明
关键词预警消息中出现「转账」「汇款」「支付宝」「微信支付」等关键词时,客户端弹窗提醒「谨防诈骗」
链接拦截所有消息中的 URL 自动转为纯文本,不可点击;官方链接由系统消息单独推送
新号静默新注册账号(≤ 3 天)在世界频道发言频率额外限制为每 60 秒 1 条
举报奖励成功举报诈骗行为的玩家获得小额铜钱奖励(每日上限 3 次)
黑名单同步被系统判定为诈骗的账号自动加入全服黑名单,所有频道禁言

4.4 敏感词库更新策略

策略说明
Nacos 动态下发敏感词库存储在 Nacos 配置中心,服务端热加载,无需重启
每日增量更新运营团队每日审核新增敏感词,通过 Nacos 推送
玩家举报采集有效举报自动采集上下文,辅助 L2 审核模型训练
多语言支持支持中文/英文/拼音/emoji 组合过滤

第五章 刷屏/骚扰防护

5.1 频率限制

频道频率限制超限处理
世界频道30 秒/条提示「发言过快,请稍后再试」
区域频道5 秒/条同上
种族频道5 秒/条同上
门派/帮派/家族频道3 秒/条同上
队伍频道1 秒/条同上
私聊/传音符2 秒/条同上

5.2 自动禁言规则

触发条件禁言时长说明
1 分钟内发送 10 条相同/近似消息10 分钟基础防刷屏
10 分钟内被 3 名不同玩家举报30 分钟社区自治
1 小时内累计自动禁言 3 次24 小时升级惩罚
被系统判定为广告机器人永久禁言需人工审核解除
24 小时内累计被举报 10 次进入人工审核队列审核期间禁言

5.3 举报机制

维度规则
举报方式长按消息 → 「举报」→ 选择原因(辱骂/广告/诈骗/骚扰/其他)
举报冷却同一玩家每 5 分钟可举报 1 次(防止恶意刷举报)
举报上限每日最多举报 20 名不同玩家
举报处理L2 自动审核 + L3 人工复核;处理结果通过系统邮件通知举报者
误举报若举报被判定为恶意,举报者扣除信誉分(接 GDD-16 ✅S05 声望系统)

5.4 新人静默期

维度规则
静默期新账号创角后 1 游戏天(= 现实 8 小时)内,世界频道不可发言
可用频道区域频道 + 种族频道 + 私聊(可接收不可发送受限)
解除条件完成新手引导事件链 / 炼气期突破至筑基期
设计意图防止批量注册小号刷屏/诈骗,与「炼气期禁充值」(✅D19) 理念一致

第六章 屏蔽/黑名单系统

6.1 个人屏蔽

维度规则
屏蔽方式长按消息 → 「屏蔽该玩家」;或在对方资料页点击「屏蔽」
屏蔽上限最多屏蔽 200 名玩家
屏蔽效果对方所有频道消息不可见;对方私聊消息不接收;对方无法查看你的位置分享
对方感知无感(对方消息正常发送,仅自己不可见)
解除在设置 → 屏蔽列表中手动解除
屏蔽持久化服务端存储,换设备同步

6.2 帮派/组织黑名单

维度规则
操作权限帮主/副帮主/长老可操作帮派黑名单
黑名单效果被列入黑名单的玩家无法加入该帮派;若已在帮派中则被踢出(需帮主确认)
门派黑名单系统门派由 NPC 掌门自动管理;自建门派无黑名单(个人私有)
家族黑名单家族族长可踢人,无独立黑名单(家族人数少,直接管理即可)

6.3 义团/道侣关系中的屏蔽

场景规则
道侣屏蔽道侣关系中不可屏蔽对方(需先和离,GDD-16 §1.4.1)
义团屏蔽义团成员可屏蔽其他成员,但义团频道消息仍可见(仅私聊被屏蔽)
师徒屏蔽师父可屏蔽徒弟,徒弟可屏蔽师父;师徒频道消息仍可见

第七章 系统消息格式规范

7.1 系统消息分类与差异化呈现

消息类型呈现方式频道范围持续时间示例
天启广播全服金光横幅 + 音效全服所有频道10 秒「天启降临![玩家名] 突破至筑基期,洪荒边境大门已开启!」
渡劫成功全服通报 + 特效全服世界频道 + 区域频道5 秒「[玩家名] 渡劫成功,晋升为元婴修士!」
稀有宝物获取全服通报 + 情报入口全服世界频道5 秒「[玩家名] 获取了[宝物名]!」(附「情报购买」按钮,✅68)
拍卖广播频道内嵌卡片世界频道 + 区域频道持续至拍卖结束「[物品名] 正在拍卖,当前出价 [价格]」(附「前往拍卖」按钮)
世界事件区域弹幕 + 小地图标记区域频道事件持续期间「妖潮来袭![区域名] 正在遭受妖兽入侵!」
帮派通知帮派频道内嵌通知帮派频道持续至事件结束「帮派领地竞标已开始,当前最高出价 [金额]」
祖地追杀令种族频道高亮公告种族频道(同层)24 游戏小时「[入侵者名] 闯入[种族]祖地,追杀令已发布!」(✅61)
维护公告全服横幅 + 邮件全服持续至维护开始「服务器将于 [时间] 进行维护,预计 [时长]」

7.2 系统消息样式规范

7.2.1 天启广播

[系统] 天启降临!
[玩家名]([种族]·[境界])突破至[新境界],[世界名称]的大门已向所有修士敞开!
—— 天道昭昭,大道无穷 ——
  • 客户端渲染:金色渐变横幅,从屏幕顶部滑入,停留 10 秒后淡出
  • 音效:钟鸣音效(低沉庄严)
  • 频率限制:同一玩家 24 小时内仅触发 1 次天启广播

7.2.2 渡劫成功通报

[系统] 天劫已渡!
[玩家名]([种族]·[境界])成功渡过[天劫名],修为大涨,晋升[新境界]!
  • 客户端渲染:雷电特效横幅,停留 5 秒
  • 音效:雷鸣音效
  • 频率限制:大境界突破触发,小境界突破不触发

7.2.3 拍卖广播

[拍卖] [物品名]([品阶]·[品质])
当前出价:[价格] [货币类型]
剩余时间:[时长]
[前往竞拍]
  • 客户端渲染:频道内嵌卡片,带「前往竞拍」按钮
  • 频率限制:同一物品每 30 分钟广播 1 次

7.2.4 祖地追杀令

[追杀令] [种族]祖地告急!
入侵者:[玩家名]([种族]·[境界])
位置:[区域名]·[坐标范围]
悬赏:[赏金金额] [货币类型]
[接取追杀令] (限 [N] 人)
  • 客户端渲染:红色高亮公告,带「接取追杀令」按钮
  • 限制:接取人数上限按区域承载动态调整

7.3 系统消息发送规则

规则说明
不可屏蔽系统消息不可被个人屏蔽(但可设置通知级别为「仅重要」)
不可举报系统消息不可被举报
不可回复系统消息不可直接回复
带操作按钮部分系统消息可携带操作按钮(情报购买、前往竞拍、接取追杀令等)
多语言系统消息根据客户端语言设置自动切换语言版本

第八章 聊天记录存储

8.1 存储架构

存储层技术方案保留时长用途
客户端本地SQLite / IndexedDB最近 200 条/频道离线查看、快速加载
服务端缓存Valkey(Sorted Set)最近 1000 条/频道实时消息分发、历史回溯
服务端持久化PostgreSQL(chat_messages 表)7 天审计、举报复核、数据恢复

8.2 过期清理策略

维度策略
客户端本地超过 200 条自动清除最旧消息;频道 30 天无活动自动清除本地缓存
Valkey 缓存超过 1000 条自动淘汰最旧消息(LRU);频道 7 天无活动自动清除
PostgreSQL7 天前的消息由定时任务(pg_cron)批量归档到冷存储(可选),主表删除
特殊消息系统广播消息保留 30 天(用于运营分析);举报相关消息保留至举报处理完毕

8.3 数据库表设计(chat_messages)

字段类型约束说明
iduuidPK消息唯一 ID
channel_typevarchar(16)IXREGION / FACTION / WORLD / GUILD / SECT / FAMILY / TEAM / WHISPER / VOICE_SCROLL
channel_idvarchar(64)IX频道标识(zone_id / guild_id / target_character_id 等)
world_tiersmallintIX发送时的世界层级
sender_iduuidFK → characters.id, IX发送者角色 ID
msg_typevarchar(16)IXTEXT / EMOJI / SYSTEM / BATTLE_REPORT / ITEM_LINK / LOCATION
contenttext消息文本内容
extra_datajsonb扩展数据(物品链接属性、战报 ID、位置坐标等)
is_mutedboolean是否被过滤/折叠
created_attimestamptzIX发送时间

索引策略

  • (channel_type, channel_id, created_at DESC) — 频道历史查询
  • (sender_id, created_at DESC) — 玩家发言记录
  • created_at — 过期清理(BRIN 索引)

分区策略:按 created_at 使用 pg_partman 按周分区,自动清理 7 周前的分区。

8.4 Valkey 缓存结构

# 频道消息缓存(Sorted Set)
chat:{channel_type}:{channel_id} → Sorted Set<timestamp, msg_json>

# 玩家未读消息计数
chat:unread:{character_id} → Hash<channel_key, unread_count>

# 玩家屏蔽列表
chat:blocklist:{character_id} → Set<blocked_character_id>

第九章 聊天与社交的联动

9.1 从聊天发起社交操作

聊天消息支持携带操作元数据,玩家点击消息中的操作按钮可直接发起社交交互:

操作触发方式前置条件效果
组队邀请点击消息中的「邀请组队」按钮发送者有队伍且未满员;目标未在其他队伍向目标发送组队邀请弹窗
交易请求点击消息中的「发起交易」按钮双方在同一区域;双方均非战斗状态向目标发送交易请求弹窗
好友申请点击消息中的「加为好友」按钮双方不在对方屏蔽列表向目标发送好友申请
师徒邀请点击消息中的「收徒/拜师」按钮满足师徒系统条件(GDD-16 §1.2)向目标发送师徒邀请
位置导航点击位置分享中的「前往」按钮双方在同一世界层级在小地图标记目标位置

9.2 社交操作消息格式

# 组队邀请消息
[队伍] [玩家名] 邀请你加入队伍
队伍人数:3/5
目标:[副本名 / 游历]
[接受] [拒绝]

# 交易请求消息
[交易] [玩家名] 请求与你交易
[接受] [拒绝]

# 好友申请消息
[社交] [玩家名] 请求加你为好友
[同意] [拒绝]

# 师徒邀请消息
[师徒] [玩家名]([境界])邀请你成为其弟子
[同意] [拒绝]

9.3 社交操作频率限制

操作频率限制说明
组队邀请同一目标每 5 分钟 1 次防骚扰
交易请求同一目标每 10 分钟 1 次防骚扰
好友申请每日最多 20 个防刷好友
师徒邀请每日最多 5 个精准收徒

9.4 聊天与声望系统联动

联动点说明
交易好评通过聊天发起的交易完成后,双方可互评(接 GDD-16 ✅S05 声望系统)
师徒评价师徒关系解除后,双方可互评师父/徒弟质量
举报扣分恶意举报被驳回,举报者声望 -5
帮派贡献帮派频道内的活跃发言可累计微量帮派贡献(每日上限 10 点)

第十章 数据模型与接口

10.1 数据库表总览

表名用途关联
chat_messages聊天消息持久化§8.3
chat_channels频道配置(帮派/门派/家族频道的创建与管理)自动创建
chat_block_list玩家屏蔽列表FK → characters.id
chat_mute_records禁言记录FK → characters.id
chat_report_records举报记录FK → characters.id
chat_voice_scroll_usage传音符使用记录FK → characters.id + items.id

10.2 chat_channels 表

字段类型约束说明
iduuidPK频道 ID
channel_typevarchar(16)IXGUILD / SECT / FAMILY / TEAM
owner_iduuidIX所属组织 ID(guild_id / sect_id / family_id)
namevarchar(64)频道名称
configjsonb频道配置(禁言列表、发言权限等)
created_attimestamptz
dissolved_attimestamptz组织解散时标记

10.3 chat_block_list 表

字段类型约束说明
iduuidPK
character_iduuidFK → characters.id, IX屏蔽者
blocked_iduuidFK → characters.id, IX被屏蔽者
reasonvarchar(64)屏蔽原因(可选)
created_attimestamptz

唯一约束(character_id, blocked_id)

10.4 chat_mute_records 表

字段类型约束说明
iduuidPK
character_iduuidFK → characters.id, IX被禁言者
channel_typevarchar(16)禁言频道类型(NULL = 全频道禁言)
reasonvarchar(128)禁言原因
mute_typevarchar(16)AUTO(自动禁言)/ GM(管理员禁言)/ REPORT(举报禁言)
mute_untiltimestamptzIX禁言截止时间
created_attimestamptz

10.5 chat_report_records 表

字段类型约束说明
iduuidPK
reporter_iduuidFK → characters.id, IX举报者
target_iduuidFK → characters.id, IX被举报者
message_iduuidFK → chat_messages.id被举报消息 ID
reasonvarchar(32)ABUSE / SPAM / FRAUD / HARASSMENT / OTHER
statusvarchar(16)IXPENDING / APPROVED / REJECTED
resolved_attimestamptz处理时间
created_attimestamptz

10.6 核心接口(TDD-05 扩展)

接口方法路径说明
发送消息WebSocketnakama.rt.chat.send通过 Nakama 实时连接发送
接收消息WebSocketnakama.rt.chat.receive通过 Nakama 实时连接接收
获取历史消息GET/api/v1/chat/history分页获取频道历史消息
屏蔽玩家POST/api/v1/chat/block添加屏蔽
解除屏蔽DELETE/api/v1/chat/block/{id}解除屏蔽
举报消息POST/api/v1/chat/report举报消息
获取屏蔽列表GET/api/v1/chat/blocklist获取个人屏蔽列表
频道配置PUT/api/v1/chat/channel/{id}/config修改频道配置(帮主/族长)

10.7 Nakama 实时消息协议

基于 Nakama 3.x 的实时消息系统(WebSocket):

// 聊天消息(客户端 → 服务端)
message ChatSend {
string channel_type = 1; // REGION / WHISPER / ...
string channel_id = 2; // zone_id / target_character_id
string msg_type = 3; // TEXT / EMOJI / ...
string content = 4;
bytes extra_data = 5; // Protobuf serialized extra data
}

// 聊天消息(服务端 → 客户端)
message ChatReceive {
string msg_id = 1;
string channel_type = 2;
string channel_id = 3;
ChatSender sender = 4;
string msg_type = 5;
string content = 6;
bytes extra_data = 7;
int64 timestamp = 8;
}

message ChatSender {
string character_id = 1;
string name = 2;
string race_id = 3;
int32 realm_tier = 4;
string title = 5;
string guild_name = 6;
}

第十A章 邮件/信件系统

定位:邮件系统是聊天系统的补充,提供异步通信能力。离线玩家可通过邮件接收物品、货币、系统通知等。

10A.1 邮件类型

类型来源说明
系统邮件系统自动发送活动奖励、补偿、公告、拍卖成交通知
玩家邮件玩家手动发送问候、交易、邀请(需消耗邮票道具)
帮派/门派邮件组织管理发送帮派公告、门派通知
交易邮件交易系统自动发送交易行售出物品、拍卖获得物品

10A.2 邮件功能

功能说明
发送邮件玩家可向其他玩家发送邮件,需消耗「邮票」道具
接收邮件离线期间的邮件在上线时统一展示
附件系统邮件可附带物品和货币(最多6格附件)
领取附件收件人可领取附件中的物品和货币
批量操作支持批量删除、批量领取附件
过期清理邮件保留30天,过期自动删除(附件一并删除)

10A.3 邮件限制

限制说明
发送冷却每日最多发送20封玩家邮件
附件限制每封邮件最多6格附件(物品或货币)
邮票消耗发送玩家邮件需消耗「邮票」道具(生活技能制作或商店购买)
系统邮件系统邮件无需邮票,自动发送
防滥用新角色24小时内不可发送邮件(防工作室)

10A.4 邮件数据模型

CREATE TABLE mails (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
sender_id uuid REFERENCES characters(id), -- 发送者(系统邮件为NULL)
receiver_id uuid NOT NULL REFERENCES characters(id), -- 接收者
mail_type varchar(16) NOT NULL, -- SYSTEM/PLAYER/GUILD/TRADE
subject varchar(128) NOT NULL, -- 主题
content text, -- 内容
attachments jsonb DEFAULT '[]', -- 附件(物品/货币)
is_read boolean DEFAULT false, -- 已读状态
is_collected boolean DEFAULT false, -- 附件已领取
expires_at timestamptz NOT NULL, -- 过期时间
created_at timestamptz DEFAULT now()
);

CREATE INDEX idx_mails_receiver ON mails(receiver_id, is_read, created_at DESC);
CREATE INDEX idx_mails_expires ON mails(expires_at) WHERE NOT is_collected;

10A.5 邮件与各系统的联动

系统联动方式
交易行售出物品后,系统邮件发送货币收入
拍卖行拍得物品后,系统邮件发送物品
佣兵系统委托完成后,系统邮件发送报酬
帮派系统帮派公告通过帮派邮件发送
活动系统活动奖励通过系统邮件发放
补偿系统维护补偿、BUG修复补偿通过系统邮件发放

第十一章 已确认决策记录表

编号决策关联
✅C01频道七层架构(9 类通信通道)GDD-02 ✅46、GDD-16 ✅S09
✅C02世界层级与频道映射(区域频道按 world_tier 隔离)GDD-08 ✅D07
✅C03消息类型六类(文字/表情/系统广播/战报分享/物品链接/位置分享)
✅C04敏感词三级过滤(L1 实时拦截 + L2 延迟审核 + L3 人工复核)
✅C05刷屏防护四件套(频率限制 + 自动禁言 + 举报机制 + 新人静默期)
✅C06屏蔽/黑名单双轨(个人屏蔽 + 帮派/组织黑名单)
✅C07系统消息差异化呈现(天启金光横幅/拍卖卡片/区域弹幕/渡劫特效)GDD-02 ✅46、GDD-14 ✅68
✅C08聊天记录存储(本地 200 条 + Valkey 1000 条 + PG 7 天)TDD-04
✅C09聊天社交联动(从消息发起组队/交易/好友/师徒邀请)GDD-16 社交关系链
✅C10表情系统(基础免费 + 高阶成就/商城获取)GDD-16 ✅S09
✅C11称号展示(消息携带称号前缀,可切换/隐藏)GDD-16 ✅S09
✅C12传音符跨层规则(消耗随层级差距递增:1/3/5/8 张)GDD-08 ✅D15

第十二章 验收标准

12.1 功能验收

编号验收项验收标准
AC-01频道创建帮派/门派/家族创建时自动创建对应频道;队伍创建时自动创建队伍频道
AC-02频道消息发送所有 9 类频道均可正常发送和接收文字消息
AC-03频道隔离区域频道仅同层同区域可见;种族频道仅同族同层可见
AC-04跨层传音使用传音符可跨层发送私聊消息,消耗数量按层级差距递增
AC-05消息类型6 种消息类型均可正常发送、接收、展示
AC-06敏感词过滤L1 敏感词实时拦截,L2 异步审核标记折叠
AC-07频率限制超过频率限制时提示「发言过快」并阻止发送
AC-08自动禁言连续刷屏触发自动禁言,禁言期间不可发言
AC-09举报举报消息正常提交,处理结果通过邮件通知
AC-10个人屏蔽屏蔽后对方消息不可见,对方无感
AC-11系统广播天启/渡劫/拍卖/世界事件等系统消息差异化呈现
AC-12聊天记录本地缓存 + 服务端历史正常工作,7 天后自动清理
AC-13社交联动从聊天消息可直接发起组队/交易/好友/师徒邀请
AC-14表情发送基础表情正常发送和展示
AC-15称号展示聊天消息携带称号前缀,可切换/隐藏

12.2 性能验收

编号验收项验收标准
PERF-01消息延迟同层消息端到端延迟 ≤ 200ms(P99)
PERF-02跨层消息延迟传音符跨层消息延迟 ≤ 500ms(P99)
PERF-03并发消息单频道支持 1000+ 并发消息/秒
PERF-04历史消息加载加载最近 200 条历史消息 ≤ 1 秒
PERF-05敏感词过滤L1 过滤延迟 ≤ 50ms(P99)

12.3 安全验收

编号验收项验收标准
SEC-01XSS 防护所有消息内容在客户端渲染时转义,不执行脚本
SEC-02消息伪造消息发送必须经过服务端鉴权,不可客户端伪造
SEC-03频率绕过频率限制在服务端执行,客户端不可绕过
SEC-04屏蔽绕过屏蔽列表在服务端校验,被屏蔽者消息不推送到屏蔽者
SEC-05数据脱敏举报记录中的消息内容脱敏存储(仅保留前后各 20 字符)

第十三章 与核心系统的接口

系统接口点
GDD-02 ✅46本文是「区域聊天与广播系统」的完整落地
GDD-02 ✅97聊天系统是「玩家互动优先」的基础设施
GDD-07 四组织帮派/门派/家族频道直接对接组织系统
GDD-08 ✅D07区域频道按世界层级隔离
GDD-08 ✅D17「附近的人」在区域频道中展示
GDD-09 ✅60-62祖地追杀令/入侵通报通过种族频道广播
GDD-13 佣兵悬赏帮派频道播报佣兵委托状态
GDD-14 拍卖/✅68拍卖广播 + 情报购买入口通过世界频道推送
GDD-16 ✅S09本文在 ✅S09 基础上扩展深化
GDD-16 社交关系链聊天社交联动(师徒/道侣/结义邀请)
GDD-23 能量体系传音符消耗不影响能量(纯道具消耗)
TDD-04 数据库chat_messages / chat_channels / chat_block_list 等表
TDD-05 API聊天相关 RESTful + WebSocket 接口

第十四章 待设计内容

  • 表情包完整列表(基础 30 个 + 种族专属表情各 3-5 个)
  • 敏感词库初始版本(与运营团队协作)
  • 举报审核后台界面设计(运营工具)
  • 聊天频道 UI/UX 原型(客户端设计)
  • 传音符道具详细数值(制作材料/商城价格/掉落概率,接 GDD-06 经济联调)
  • 跨服聊天方案(若后续支持多服,需评估跨服频道架构)

GDD-29 v1.0 | 2026-07-02 | 初始版本:基于 GDD-16 ✅S09 扩展深化聊天与信息传递系统,覆盖频道层级、消息类型、安全防护、存储策略、社交联动五大模块 | 前序:GDD-16 v1.6 社交系统

GDD-29 v1.1 | 2026-07-06 | 层级命名统一:§频道权限表/天启广播示例"凡界/灵界/道界/圣界/神域"改为"出生地/洪荒边境/太古秘境/混沌之渊/界域" | 前序:v1.0