GDD-29 聊天与信息传递系统设计
文档类型:游戏设计文档(Game Design Document)
版本:1.0
日期: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 天无活动自动清除 |
| PostgreSQL |
7 天前的消息由定时任务(pg_cron)批量归档到冷存储(可选),主表删除 |
| 特殊消息 |
系统广播消息保留 30 天(用于运营分析);举报相关消息保留至举报处理完毕 |
8.3 数据库表设计(chat_messages)
| 字段 |
类型 |
约束 |
说明 |
| id |
uuid |
PK |
消息唯一 ID |
| channel_type |
varchar(16) |
IX |
REGION / FACTION / WORLD / GUILD / SECT / FAMILY / TEAM / WHISPER / VOICE_SCROLL |
| channel_id |
varchar(64) |
IX |
频道标识(zone_id / guild_id / target_character_id 等) |
| world_tier |
smallint |
IX |
发送时的世界层级 |
| sender_id |
uuid |
FK → characters.id, IX |
发送者角色 ID |
| msg_type |
varchar(16) |
IX |
TEXT / EMOJI / SYSTEM / BATTLE_REPORT / ITEM_LINK / LOCATION |
| content |
text |
|
消息文本内容 |
| extra_data |
jsonb |
|
扩展数据(物品链接属性、战报 ID、位置坐标等) |
| is_muted |
boolean |
|
是否被过滤/折叠 |
| created_at |
timestamptz |
IX |
发送时间 |
索引策略:
- (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 表
| 字段 |
类型 |
约束 |
说明 |
| id |
uuid |
PK |
频道 ID |
| channel_type |
varchar(16) |
IX |
GUILD / SECT / FAMILY / TEAM |
| owner_id |
uuid |
IX |
所属组织 ID(guild_id / sect_id / family_id) |
| name |
varchar(64) |
|
频道名称 |
| config |
jsonb |
|
频道配置(禁言列表、发言权限等) |
| created_at |
timestamptz |
|
|
| dissolved_at |
timestamptz |
|
组织解散时标记 |
10.3 chat_block_list 表
| 字段 |
类型 |
约束 |
说明 |
| id |
uuid |
PK |
|
| character_id |
uuid |
FK → characters.id, IX |
屏蔽者 |
| blocked_id |
uuid |
FK → characters.id, IX |
被屏蔽者 |
| reason |
varchar(64) |
|
屏蔽原因(可选) |
| created_at |
timestamptz |
|
|
唯一约束:(character_id, blocked_id)
10.4 chat_mute_records 表
| 字段 |
类型 |
约束 |
说明 |
| id |
uuid |
PK |
|
| character_id |
uuid |
FK → characters.id, IX |
被禁言者 |
| channel_type |
varchar(16) |
|
禁言频道类型(NULL = 全频道禁言) |
| reason |
varchar(128) |
|
禁言原因 |
| mute_type |
varchar(16) |
|
AUTO(自动禁言)/ GM(管理员禁言)/ REPORT(举报禁言) |
| mute_until |
timestamptz |
IX |
禁言截止时间 |
| created_at |
timestamptz |
|
|
10.5 chat_report_records 表
| 字段 |
类型 |
约束 |
说明 |
| id |
uuid |
PK |
|
| reporter_id |
uuid |
FK → characters.id, IX |
举报者 |
| target_id |
uuid |
FK → characters.id, IX |
被举报者 |
| message_id |
uuid |
FK → chat_messages.id |
被举报消息 ID |
| reason |
varchar(32) |
|
ABUSE / SPAM / FRAUD / HARASSMENT / OTHER |
| status |
varchar(16) |
IX |
PENDING / APPROVED / REJECTED |
| resolved_at |
timestamptz |
|
处理时间 |
| created_at |
timestamptz |
|
|
10.6 核心接口(TDD-05 扩展)
| 接口 |
方法 |
路径 |
说明 |
| 发送消息 |
WebSocket |
nakama.rt.chat.send |
通过 Nakama 实时连接发送 |
| 接收消息 |
WebSocket |
nakama.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-01 |
XSS 防护 |
所有消息内容在客户端渲染时转义,不执行脚本 |
| 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 社交系统