868 行
39 KiB
Markdown
868 行
39 KiB
Markdown
# 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 消息体结构
|
||
|
||
```json
|
||
{
|
||
"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):
|
||
|
||
```protobuf
|
||
// 聊天消息(客户端 → 服务端)
|
||
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 邮件数据模型
|
||
|
||
```sql
|
||
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 社交系统*
|