跳转至

修仙成长线 · 异步对战与离线优先 v0.1#

本作是单机买断08 商业化方案),但敌方盘面希望来自真实玩家, 且后续要开异步对战(斗法台,03 § 7)。 这两件事不冲突,但架构必须现在就定——离线优先是回不去的决定。 起草 2026-08-31


一、结论#

采用「离线优先 + 幽灵快照包」架构。

玩家盘面 → 快照 → 服务器聚合 → 幽灵包随版本/补丁下发 → 本地库
                                                        ↓
                                        断网时照常从本地库匹配对手
敌方盘面来源 断网能否玩 服务器角色
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
元数据 境界、回合数、强度分桶、道号 ~20 B
单份幽灵 ≈ 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 斗法台不能变成天梯#

这条比上一条更容易破,也更危险。

03 § 7 现在给斗法台的定位是对的——"零时间成本的试炼场,不折寿"。 但奖励列表里写着声望

一旦声望做成可比较的排行榜,就等于把调研里最大的那 22% 差评 (平衡焦虑:「今天是轮椅,明天是残废」)原样请回来。

单机最大的结构性优势是:没有天梯,所以平衡改动只是版本更新,不是资产被砍。 别为了一个异步玩法把这个优势扔掉。

约束:斗法台的奖励只给局内收益(修为、法宝、稀有材料), 不给任何跨局的、可比较的、能被截图炫耀的数字

✅ 可以有 ❌ 不能有
「你击败了 XX 道友的残影」 全服排行榜
本局内的战绩统计 跨局累计段位 / 分数
击败高一境界幽灵的局内奖励 赛季重置与赛季奖励

七、异步对战绝不做成 DLC#

付费墙会把幽灵池切成两半,两边都变差。

买了的人对手变少,没买的人干脆撞不到真人盘面。 而幽灵池的价值完全来自规模——这是典型的越多人用越好的东西, 任何切分都是负和的。

结论:异步对战走本体免费更新,不进 DLC 清单(08 § 4)。


八、与现有文档的接口#

接口 影响
03 § 7 越级四形态 问道跨桶取上一境界幽灵;斗法台为异步 PvP 本体,须遵守 § 6.2
08 § 5 红线 新增一条:异步对战不做 DLC、不做天梯
08 § 6 结构性优势 "没有天梯"这一条依赖 § 6.2 被遵守
01 § 3.3 修为来源 斗法台的修为收益需与问道(×3.5)拉开档次
工程本体 幽灵包格式、服务器聚合与校验属服务端,需在 xiuxian-server 立项

九、待办#

  • [ ] 幽灵记录的二进制格式定稿(字段、版本号、向后兼容策略)—— 补丁会改卡表,旧幽灵不能因为加了新卡就全部失效
  • [ ] 强度分桶算法:盘面品阶总和 + 功法叠加次数 + 历史胜率的权重
  • [ ] AI 幽灵生成器的"拟人噪声"参数(该留不留的件、属性纯度、品阶参差)
  • [ ] 内部刷 3000 份幽灵的自动化方案(AI 自动跑局 + 人工抽检)
  • [ ] 道号的 UGC 审核(幽灵带玩家自定义道号,需过滤)
  • [ ] 断网验收用例:拔网线从新建存档打到结婴,全程无联网 UI
  • [ ] 斗法台奖励表设计,且需通过 § 6.2 的红线检查
  • [ ] 服务器成本估算——只做聚合与下发,量级应当很小,需给出年度数字