Appearance
服务与数据流
CNBN D2 平台不是单个 PvPGN 进程,而是由登录、国度协调、游戏实例、存档、业务 API、论坛和管理后台组成的分层系统。角色存档与交易账本各有唯一权威来源,任何组件都不能绕过边界直接修改另一组件的数据。
服务职责
| 服务 | 进程/实现 | 监听方向 | 核心职责 | 权威数据 |
|---|---|---|---|---|
| BNetD | bnetd.exe | 客户端 6112 | 登录、账号、频道、聊天命令、国度列表、VIP 字段 | PvPGN 账号库 |
| D2CS | d2cs.exe | BNetD、D2GS | 创建/加入游戏协调、国度策略、VIP 准入、操作日志 | 活跃游戏协调状态 |
| D2DBS | d2dbs.exe | D2GS | 角色存档读写、锁、备份、天梯 | charsave / charinfo |
| D2GS | D2GS.exe / 扩展控制器 | 客户端 4000 | 游戏模拟、掉落、NPC、D2GE 扩展 | 内存中的游戏实例 |
| GameAgent | d2109-api-x86.exe / d2113-api-x86.exe | 管理后台、论坛 | 存档索引、鉴权写入、交易托管、自助服务、D2GS 管理 | API 业务库与存档 revision |
| 论坛 | PHPWind + d2109/d2109.php、d2113/d2113.php | 玩家浏览器 | 两版独立的账号绑定、VIP、市场、自助服务、论坛通知 | 论坛 MySQL、订单账本 |
| 管理后台 | Vue + Node | 管理员浏览器 | 跨国度运营、风控、配置、日志、赛季和部署 | 各 Agent 与论坛管理接口 |
关键调用链
登录与进入游戏
- 客户端连接 BNetD,验证账号密码并读取账号 VIP 到期时间。
- BNetD 返回
realm.conf中的免费/VIP 国度。 - 客户端选择国度后连接 D2CS;D2CS执行版本、VIP 与并发策略。
- D2CS 选择已注册 D2GS,D2GS 从 D2DBS 获取并锁定角色。
- 退出游戏后 D2GS 把角色写回 D2DBS并释放锁。
论坛自助服务
- 论坛根据登录 UID 查询 PvPGN
BBSUID绑定账号。 - 论坛创建幂等业务请求,通过签名 HTTPS 调用对应版本 Agent。
- Agent 验证账号归属、角色离线、D2DBS 锁、存档版本与 revision。
- Agent 原子备份和写入存档,再更新业务回执。
- 论坛扣费/结算并通过 PHPWind 系统通知告知玩家。
交易
上架先从角色存档提取完整根物品组并写入托管;购买先锁订单与付款资产,交付只写入离线角色。失败时资产保持冻结或进入可恢复状态,绝不通过重复生成物品“补偿”。
数据所有权
| 数据 | 唯一权威来源 | 禁止做法 |
|---|---|---|
| 账号密码、VIP、BBSUID | PvPGN 账号记录 | 仅更新论坛副表后假定游戏已生效 |
| 当前角色与物品 | D2DBS 存档 | 论坛直接读写 charsave |
| 订单、余额、通知 | PHPWind MySQL | 用 API JSON 文件替代订单账本 |
| 托管物品与幂等回执 | GameAgent MySQL | 删除失败记录后重新发货 |
| 可搜索角色摘要 | GameAgent 索引 | 用索引副本覆盖当前存档 |
D2GS Admin 不是 HTTP API
GameAgent 通过 D2GS Admin TCP 协议查询实例或执行受控管理命令。D2GS 本身不提供论坛 HTTP 接口,论坛也不应直接连接 D2GS Admin 端口。