Skip to content

协议与契约

这一区收的是跨两端的内容——描述"谁和谁之间约定了什么",而不是某一端内部怎么实现。

原先这些内容在客户端与服务端文档里各写一份,两边视角不同、措辞不同,改动时又常常只改 一边,于是慢慢漂移。合并文档站时把它们收敛到这里,每条契约只有一份权威描述

三份契约

文档约定了谁和谁违反的后果
客户端 ↔ 服务端握手协议我们的客户端 ↔ 我们的服务端已发布的 APK 解析失败,真机崩溃或行为异常
引擎数据契约我们的补丁 ↔ 游戏引擎(native / WebView)补丁注入失效、汉化不生效、状态重放错乱
上游游戏后端 API 清单客户端 ↔ 不由我们掌控的 Totentanz / 官方后端——(只读整理,供将来自建后端参考)

三者的性质完全不同

第一份是硬契约:只增不改

客户端是已签名、已分发的 APK,字段名与解析逻辑钉死在包里,无法随服务端热改。 所以 /client/* 的 JSON 字段只可新增,不可删除 / 改名 / 改类型 / 改语义, 新增字段必须可选。变更流程是「先加新字段 → 客户端适配发版 → 双跑过渡 → 再废旧」。

这是整个项目里唯一一条"改错了就没法回滚"的规则——服务端可以随时改代码,但已经装在 玩家手机上的 APK 不能。

第二份是互操作边界

补丁与游戏引擎之间靠 hook 点、符号名、资源路径、JS bridge 约定协作。这些不是我们定的, 是逆向出来的——底包一换就可能变。所以这份文档同时也是"换底包时要逐条重新核对的清单"。

第三份是历史存档,不是活契约

上游服务端已不可达。这份清单来自社区留存的历史流量抓包(2024-06-05 至 07-30, 293,217 条请求),是一次性、不可再生的资料,只作将来若要自建游戏后端时的规格基线。 它描述的不是我们的任何一个接口。

从哪读起

文档正文以 CC BY-NC-SA 4.0 授权 · 代码部分以 GPLv3 开源 · 本项目仅作学习研究使用,与版权方无任何关联