和「排查记录」不同,这份文档不写怎么修,只回答「为什么会踩、为什么没早发现」, 给的是可迁移的判断,而不是单次操作步骤。 - P-001 启动器套娃开窗:三层成因(打包改变 sys.executable 语义 / Popen 只保证 进程创建不保证脚本执行 / 端口顺延把必然失败伪装成正常启动)、四个掩盖因素、 四个不成立的隐含假设,以及「拉起子进程要校验副作用而非返回值」等五条教训 - P-002~P-013:DLL 指纹绑定、CRC32 种子、CRC 槽位扫错节、CSS 特异性、IE11、 旧进程占端口、WebView2 缓存、console=False、图片占位时序、仓库与部署副本、 replace 静默失败、补丁包缺文件 - 结尾提炼八条通用规则与发版检查清单 - 文档索引:根 README、docs/README 各补一行;排查文档顶部加成因复盘的交叉链接
开发文档索引
本目录汇总各子项目的开发文档。
| 文档 | 内容 |
|---|---|
| 开发文档.md | GM 启动器 / 整合工具 完整开发文档(环境搭建、架构、API 契约、打包部署、常见问题) |
| 服务端开发文档.md | 服务端(Go) 架构、GM 接口契约、拍卖行/背包改动、编译部署 |
| PVF解析开发文档.md | PVF 解析 套件(pvfine)、pvfexport 工具、离线名称显示集成 |
| 客户端补丁与CRC校验.md | 客户端补丁(90CN.dll) 自校验机制、patch_dll_crc.py 用法、与「服务端 DLL 指纹」的区别、排查手册 |
| 启动器窗口风暴排查.md | 启动器重复开窗口 / 页面空白 的根因(打包后 sys.executable 指向自身)、复现手法、修复点与日志判读 |
| 踩坑记录.md | 踩坑合集(13 条):每条只写现象 / 成因 / 为什么没早发现 / 教训,开头是一句话教训总表,结尾是发版检查清单 |
| launcher-README.md | 整合启动器 + GM 工具的原始 README |
其余子项目的 README 分散在各自目录:
server/README.md— 服务端源码说明pvf/README.md— pvfine 项目说明gmtool/README.md— GM 工具旧版说明
快速上手路径
- 只想跑起来:看根目录 README 的「快速开始」。
- 改 GM 工具(启动器):看 开发文档.md。
- 改服务端 GM 接口:看 服务端开发文档.md 的「GM 接口契约」。
- 改 PVF 解析 / 物品名:看 PVF解析开发文档.md。
- 改客户端补丁 / 重编 DLL:看 客户端补丁与CRC校验.md——改完 DLL 要补 CRC,并且要重编服务端。
- 遇到怪问题先翻 踩坑记录.md:13 条坑的一句话教训和判断规则,可能已经记过了。