修仙成长线 · 异步对战与离线优先 v0.2#
本作是单机买断(08 商业化方案),但敌方盘面希望来自真实玩家, 且后续要开异步对战(斗法台,03 § 7)。 这两件事不冲突,但架构必须现在就定——离线优先是回不去的决定。 起草 2026-08-31 | v0.2(2026-09-04):§ 6.2「斗法台不能变成天梯」由红线降为范围决定。 原论证把"频繁削弱"(运营行为)与"有排名"(结构)当成了因果。 天梯第一版不做,之后可评估;新增「加天梯之后防作弊成本上升」与「四档成本」两节。 § 五的三层防线对幽灵池质量完全够用——它的前提正是没有排名。
一、结论#
采用「离线优先 + 幽灵快照包」架构。
玩家盘面 → 快照 → 服务器聚合 → 幽灵包随版本/补丁下发 → 本地库
↓
断网时照常从本地库匹配对手
| 敌方盘面来源 | 断网能否玩 | 服务器角色 | |
|---|---|---|---|
| A 纯本地 | 算法生成 | 能 | 无 |
| B 离线优先(选定) | 真实玩家快照,预置 + 增量下发 | 能,完整通关 | 仅同步,可失败 |
| C 实时拉取(大巴扎) | 每次匹配在线拉取 | 不能 | 强依赖 |
二、为什么 B 在本作特别成立#
2.1 战斗是确定性的#
大巴扎的战斗零操作、全自动,构筑和摆位决定一切
(xiuxian-doc/大巴扎拆解/UI/09-combat.md 原文:「战斗零操作,物品按冷却自动触发」)。
于是:
一份盘面快照 + 一个随机种子 = 一场可完整复现的战斗。
对手不需要在线,不需要实时同步,甚至不需要存在——他只是一组数据。
2.2 幽灵数据小到可以直接打进包体#
一份幽灵要存的全部东西:
| 字段 | 估算 | 说明 |
|---|---|---|
| 物品 × ≤10 | 卡 id 2B + 品阶 3bit + 附魔 4bit + 计数器 varint | 全库 1503 张,11 bit 足够索引 |
| 功法 × ~5 | 同上,无附魔 | |
| 玩家属性 | 生命上限 / 境界 / 层数 / 灵根 / 磨砺 | ~10 B |
| 元数据 | 境界、回合数、强度分桶、道号、面具 ID、含 DLC 内容 1 bit | ~22 B |
面具 ID 与 DLC 标志位必须现在就留(v0.2 新增)。本作全部资源随包体下发, 按授权解锁——所以未购买 DLC 的玩家照样渲染得出 DLC 的面具与卡面, 显示层不存在缺资源的问题。面具 ID 只要 1~2 字节,而格式是回不去的决定(§ 一): 现在不留,以后想让残影有面孔就得改格式、重刷池子。
「道号 + 面具」正是原著里匿名修士的标准形象(11 § 2.1): 地下拍卖会上人人戴面具、斗篷掩住本来面目;而道号本来就是化名—— 韩立长期借用旧友厉飞雨的名字,自称海外散修。
于是 § 6.2 那句"你击败了 XX 道友的残影"变得彻底自洽——你本来就不该知道那是谁。 道号字段无需做实名映射,它在世界观里就该是假的。
DLC 标志位同理——记录,但默认不用它过滤(理由见 11 § 十)。 它是一个零成本的开关,留着以备将来数据说话。
单份幽灵 ≈ 200 ~ 300 字节(二进制)
5 万份 ≈ 15 MB
15 MB 换「完全离线,且对手是真人构筑」。 首发包体里预置 5 万份, 按单局 ~50 场战斗算,玩家打一千局也刷不重。
对比 C 架构的代价:调研里 8% 的差评是"服务器 / QoL 缺失", 大巴扎连倍速都做不了,官方理由就是"服务器不支持"。 我们花 15 MB 包体,买下的是永远不会有这条差评。
三、幽灵的生命周期#
3.1 什么时候采样#
不让玩家选上传哪一个盘面——会被挑最强的传,池子迅速失真。
自动采样,固定时机:
| 时机 | 采什么 |
|---|---|
| 每个境界突破的那一刻 | 该境界的最终盘面(炼气/筑基/金丹各一份) |
| 坐化时 | 死前盘面(这类幽灵尤其珍贵——它是"没走通的构筑") |
| 结婴成功 | 终局盘面 |
一局最多产出 4 份。坐化盘面必须要:一个池子里若全是通关者的盘面, 新手在炼气期会撞上一堆完成度过高的对手。
3.2 上传与更新#
| 动作 | 时机 | 失败了怎么办 |
|---|---|---|
| 上传本地积攒的快照 | 启动时 / 退出时,批量,非阻塞 | 静默丢弃或留到下次,不提示玩家 |
| 拉取增量幽灵包 | 同上 | 用本地已有的,不提示玩家 |
两个动作都不能阻塞任何游戏流程。 玩家永远不该看到"正在连接服务器"。
3.3 分桶匹配#
幽灵入库时按三个维度分桶,本地匹配时按桶取:
境界(炼气/筑基/金丹) × 境界内进度(初/中/后/圆满) × 强度分档(普通/精英/首领)
强度由服务器侧离线算(盘面品阶总和、功法叠加次数、历史胜率),不由客户端上报。
03 § 7 的问道(主动选高一境界对手)就是跨桶取—— 取上一档境界的幽灵,这一条现成支持。
四、冷启动#
EA 上线时没有任何玩家盘面。三个来源,按优先级:
| # | 来源 | 数量目标 | 注意 |
|---|---|---|---|
| 1 | 开发期内部刷 | 3000+ | 跑通完整流程,把盘面存下来,人工筛掉不像人打的 |
| 2 | AI 生成打底 | 20000+ | 见下 |
| 3 | EA 玩家自然产出 | 滚动 | 上线后自动接管 |
AI 生成的幽灵必须"像人"#
全是最优解的盘面一眼假。 真人盘面的特征是:
- 有一两件明显该卖掉却留着的东西(舍不得,或者没凑够钱换)
- 属性不纯(灵根 +N% 只吃到一半)
- 品阶参差(一件黄金配三件青铜)
- 偶尔有完全不成立的构筑(新手局)
生成器要按这些特征加噪,而不是求最优。
这一条直接对应 04 样例局:朱重八四十年里的盘面是"两件木胎 + 一面铜镜"、 "全是青木之属却打不动"——那种盘面才是幽灵池的主体,不是终局的完美构筑。
五、防作弊#
单机客户端可以伪造盘面。三层防线,都在服务器侧:
| 层 | 做什么 |
|---|---|
| 规则校验 | 格数 ≤ 该等级上限、卡牌存在、品阶分布符合该境界的 shop_odds、附魔合法 |
| 统计剔除 | 入库后跟踪胜率,异常高或异常低的自动下架(前者是作弊,后者是垃圾数据) |
| 采样限流 | 单账号单位时间内的上传上限 |
不做实时反作弊,不封号。 这是单机游戏——作弊者伤害的是幽灵池质量, 不是别人的排名(因为没有排名,见下)。剔除数据即可,不必上手段。
六、一条红线,一条范围决定#
6.1 断网必须能完整通关#
08 商业化方案的商店页第一屏要写"单机买断"。这个承诺一旦做出就收不回。
异步对战只能是加分项:
- 断网 → 用本地幽灵库,全流程无提示、无降级说明
- 联网 → 幽灵更新鲜、能上传自己的盘面、斗法台可用
验收标准:把网线拔掉,从新建存档打到结婴,全程不出现任何联网相关的 UI。
6.2 天梯:第一版不做,但不是红线#
v0.2 修订。 上一版把「斗法台做成天梯」列为红线,论证是 "一旦有可比较的跨局分数,22% 的平衡焦虑差评就原样请回来"。 那是把相关当成了因果。
那 22% 骂的是「频繁削弱」——一个运营行为,不是一个结构。 有天梯的游戏可以不乱砍,没天梯的游戏照样能靠乱砍把人气走。 08 § 五对「角色单卖」的论证更能说明问题:大巴扎"新角色强 → 卖 DLC → 砍废" 的循环是全部差评的发动机——那条链子里根本没有天梯。
真正该写死的是 08 § 五 现在的红线第一行:绝不砍老内容。
第一版不做天梯与排名(08 § 1.1 的范围决定),但这是范围,不是禁令, 且不写进商店页承诺——承诺是单向的,不写以后随时能加,写了再加就是背刺。
加天梯之后,真正上升的成本是防作弊#
§ 五现在的结论是「不做实时反作弊,不封号」,理由的原文是:
作弊者伤害的是幽灵池质量,不是别人的排名(因为没有排名)。剔除数据即可。
这条"省事"的结论,前提恰恰就是没有排名。 三层防线(规则校验 / 统计剔除 / 采样限流)全在服务器侧离线跑,对幽灵池质量完全够用; 但它们不是为名次公信力设计的。
| 现在 | 加天梯之后 | |
|---|---|---|
| 服务器角色 | 仅同步,可失败(§ 一) | 至少对排名数据必须可信 |
| 作弊 | 剔除数据即可 | 要真的防,它损害的是别人的名次 |
| 客户端 | 单机,盘面可伪造 | 伪造直接变成上分手段 |
| 运维 | 聚合与下发,量级很小 | 持续对抗,量级不封顶 |
天梯不推翻离线优先(可以离线照玩、联网才上榜), 但它推翻的是"服务器可以不可信"这个前提。
四档成本,差一个数量级#
| 形态 | 服务器 | 防作弊 | 风险 |
|---|---|---|---|
| 个人最佳 / 自我对比 | 不需要 | 不需要 | 零 |
| 好友榜 | 轻 | 轻(作弊只骗朋友) | 低 |
| 全服永久榜 | 中 | 要做 | 中 |
| 赛季榜 + 赛季奖励 | 重 | 要做 | 高——"肝"的来源 |
真正危险的是最后一档。 调研里 9% 的「肝 / 时间压力」与 11% 的「更新换代太快」 都是赛季制造的,不是排名本身制造的。
所以真要加,建议加到第三档为止:全服永久榜,不做赛季与赛季奖励。 拿到排名的大部分价值,避开那 20% 的差评来源。 「赛季 / 赛季奖励」仍然是 08 § 五 的红线。
七、异步对战绝不做成 DLC#
付费墙会把幽灵池切成两半,两边都变差。
买了的人对手变少,没买的人干脆撞不到真人盘面。 而幽灵池的价值完全来自规模——这是典型的越多人用越好的东西, 任何切分都是负和的。
结论:异步对战走本体免费更新,不进 DLC 清单(08 § 4)。
八、与现有文档的接口#
| 接口 | 影响 |
|---|---|
| 03 § 7 越级四形态 | 问道跨桶取上一境界幽灵;斗法台为异步 PvP 本体,须遵守 § 6.2 |
| 08 § 5 红线 | 新增一条:异步对战不做 DLC、不做天梯 |
| 08 § 6 结构性优势 | "没有天梯"这一条依赖 § 6.2 被遵守 |
| 01 § 三 修为来源 | 斗法台的修为收益需与问道(×3.5)拉开档次 |
| 工程本体 | 幽灵包格式、服务器聚合与校验属服务端,需在 xiuxian-server 立项 |
九、待办#
- [ ] 幽灵记录的二进制格式定稿(字段、版本号、向后兼容策略)—— 补丁会改卡表,旧幽灵不能因为加了新卡就全部失效
- [ ] 强度分桶算法:盘面品阶总和 + 功法叠加次数 + 历史胜率的权重
- [ ] AI 幽灵生成器的"拟人噪声"参数(该留不留的件、属性纯度、品阶参差)
- [ ] 内部刷 3000 份幽灵的自动化方案(AI 自动跑局 + 人工抽检)
- [ ] 道号的 UGC 审核(幽灵带玩家自定义道号,需过滤)
- [ ] 断网验收用例:拔网线从新建存档打到结婴,全程无联网 UI
- [ ] 斗法台奖励表设计,且需通过 § 6.2 的红线检查
- [ ] 服务器成本估算——只做聚合与下发,量级应当很小,需给出年度数字