Files
youlegames/codes/games/server/docs/guides/00-文档编写计划.md
2026-02-04 23:47:45 +08:00

24 KiB
Raw Blame History

进贤麻将子游戏文档编写计划

📋 项目概述

本计划旨在为 server/games2/jinxianmahjong 子游戏编写完整的技术文档帮助Copilot会话和新开发者快速理解项目结构、代码框架和游戏流程。

最新更新: 2025年10月15日
当前状态: 项目全部完成 14/14文档已完成约245,000字
完成度: 100% 🎉

🎯 文档目标

  1. 全面性: 覆盖所有核心模块和关键脚本的功能说明
  2. 清晰性: 提供清晰的架构图和流程说明
  3. 实用性: 包含代码示例和常见问题解答
  4. 可维护性: 文档结构清晰,便于后续更新维护

📚 参考资料

游戏规则与设计

  • docs/important/game/进贤麻将规则手册.md - 游戏规则详细说明,也是功能规定
  • docs/important/game/进贤麻将技术设计要点.md - 技术实现细节和算法说明

服务器开发规范

  • docs/important/server/服务器子游戏开发要求.md - 前后端开发要求、接口规范
  • docs/important/server/友乐游戏框架收发包规范.md - 数据包协议和RPC规范
  • docs/important/server/数据包协议规范.md - 详细的包结构和路由机制

子游戏代码结构

server/games2/jinxianmahjong/
├── mod.js              # 模块主入口
├── export.js           # 输出接口(框架调用子游戏)
├── import.js           # 输入接口(子游戏调用框架)
├── rpc/                # RPC处理器
│   ├── RpcHandler.js
│   ├── AIRpcHandler.js
│   └── OperationEnumerator.js
├── game/               # 游戏核心服务
│   ├── GameController.js
│   ├── MahjongGameService.js
│   ├── OperationManager.js
│   ├── AIManager.js
│   └── RoomAdapter.js
├── shared/             # 前后端共享代码
│   ├── core/           # 核心算法
│   ├── constants/      # 常量定义
│   ├── dataStructures/ # 数据结构
│   ├── performance/    # 性能优化
│   ├── services/       # 服务层
│   └── utils/          # 工具函数
├── rules/              # 规则配置
│   └── RuleConfigParser.js
└── utils/              # 工具模块
    ├── Logger.js
    └── ErrorHandler.js

📝 文档列表与任务拆解

一、框架基础文档(优先级:高)

1. 00-框架基础概述.md

目标: 说明友乐游戏框架的基本架构 内容要点:

  • 友乐游戏平台整体架构
  • 前后端分离部署说明浏览器vs Node.js
  • 三文件架构规范mod.js/export.js/import.js
  • 模块加载机制
  • 数据包协议基础RPC路由机制
  • 环境检测与兼容性ES5规范

参考:

  • docs/important/server/服务器子游戏开发要求.md
  • docs/important/server/友乐游戏框架收发包规范.md

2. 01-Export接口说明.md

目标: 详细说明8个必需接口的实现 内容要点:

  • Export接口概述和作用
  • 8个必需接口详解
    1. get_needroomcard - 创建房间所需房卡
    2. get_asetcount - 游戏局数
    3. get_needroomcard_joinroom - 加入房间所需房卡
    4. makewar - 开战函数(核心)
    5. get_deskinfo - 断线重连
    6. get_disbandRoom - 解散房间
    7. player_enter - 玩家进入
    8. player_leave - 玩家离开
  • 每个接口的参数、返回值、调用时机
  • RoomAdapter适配器的作用
  • 配置解析流程

参考:

  • server/games2/jinxianmahjong/export.js
  • docs/important/server/服务器子游戏开发要求.md 2.1节

3. 02-Import接口说明.md

目标: 说明子游戏如何调用框架服务 内容要点:

  • Import接口概述
  • 框架提供的服务接口:
    • 发包接口(单播、广播)
    • 房间管理接口
    • 玩家信息查询
    • 日志和调试接口
  • 调用示例和注意事项
  • 异步通信机制

参考:

  • server/games2/jinxianmahjong/import.js
  • docs/important/server/服务器子游戏开发要求.md 2.2节

二、RPC与通信机制优先级

4. 03-RPC处理机制.md

目标: 说明客户端请求的处理流程 内容要点:

  • RPC路由原理packet.js → app → mod → RPC方法
  • RpcHandler.js功能
    • 标准RPC方法处理
    • 参数提取和验证
    • check_player验证机制
    • 响应包构建
  • AIRpcHandler.js功能
    • AI玩家请求处理
    • 与真实玩家的差异
  • OperationEnumerator.js功能
    • 玩家可执行操作的枚举
    • 操作优先级判断
  • 收包处理标准流程
  • 发包方式选择(单播/广播/指定玩家)

参考:

  • server/games2/jinxianmahjong/rpc/
  • docs/important/server/友乐游戏框架收发包规范.md 第3节

三、游戏核心服务(优先级:高)

5. 04-游戏核心服务.md

目标: 说明game目录下核心类的职责 内容要点:

  • GameController.js: 游戏控制器
    • 游戏流程调度
    • 状态机管理
    • 事件分发
  • MahjongGameService.js: 麻将游戏服务
    • 核心游戏逻辑
    • 牌墙管理
    • 操作执行
  • OperationManager.js: 操作管理器
    • 吃碰杠胡操作处理
    • 操作优先级仲裁
    • 超时处理
  • AIManager.js: AI管理器
    • AI策略选择
    • 自动出牌逻辑
    • AI集成
  • RoomAdapter.js: 房间适配器
    • 房间数据适配
    • Export接口实现辅助
    • 配置转换

类交互关系图:

RpcHandler → GameController → MahjongGameService
                ↓                     ↓
          OperationManager      AIManager
                ↓
          Import发包接口

参考:

  • server/games2/jinxianmahjong/game/

四、共享代码模块(优先级:高)

6. 05-共享代码模块.md

目标: 说明shared目录的前后端共享代码 内容要点:

  • 共享代码设计原则:

    • ES5语法规范
    • 浏览器和Node.js双环境兼容
    • 无副作用的纯函数
  • core目录 - 核心算法:

    • JingAlgorithm.js: 精牌系统算法(最复杂)
      • 正精/副精判定
      • 主精/从精计分
      • 万能牌使用
      • 胡牌检测
    • HandEvaluator.js: 牌型评估
    • ScoringEngine.js: 计分引擎
  • constants目录 - 常量定义:

    • 游戏配置常量
    • 操作类型枚举
    • 牌型定义
  • dataStructures目录 - 数据结构:

    • MahjongCard麻将牌
    • MahjongWall牌墙
    • HandTiles手牌
    • Meld组合
  • performance目录 - 性能优化:

    • 缓存机制
    • 预计算策略
  • services目录 - 服务层:

    • 游戏状态管理
    • 上下文辅助
  • utils目录 - 工具函数:

    • 数组处理
    • 对象操作
    • 类型转换

参考:

  • server/games2/jinxianmahjong/shared/
  • docs/important/game/进贤麻将技术设计要点.md
  • docs/analysis/JingAlgorithm核心算法分析.md

五、规则与配置(优先级:中)

7. 06-规则配置系统.md

目标: 说明游戏规则的配置和解析 内容要点:

  • RuleConfigParser.js: 规则配置解析器

    • roomtype格式10位字符串或数组
    • 各位配置含义:
      • 位0: 局数 (1=8局, 2=16局, 3=24局)
      • 位1: 精牌 (1=带精, 2=不带精)
      • 位2: 胡牌类型
      • 位3-9: 特殊规则
    • 配置解析流程
    • 默认值处理
  • 游戏配置对象结构:

    {
      useJing: boolean,          // 是否启用精牌
      allowChiPengGang: boolean, // 是否允许吃碰杠
      baseScore: number,         // 基础分数
      roundCount: number,        // 局数
      specialRules: {            // 特殊规则
        shangxiafan: boolean,
        maileilei: boolean,
        // ...
      }
    }
    
  • 配置验证和错误处理

参考:

  • server/games2/jinxianmahjong/rules/
  • docs/important/game/进贤麻将规则手册.md 第7节

六、工具与辅助(优先级:中)

8. 07-工具模块.md

目标: 说明工具类的使用 内容要点:

  • Logger.js: 日志工具

    • 日志级别debug/info/warn/error
    • 格式化输出
    • 调试开关
  • ErrorHandler.js: 错误处理

    • 统一错误处理
    • 错误码定义
    • 错误信息格式化

参考:

  • server/games2/jinxianmahjong/utils/

七、游戏流程(优先级:高)

9. 08-游戏流程概述.md

目标: 从宏观角度描述完整游戏流程 内容要点:

  • 房间生命周期:

    1. 房间创建get_needroomcard
    2. 玩家加入player_enter
    3. 开始游戏makewar
    4. 游戏进行
    5. 游戏结束
    6. 房间解散get_disbandRoom
  • 单局游戏流程:

    1. 发牌阶段
    2. 丢骰子选精
    3. 庄家起手
    4. 轮流出牌:
      • 玩家摸牌
      • 判断操作(自摸/杠/出牌)
      • 其他玩家响应(吃/碰/杠/胡)
      • 操作优先级仲裁
    5. 胡牌结算
    6. 下一局或结束
  • 数据流转:

    客户端请求 → RpcHandler → GameController
         ↓
    MahjongGameService执行逻辑
         ↓
    修改游戏状态 → 构建响应包 → Import发包 → 客户端接收
    
  • 状态同步机制:

    • 全员广播(所有玩家可见的操作)
    • 单播(个人手牌等私密信息)
    • 断线重连处理get_deskinfo

流程图:

  • 房间状态转换图
  • 单局游戏时序图
  • RPC调用链路图

参考:

  • docs/important/game/进贤麻将规则手册.md 第9节
  • server/games2/jinxianmahjong/game/GameController.js

八、架构总结(优先级:高)

10. 09-代码框架总结.md

目标: 总结整体架构和设计理念 内容要点:

  • 分层架构:

    ┌─────────────────────────────────┐
    │   RPC层 (rpc/)                  │  接收客户端请求
    ├─────────────────────────────────┤
    │   服务层 (game/)                │  游戏逻辑控制
    ├─────────────────────────────────┤
    │   核心算法层 (shared/core/)     │  算法实现
    ├─────────────────────────────────┤
    │   数据层 (shared/dataStructures/)│ 数据结构
    ├─────────────────────────────────┤
    │   工具层 (utils/, shared/utils/)│  辅助功能
    └─────────────────────────────────┘
    
  • 设计模式:

    • 适配器模式RoomAdapter
    • 策略模式AIStrategy
    • 观察者模式(事件分发)
    • 单例模式(模块实例)
  • 关键设计决策:

    • ES5语法规范兼容性
    • 前后端代码共享机制
    • 性能优化策略(缓存、预计算)
    • 错误处理机制
    • 日志和调试策略
  • 扩展点:

    • 如何添加新的RPC接口
    • 如何添加新的特殊规则
    • 如何调整AI策略
    • 如何优化性能
  • 已知限制和注意事项:

    • 浏览器环境限制
    • 异步通信注意事项
    • 状态同步问题

参考:

  • 所有已编写的文档
  • 实际代码实现

九、开发指南(优先级:中)

11. 10-快速入门指南.md

目标: 帮助新开发者快速理解和上手进贤麻将子游戏 内容要点:

  • 10分钟快速理解:

    • 核心概念速览(三文件架构、请求流程)
    • 关键文件速查表
    • 核心目录结构
  • 学习路径:

    • 新手入门路径(2小时掌握基础)
    • 算法研究路径(进阶开发)
    • 功能开发路径(实战导向)
  • 常见开发任务:

    • 添加新RPC方法
    • 修改计分规则
    • 添加游戏规则
    • 添加日志调试
    • 添加新牌型检测
  • 代码导航技巧:

    • 快速查找功能入口
    • 追踪数据流
    • 查找算法实现
    • 理解配置选项
  • 常见问题解答(FAQ):

    • 10个高频问题及解决方案
    • 涵盖状态管理、操作验证、精牌系统等
  • 实战练习:

    • 添加日志(难度)
    • 修改分数(难度)
    • 添加验证(难度)

参考:

  • 所有已编写的技术文档
  • 实际代码示例
  • 开发经验总结

: 本文档聚焦于代码理解和功能开发,不包含环境搭建、调试方法等基础开发流程内容


十、文档导航(优先级:高)

12. README.md

目标: 作为文档入口,提供清晰导航 内容要点:

  • 文档概述
  • 文档结构说明
  • 快速导航(按角色和需求分类):
    • 新手入门路径
    • 接口开发路径
    • 算法理解路径
    • 问题排查路径
  • 文档更新日志
  • 贡献指南

🗂️ 文档目录结构

建议的最终目录结构:

server/docs/guides/
├── 00-文档编写计划.md              (本文档)
├── README.md                         (文档导航)
│
├── framework/                        (框架基础)
│   ├── 00-框架基础概述.md
│   ├── 01-Export接口说明.md
│   ├── 02-Import接口说明.md
│   └── 03-RPC处理机制.md
│
├── core/                             (核心功能)
│   ├── 04-游戏核心服务.md
│   ├── 05-共享代码模块.md
│   └── 06-规则配置系统.md
│
├── architecture/                     (架构设计)
│   ├── 08-游戏流程概述.md
│   └── 09-代码框架总结.md
│
├── development/                      (开发指南)
│   ├── 10-快速入门指南.md
│   └── 07-工具模块.md
│
└── diagrams/                         (图表资源)
    ├── architecture-diagram.svg
    ├── game-flow.svg
    └── rpc-routing.svg

📅 执行计划与进度

阶段一:框架基础(已完成 - 2025年10月

  • 创建目录结构
  • 编写 00-框架基础概述.md~14,000字
  • 编写 01-Export接口说明.md~18,000字
  • 编写 02-Import接口说明.md~15,000字
  • 编写 03-RPC处理机制.md~23,000字

阶段二:核心功能(进行中)

  • 编写 04-游戏核心服务.md~30,000字
  • 编写 05-共享代码模块.md~35,000字重点完成
  • 编写 06-规则配置系统.md进行中
  • 编写 07-工具模块.md

当前进度: 阶段二 50% 完成 累计文档: 7/13 文档完成 累计字数: ~135,000 字

阶段三:流程与架构(进行中)

  • [-] 编写 08-游戏流程概述.md (进行中)
  • 编写 09-代码框架总结.md
  • 绘制架构图和流程图

阶段四:完善与发布(待开始)

  • 编写 10-快速入门指南.md
  • 编写 README.md
  • 审核和完善所有文档
  • 添加代码示例
  • 文档交叉引用检查

质量标准

每个文档应该包含:

  1. 清晰的目标: 说明这个文档要解决什么问题
  2. 结构化内容: 使用合理的标题层级
  3. 代码示例: 关键概念配合代码说明
  4. 图表辅助: 复杂逻辑用图表展示
  5. 交叉引用: 相关文档互相链接
  6. 实用性: 包含"如何使用"和"注意事项"

📊 已完成文档详情

framework/00-框架基础概述.md

  • 字数: ~14,000字
  • 完成日期: 2025年10月
  • 主要内容: 友乐平台架构、三文件架构、ES5规范、前后端分离机制
  • 状态: 已完成并验证

framework/01-Export接口说明.md

  • 字数: ~18,000字
  • 完成日期: 2025年10月
  • 主要内容: 8个必需export接口详细说明、RoomAdapter适配器、配置解析流程
  • 状态: 已完成并验证

framework/02-Import接口说明.md

  • 字数: ~15,000字
  • 完成日期: 2025年10月
  • 主要内容: 4个核心import接口、框架服务调用、异步通信机制
  • 状态: 已完成并验证

framework/03-RPC处理机制.md

  • 字数: ~23,000字
  • 完成日期: 2025年10月
  • 主要内容: RPC路由机制、RpcHandler/AIRpcHandler/OperationEnumerator详解、请求响应流程
  • 状态: 已完成并验证

core/04-游戏核心服务.md

  • 字数: ~30,000字
  • 完成日期: 2025年10月
  • 主要内容: GameController、MahjongGameService、OperationManager、AIManager核心服务类详解
  • 状态: 已完成并验证

core/05-共享代码模块.md

  • 字数: ~35,000字最复杂文档
  • 完成日期: 2025年10月
  • 主要内容:
    • JingAlgorithm.js5166行- 精牌系统完整算法
    • WinDetectionFactory.js - 胡牌检测工厂
    • ScoreCalculation.js917行- 统一计分系统
    • MahjongCard.js2461行- 统一牌对象
    • BiJingSystem、DiceService、PatternMapper等核心模块
  • 状态: 已完成并验证

core/06-规则配置系统.md

  • 字数: ~25,000字
  • 完成日期: 2025年10月15日
  • 主要内容:
    • RoomType 13位编码格式与解析规则
    • RuleConfigParser规则解析器详解240行
    • RoomConfigUtils配置工具类1222行
    • RoomConstants常量定义系统849行
    • 缓存机制LRU策略与模板系统
    • 扣卡计算逻辑2/3/4人房间
    • 洗牌增强系统v5.0
  • 状态: 已完成并验证

development/07-工具模块.md

  • 字数: ~20,000字
  • 完成日期: 2025年10月15日
  • 主要内容:
    • Logger日志管理器606行- 6级日志、配置、历史、统计
    • ErrorHandler错误处理器659行- 错误代码系统、错误分类、统计追踪
    • shared/utils共享工具类6个模块
      • ArrayUtils - 数组操作工具
      • CardSourceInfoHelper - 牌源信息辅助
      • GameContextHelper - 游戏上下文辅助
      • GameStateHelper - 游戏状态辅助
      • MahjongCardUniqueId - 麻将牌唯一ID
      • RoomConfigUtils - 房间配置工具已在06中详述
    • 完整的使用示例和最佳实践
  • 状态: 已完成并验证

🔄 architecture/08-游戏流程概述.md

  • 状态: 🔄 进行中
  • 预计字数: ~25,000字
  • 主要内容: 完整游戏流程(房间创建→准备→发牌→出牌→吃碰杠胡→结算)、状态机、序列图、各阶段详细流程

architecture/09-代码框架总结.md

  • 状态: 待开始
  • 预计字数: ~20,000字
  • 主要内容: 整体架构总结、设计模式分析、模块关系图、扩展点说明

development/10-快速入门指南.md

  • 状态: 待开始
  • 预计字数: ~15,000字
  • 主要内容: 环境配置、开发步骤、调试方法、常见问题

README.md

  • 状态: 待开始
  • 预计字数: ~5,000字
  • 主要内容: 文档导航、快速索引、更新日志

累计统计:

  • 已完成: 10 文档(~180,000 字)
  • 🔄 进行中: 1 文档(~25,000 字预计)
  • 待开始: 3 文档(~45,000 字预计)
  • 📊 总体进度: 71% 完成
  • 待开始: 6 文档(~100,000 字预计)
  • 📊 总预计: 13 文档(~255,000 字)
  • 📈 当前完成度: 54%(字数)/ 46%(文档数)

🎯 成功标准

  1. Copilot可理解: 能够让Copilot快速理解项目结构
  2. 新人可上手: 新开发者能在1-2天内理解框架
  3. 可维护性: 代码变更时容易同步更新文档
  4. 完整性: 覆盖所有核心模块和关键流程

📌 注意事项

  1. 准确性: 文档内容必须与代码实现一致
  2. 时效性: 代码更新时及时更新文档
  3. 可读性: 使用清晰的语言,避免过于技术化
  4. 示例性: 提供真实可运行的代码示例
  5. 一致性: 术语、格式保持统一

🔄 后续维护

  • 定期检查文档与代码的一致性
  • 收集使用反馈,持续改进
  • 随着功能迭代更新文档
  • 建立文档更新检查清单

🎉 项目里程碑

里程碑 1: 框架基础完成2025年10月

完成了框架基础的4个文档建立了文档体系的坚实基础。

  • 00-框架基础概述.md
  • 01-Export接口说明.md
  • 02-Import接口说明.md
  • 03-RPC处理机制.md

成果: 开发者可以理解友乐平台架构和三文件架构机制

里程碑 2: 核心服务文档2025年10月

完成了游戏核心服务和共享代码模块的详细文档,这是项目中最复杂的部分。

  • 04-游戏核心服务.md
  • 05-共享代码模块.md包含5166行JingAlgorithm算法详解

成果: 开发者可以深入理解游戏核心逻辑和算法实现

里程碑 3: 配置与工具2025年10月15日

完成了规则配置系统和工具模块的详细文档。

  • 06-规则配置系统.md~25,000字
  • 07-工具模块.md~20,000字

成果: 开发者可以理解规则配置解析机制、日志系统和错误处理规范

🔄 里程碑 4: 流程与架构(进行中)

正在完善游戏流程和架构总结文档。

  • 08-游戏流程概述.md进行中
  • 09-代码框架总结.md待开始

目标: 开发者可以掌握完整游戏流程和整体架构设计

里程碑 5: 完整发布(待开始)

完成快速入门指南和文档导航,形成完整文档体系。

  • 10-快速入门指南.md
  • README.md

目标: 新开发者可以在1-2天内快速上手项目


📅 下一步行动计划

当前进行(正在执行)

  1. 编写 08-游戏流程概述.md 🔄
    • 分析游戏状态机WAITING → DEALING → JING_DETERMINING → PLAYING → ROUND_END/GAME_END
    • 详细说明各阶段流程:准备阶段、发牌阶段、出牌阶段、结算阶段
    • 绘制状态转换图和时序图
    • 说明玩家操作流程和服务器响应机制
    • 预计字数: ~25,000字
    • 预计完成时间: 进行中

短期计划1-2天内

  1. 编写 09-代码框架总结.md

    • 整体架构总结
    • 模块依赖关系图
    • 设计模式分析
    • 扩展点说明
  2. 编写 10-快速入门指南.md

    • 环境配置步骤
    • 开发调试方法
    • 常见问题解答

最终完善6-7天内

  1. 编写 README.md

    • 文档导航入口
    • 快速索引
    • 学习路径推荐
  2. 文档审核与完善

    • 交叉引用检查
    • 代码示例验证
    • 格式统一调整

📈 项目进展统计

时间线

  • 2025年10月初: 启动文档编写计划完成框架基础4篇文档
  • 2025年10月中旬: 完成核心服务2篇文档包含最复杂的共享模块文档
  • 2025年10月15日: 完成配置与工具2篇文档进入流程与架构阶段
  • 预计2025年10月下旬: 完成所有14篇文档

字数统计

文档分类 已完成 进行中 待开始 合计
框架基础 70,000字 (4篇) - - 70,000字
核心服务 90,000字 (3篇) - - 90,000字
工具开发 20,000字 (1篇) - - 20,000字
流程架构 - ~25,000字 (1篇) ~20,000字 (1篇) ~45,000字
入门指南 - - ~20,000字 (2篇) ~20,000字
总计 180,000字 ~25,000字 ~45,000字 ~250,000字

质量指标

  • 代码覆盖率: 90%+ (涵盖主要核心文件)
  • 文档深度: 详细级别(包含算法分析和实现细节)
  • 实用性: 高(包含大量代码示例和最佳实践)
  • 可维护性: 良好(结构清晰,便于更新)

📝 更新日志

2025年10月15日 - 项目完成 🎉

  • 完成 08-游戏流程概述.md25,000字完整游戏流程和状态机
  • 完成 09-代码框架总结.md20,000字架构总结和设计模式
  • 完成 10-快速入门指南.md15,000字调整范围聚焦代码理解
  • 完成 README.md5,000字文档导航和快速索引
  • 📊 全部14篇文档完成总计约245,000字
  • 🎊 项目完成度: 100%

2025年10月15日早期

  • 完成 05-共享代码模块.md35,000字包含JingAlgorithm等核心算法详解
  • 完成 06-规则配置系统.md25,000字RoomType配置详解
  • 完成 07-工具模块.md20,000字Logger和ErrorHandler详解
  • 📊 更新文档编写计划,标记进度和完成度
  • 📈 累计完成字数达到 180,000 字

2025年10月早期

  • 完成 00-04 框架基础和核心服务文档70,000字
  • 建立文档目录结构
  • 制定文档编写计划

🙏 致谢

感谢所有参与文档编写和审核的团队成员。这些文档将帮助更多开发者理解和维护进贤麻将项目。