[M20-P0] 联机测试床、WS↔TCP 桥与原版 1.13c 抓包回放框架 #508

Closed
opened 2026-09-28 13:10:04 +00:00 by troytt · 0 comments
Owner

背景与目标

搭建 PvPGN + D2GS 1.13c 本地联机测试床、浏览器到 TCP 服务端的 WebSocket↔TCP 字节桥,以及基于原版 1.13c Game.exe 真实会话的抓包录制/回放框架,为后续协议与客户端世界实现提供黄金用例与离线回归门禁。

核心内容与 1.13c Ground Truth 对标

  1. PvPGN + D2GS 1.13c 本地测试床:
    • 配置 bnetd(BNCS,TCP 6112)、d2cs(MCP,TCP 6113)、d2dbs 与 D2GS 1.13c(TCP 4000,Wine 容器化运行,挂载原版 1.13c D2Common.dll / D2Game.dll / D2Server.dll 与 MPQ)。
    • 提供一键启动、健康检查与固定测试账号/角色种子脚本。
  2. WebSocket ↔ TCP 透明字节桥与传输抽象:
    • 实现 ByteStreamTransport 统一接口:Node 端直连原生 net.Socket(供 headless 测试与回放使用),浏览器端经 WebSocket 连接桥服务。
    • 桥服务仅做字节流透传,强制目标端口白名单(仅允许配置的 bnetd / d2cs / D2GS 地址),禁止任意主机转发。
  3. 原版 1.13c 会话抓包录制与回放器:
    • 在代理层录制原版 1.13c Game.exe 完整会话(登录 → 选角 → 进房 → 走动 → 交互 → 战斗)的双向原始字节流与时间戳(.d2cap)。
    • 提供 headless 回放测试驱动,支持把录制的下行流喂给客户端解析器并断言零异常、状态一致。

验收标准

  • 原版 1.13c Game.exe 可通过代理完整登录测试床并进入罗格营地。
  • 至少录制 3 份覆盖登录、进房、Act I 城镇走动与基础交互的 .d2cap 抓包样本。
  • ByteStreamTransport 在 Node 直连与 WebSocket 桥两种后端下通过流式分包/粘包单测。
## 背景与目标 搭建 PvPGN + D2GS 1.13c 本地联机测试床、浏览器到 TCP 服务端的 WebSocket↔TCP 字节桥,以及基于原版 1.13c `Game.exe` 真实会话的抓包录制/回放框架,为后续协议与客户端世界实现提供黄金用例与离线回归门禁。 ## 核心内容与 1.13c Ground Truth 对标 1. **PvPGN + D2GS 1.13c 本地测试床**: - 配置 `bnetd`(BNCS,TCP 6112)、`d2cs`(MCP,TCP 6113)、`d2dbs` 与 `D2GS` 1.13c(TCP 4000,Wine 容器化运行,挂载原版 1.13c `D2Common.dll` / `D2Game.dll` / `D2Server.dll` 与 MPQ)。 - 提供一键启动、健康检查与固定测试账号/角色种子脚本。 2. **WebSocket ↔ TCP 透明字节桥与传输抽象**: - 实现 `ByteStreamTransport` 统一接口:Node 端直连原生 `net.Socket`(供 headless 测试与回放使用),浏览器端经 WebSocket 连接桥服务。 - 桥服务仅做字节流透传,强制目标端口白名单(仅允许配置的 `bnetd` / `d2cs` / `D2GS` 地址),禁止任意主机转发。 3. **原版 1.13c 会话抓包录制与回放器**: - 在代理层录制原版 1.13c `Game.exe` 完整会话(登录 → 选角 → 进房 → 走动 → 交互 → 战斗)的双向原始字节流与时间戳(`.d2cap`)。 - 提供 headless 回放测试驱动,支持把录制的下行流喂给客户端解析器并断言零异常、状态一致。 ## 验收标准 - [ ] 原版 1.13c `Game.exe` 可通过代理完整登录测试床并进入罗格营地。 - [ ] 至少录制 3 份覆盖登录、进房、Act I 城镇走动与基础交互的 `.d2cap` 抓包样本。 - [ ] `ByteStreamTransport` 在 Node 直连与 WebSocket 桥两种后端下通过流式分包/粘包单测。
troytt added this to the [M20] D2GS 纯客户端:接入 PvPGN + D2GS 1.13c 服务端联机 (1.13c Ground Truth) milestone 2026-09-28 13:10:04 +00:00
Sign in to join this conversation.
No Label
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#508
No description provided.