lawless/docs/设计文档/GDD-29-聊天与信息传递系统设计.md

39 KiB

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

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

定位:聊天与信息传递是洪荒大陆玩家社交的底层基础设施。本文档在 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 条/频道 离线查看、快速加载
服务端缓存 ValkeySorted Set 最近 1000 条/频道 实时消息分发、历史回溯
服务端持久化 PostgreSQLchat_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 所属组织 IDguild_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 消息延迟 同层消息端到端延迟 ≤ 200msP99
PERF-02 跨层消息延迟 传音符跨层消息延迟 ≤ 500msP99
PERF-03 并发消息 单频道支持 1000+ 并发消息/秒
PERF-04 历史消息加载 加载最近 200 条历史消息 ≤ 1 秒
PERF-05 敏感词过滤 L1 过滤延迟 ≤ 50msP99

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 社交系统