OCC 星球漫游 · 后续内容方案:战斗、关卡与机甲构筑 v1
后续内容的设计意图稿。回答四件事:后续战斗How it plays、关卡怎么排、玩家怎么在三十个星域里推进、 机甲要长哪些新武器和能力、怎么逐步获得并组合出玩法。 现状是什么样以 玩法系统现状 为准;本篇写"接下来做什么、为什么"。
基线:2026-10-17 的代码(world-config.js/tech.js/items.js/starmap.js/paper-planes.js/terrain-field.js/theme.js)。 参考对象:《星际战甲 Warframe》的结构,不是它的皮 —— 拿什么、不拿什么见 §3。 v1.1(2026-10-17 晚)按老大拍板的三条口径调整:图纸路径做实(§12.2)、 新增地貌生产管线一节(§13)、随机词条写进不做清单(§16)。
0. 一句话
现在的战斗只有 1 种输入、3 种敌人、1 只 Boss、纯加法成长 —— 玩 10 分钟和玩 10 小时的操作完全一样, 只是数字变大。后续内容的核心不是"加更多怪、加更多星球",而是把成长从"数值"改成"构筑": 让玩家用有限的模块槽拼出自己的打法,再用三十个星域的节点图 + 撤离机制给这套构筑一个无限深的验证场。
三个关键词:模块构筑 · 节点远征 · 撤离即结算。
0.1 已拍板的三条口径(2026-10-17 老大定,后续所有设计服从)
| # | 口径 | 影响面 |
|---|---|---|
| 1 | ✅ 模块走「掉图纸 → 回基地造」,不直接掉成品 | §12.2 图纸系统是新增的一整节;决定了首通奖励的形态与基地制造的接入点 |
| 2 | ✅ 新星域「同地形换 theme」和「新地貌」都要做,不是二选一 | §13 从"换色带"升级成地貌生产管线;分期从一条线拆成 M3a / M3b |
| 3 | ❌ 不做随机词条(Riven 那套) | 已写进 §16 不做清单,这里再钉一次:模块只有固定效果,强度靠"装什么、装几个"控制 |
口径 2 是这次调整里工作量最大的一处。它不是把成本翻倍,而是要求先把"地貌"和"主题"解耦(§13.1), 解耦之后:第一次做一种地貌贵(4 天),之后每一颗同地貌的新星球只加一套 theme(1.5 天)。
1. 现状诊断:内容只有 10 分钟
对着代码数一遍就知道问题在哪:
| 维度 | 现在有什么 | 玩家实际体验 |
|---|---|---|
| 攻击输入 | 只有纸飞机(鼠标指哪打哪),3 发 + 2.4s 补弹 | 只有一种开火方式,没有技能、没有切换 |
| 敌人种类 | 3 种:NPC 车(3 血)、精英坦克(12 血)、Boss 天罗(120 血) | 前两种是"移动靶",区别只是血量和掉不掉结晶 |
| 敌人行为 | 巡逻 → 追击 → 直射 / 抛射 | 会走位的靶子,没有"应对方式",只有"打多久" |
| Boss 招式 | 2 招:气炮连射、火榴弹 AoE(22s CD) | 站着绕圈躲,打满 120 血就结束 |
| 成长 | 35 个科技节点,26 个战场节点全是加法(伤害 +1、速度 +6%、血 +2) | 一路点下去,操作零变化 |
| 装备 | 4 个槽位只开 weapon / tool;武器只有 Mk1 / Mk2(只差换弹速度) | 装备 ≈ 不存在 |
| 弹药 | 3 种(标准 / 爆破 / 穿甲),特种弹药攻击时不消耗(未完成清单 §3 #2) | 三种弹实际只有一种有用 |
| 关卡 | 30 个星域,只有 2 个真世界,28 个锁定且文案都写"星门升二级" | 除了一张大地图,没有关卡这个概念 |
| 目标 | 打怪 → 捡结晶 → 升科技 | 没有"这一趟要干什么",只有"再来一趟" |
结论:内容量不是问题(30 星域 + 3 种敌人够搭很多关),问题是没有任何一层在做"规则"。 所有变化都发生在数值层面,而数值不产生新玩法。
2. 设计支柱(三条,后面一切服从它)
| # | 支柱 | 一句话判据 | 反面(要避免的) |
|---|---|---|---|
| P1 | 构筑优先于数值 | 任何新成长都必须回答"它改变了你怎么打" | 再开一条 +6% 伤害 的五级线 |
| P2 | 一趟远征 = 一次决策 | 出门前选带什么,出门后决定打多深、什么时候撤 | 无限刷、无成本往返 |
| P3 | 先规则,后地貌 | 新玩法优先复用已有地形(节点规则层);只有"规则也救不回差异"时才升到新地貌 | 为了"看起来不一样"就先做一颗新星球 |
P2 其实已经有了雏形:死亡掉背包 50%、脱战 5s 才能撤、召回冷却 30s。 本方案做的是把它从"惩罚"升级成"玩法核心"。
3. 参考《星际战甲》:拿结构,别拿皮
| Warframe 的机制 | 为什么有效 | 我们拿不拿 | 落地形态 |
|---|---|---|---|
| 战甲 = 4 个技能 + 独特机制 | 玩法差异来自"你带了谁",不来自等级 | 拿(改造成模块) | 机甲 4 个模块槽,每槽一类 |
| MOD 卡系统 + 容量 + 极性 | 有限槽位逼取舍,玩家自己造 Build,是真正的留存点 | 拿(去掉随机性与卡片美术) | 模块有"容量成本",总容量有限 |
| MOD 套装效果 | 让"专精"比"均衡"更有回报 | 拿 | 同系 2 件触发套装 |
| 星球节点图 | 视觉化的推进感,一眼看到"还有多少没打" | 拿 | 星域 → 星区节点,连线可见 |
| 任务类型(歼灭/生存/防御/挖掘/捕获) | 同一张地图、不同规则,内容复用性价比最高 | 拿(这是本方案的最大杠杆) | 7 种节点规则跑在已有地形上 |
| Boss 掉部件图纸 | 把"打关卡"和"变强"直接焊在一起 | 拿 | 首通掉图纸 → 回基地制造 |
| 段位(横向练度) | 解决满级后没目标 | 缓做 | 先做"模块熟练度",不做独立段位 |
| 伤害类型 + 敌人抗性 | 配装动机 | 只做一半 | 只保留"护盾怕过载 / 装甲怕穿甲"两轴,不铺开元素表 |
| 开放世界平原 / 跑酷墙跳 | 强,但要一整套移动与关卡美术 | 不做 | 球面地形上做跑酷成本极高 |
| 深层 PvP 平衡 | 需要独立平衡团队 | 不做 | 保留"同世界遭遇",不做排位 |
| 随机生成关卡 | 无限内容 | 不做 | 服务端成本高、品质不可控、失败体验差 |
一句话:用它的"构筑 + 节点 + 任务类型"三件套,不用它的美术体量与平衡深度。
4. 关卡结构:星域 → 星区节点(三层)
4.1 三层各是什么
| 层 | 对应代码 | 数量(目标) | 玩家感知 |
|---|---|---|---|
| 星域 Sector | WORLD_CONFIG.worlds[id] | 30(现有星图已画好 30 个坐标) | 一颗星球、一种地貌、一个威胁等级、一个 Boss |
| 星区节点 Node | 新增 profile.missions | 每个星域 4~6 个 | "这颗星球上有几个点可以打",图上连线 |
| 威胁等级 Threat | 节点参数 threat | T1~T10 | "同样的点,再来一次更狠的"(无限深度) |
🔴 关键决策:节点不是一个新世界。 一个星域的 4~6 个节点共用同一个 worldId 与同一套地形,只换:着陆点、敌人配置、规则目标、掉落表。 理由:切世界是整页重载(world.js),新世界意味着新 theme + 参数 + 资产 + 测试。 用"同图换规则"能拿 6 倍内容量,代价接近零 —— 这就是 P3。
4.2 星域表(威胁曲线 · 地貌 · 解锁链)
威胁等级决定敌人血量 / 伤害 / 数量 / 掉落,见 §4.3。 「生产类型」这一列是本方案的排期骨架:🆕 = 该地貌的首作(要做地形),♻️ = 换 theme 复用(只做外观)。
| 威胁 | 星域 | 地貌 style | 主题 theme | 解锁条件 | 生产类型 |
|---|---|---|---|---|---|
| — | 苗圃 | plains | verdant | 默认 | ✅ 已有 |
| T1 | 焦土 | plains | scorched | 基地放下星门 | ✅ 已有 |
| T2 | 铁锈带 | wasteland | rust | 焦土 3 节点通关 + 星门 Lv2 | 🆕 荒原首作 |
| T2 | 赤铁荒原 | wasteland | oxide | 同上 | ♻️ 换 theme |
| T3 | 灰烬环 | ash | ashfall | 铁锈带 Boss 击杀 | 🆕 灰烬首作 |
| T3 | 熔渣原 | ash | slag | 同上 | ♻️ 换 theme |
| T4 | 荒骨滩 | ruin | bone | 灰烬环 Boss + 战场线 T3 | 🆕 废墟首作 |
| T4 | 霜牙 | ice | frost | 同上 | 🆕 冰盖首作 |
| T5 | 幽蓝渊 | ice | cryo | 荒骨滩 通关 + 星门 Lv3 | ♻️ 换 theme |
| T5 | 雷暴环 | volcanic | storm | 同上 | 🆕 火山首作 |
| T6 | 熔心星 | volcanic | magma | 前一域 Boss | ♻️ 换 theme |
| T6 | 蛛网裂谷 | rift | canyon | 同上 | 🆕 裂谷首作 |
| T7 | 陨铁渊 | rift | abyss | 同上 | ♻️ 换 theme |
| T7 | 苍白星 | ice | pallid | 同上 | ♻️ 换 theme |
| T8 | 硫磺谷 / 石化林 / 铜绿海 | ash / ruin / wasteland | 各自 | 逐级 | ♻️ 换 theme |
| T9 | 齿轮城 / 铁砧 / 熔炉星 | ruin / volcanic | 各自 | 逐级 | ♻️ 换 theme |
| T10 | 碎星带 / 冷寂带 / 极昼原 / 磁暴区 | rift / ice / volcanic | 各自 | 逐级 | ♻️ 换 theme |
⇒ 30 个星域 = 7 种地貌(1 已有 + 6 首作)+ 23 套 theme。 这个拆法就是"都要做"的可执行版本: 先把 6 种地貌各做一颗(这是真正贵的部分),剩下的星域靠 theme 和参数铺开。
⚠️ 名字是星图里已经画上去的(starmap.js 的 PLANETS),所以地貌必须"配得上名字": 叫「霜牙」的不能是岩浆,叫「熔心星」的不能是冰盖。上表的分配已经按名字对过一遍,别随手改。
4.3 威胁等级曲线
| 项 | 公式 | T1 | T5 | T10 |
|---|---|---|---|---|
| 敌人血量 | ×(1 + 0.35(T-1)) | ×1.0 | ×2.4 | ×4.15 |
| 敌人伤害 | ×(1 + 0.20(T-1)) | ×1.0 | ×1.8 | ×2.8 |
| 敌人在场数 | ×(1 + 0.15(T-1)) | ×1.0 | ×1.6 | ×2.35 |
| 结晶掉落 | ×(1 + 0.40(T-1)) | ×1.0 | ×2.6 | ×4.6 |
| 合金概率 | 基础 + 0.05(T-1) | 0% | 20% | 45% |
| 首通奖励 | 只在首通给,重复不给 | — | — | — |
这套曲线要让同一个玩家在 T5 打得过、T10 打不过,从而把"提威胁"变成"检验构筑"的标尺, 而不是单纯刷更硬的怪。判断标准:满科技 + 合理 Build 应该刚好卡在 T7~T8。
5. 节点规则:7 种任务类型
全部跑在已有地形上,服务端只需记目标和状态(不需要新物理、不需要新 AI)。
| # | 节点 | 目标 | 失败条件 | 教会玩家什么 | 服务端校验 |
|---|---|---|---|---|---|
| 1 | 清剿 SWEEP | 击杀 N 台(12/18/24) | 死亡 | 基础战斗、弹药管理 | 击杀计数(已有 npcKills) |
| 2 | 猎杀 HUNT | 击杀 3 台指定精英(雷达带标记) | 死亡 或 超时 15 分钟 | 追踪、机动 | 指定 id 的击杀 |
| 3 | 回收 SALVAGE | 拾取 5 个货箱并送回星门信标 | 死亡(货掉落) | 负重与风险 | 货箱 pickup + 信标交付 |
| 4 | 坚守 HOLD | 点亮信标后撑 180s,三波敌人 | 信标被打爆 / 死亡 | 阵地战、AOE、防御模块 | 信标血量 + 计时 |
| 5 | 破袭 SABOTAGE | 摧毁 3 个巢穴结构(各 120 血) | 巢穴全部存活超时 | 目标优先级 | 结构血量 |
| 6 | 首领 PRIME | 击杀本星域 Boss(阶段化) | 死亡 | 机制应对 | Boss 血量(已有框架) |
| 7 | 深潜 DIVE | 无限波次,撤离即结算 | 死亡 = 本趟归零 | 构筑极限测试(终局) | 波次计价 |
设计取舍:
- 不做"护送 NPC":要新 AI、要寻路、失败体验极差(NPC 卡住 = 玩家骂娘)。用「回收货箱」替代,效果一样但成本 1/10。
- 不做"潜入":没有视线 / 潜行系统,做不了。
- DIVE 是终局,也是"刷材料"的归宿 —— 它替代了"无限刷怪"的枯燥,因为波次难度递增会自然筛掉不合适的 Build。
5.1 撤离:本方案的核心张力
接任务(星门面板选节点) → 着陆 → 完成目标 → 【撤离窗口开启】
↓ 走回星门信标,或站在撤离点 20 秒
撤离成功:战利品 ×1.0,节点标记通关
中途召回(脱战 5s + 30s CD):战利品 ×1.0,节点不算通关
死亡:背包掉 50%,节点失败,本趟首通奖励作废
🔴 为什么要"撤离"而不是"打完自动结算": 它把"打多久"变成一个持续决策 —— 多打一辆车是收益,多待一分钟是风险。 这正是 P2,也是《逃离塔科夫》《深岩银河》验证过的留存结构。 现有代码已经有全部零件(脱战判定、召回冷却、掉落 50%),只需要加一个"圈"和一个结算点。
6. 推进骨架:三层目标叠在一起
玩家"在众多关卡里推进"不能只靠一条线性链,要同时有三层目标在拉:
| 周期 | 目标 | 玩家的问题 | 时长 |
|---|---|---|---|
| 短(10~25 分钟) | 一个节点 | "这一趟我要干什么" | 一次会话 |
| 中(3~8 小时) | 打通一个星域 → 打星域 Boss → 拿部件 → 解锁下一星域 | "下一个星域怎么开" | 几天 |
| 长(30 小时+) | 威胁等级爬到 T10 + 模块熟练度 | "我还能怎么变强" | 留存期 |
6.1 解锁条件:不要只考战斗
| 解锁什么 | 条件(必须同时满足) | 为什么 |
|---|---|---|
| 下个节点 | 相邻节点通关 | 保证"图上一直有下一个能点的" |
| 星域 Boss 节点 | 本星域 ≥3 节点通关 | 逼玩家体验多种规则,不是只刷清剿 |
| 下个星域 | 前星域 Boss 击杀 + 基地门槛(星门等级 / 科技节点数) | 🔴 让基地与战斗咬合:只在战场刷,永远开不了下一片星域 |
| 威胁 +1 | 该节点已通关 | 自我挑战,无需解锁链 |
| DIVE 难度层 | 该星域通关 | 终局开放 |
🔴 "星门等级"是这套骨架的总闸门:它把 t3_vehicle(星门二级)从"召回冷却 -50%"这种鸡肋, 变成"能去更远的星域"的硬门槛。这是本方案对现有科技树最重要的一处改造 —— 它给生产线一条非数值的意义。
6.2 首通奖励 vs 重复奖励
| 首通 | 重复 / 提威胁 | |
|---|---|---|
| 给什么 | 图纸(解锁某个模块的制造权)+ 一次性结晶包 | 结晶 / 合金 / 废料,按威胁系数放大 |
| 为什么 | 关卡驱动成长(Warframe 的 boss 掉图纸) | 提供"练度"与"材料"的无限来源 |
⇒ 玩家永远有理由"再打一遍",但只有在推进新节点时才变强。这两件事分开,才不会变成无脑刷。
7. 敌人角色化:从"靶子"到"要应对"
现状 3 种敌人只差血量。目标是 6 种普通敌人 + 1 种 Boss,每种的"应对方式"必须不同 —— 这是"玩家会不会觉得战斗有内容"的分水岭。
| 敌人 | 移动 | 血量 | 攻击 | 应对方式(新增的玩法钩子) | 状态 |
|---|---|---|---|---|---|
| 侦察车 | 快、成群 | 3 | 撞(不掉血) | 单发就够,教会 AOE 的价值 | ✅ 已有 |
| 精英坦克 | 慢、正面朝你 | 12 | 5s 一发直射炮弹 | 背面装甲脆(新)→ 逼机动绕后 | ✅ 已有,加弱点 |
| 防空炮台 | 固定 | 8 | 对空弹幕 | 逼你贴地接近,禁止悬停硬刚 | 新增 |
| 护盾兵 | 中速、护盾朝前 | 6+盾 10 | 近距霰射 | 穿甲弹无效、过载有效 → 教弹药切换 | 新增 |
| 骚扰无人机 | 飞、围攻 | 2 | 撞击自爆 | 链式 / 散射 才能清群 | 新增 |
| 巢穴信标 | 固定 | 120 | 持续产兵 | 目标优先级:不清巢就永远打不完 | 新增 |
| Boss | 慢、阶段化 | 120~400 | 见 §8 | 机制应对,不是堆血 | ✅ 已有 1 只,扩到每星域 1 只 |
7.1 敌人数据要"表驱动"
现在 npc.js 里是"普通 / 精英"两档写死(maxHp / eliteMaxHp)。 建议抽一张 archetype 表(server/enemies.js),每个敌人一条数据:
{ id, hp, speed, damage, attackKind, attackRange, attackCd, weakSpot, resist, count, threatMin }
好处:加敌人 = 加一条数据;星域配置只写"这个星域刷哪几种、各几台"。 这也是"同一张图换规则"能成立的前提 —— 铁锈带和焦土用同一套地形,但刷的怪完全不同。
7.2 抗性只做两轴
不做 Warframe 那套元素表(腐蚀/磁力/病毒…)。只保留两条:
| 目标 | 弱点 | 抗性 |
|---|---|---|
| 有护盾(护盾兵 / 部分 Boss 阶段) | 过载(爆破弹 / 链式电弧) | 穿甲弹伤害 ×0.4 |
| 厚装甲(精英坦克 / Boss 本体) | 穿甲(穿甲弹 / 穿刺炮) | 爆破弹伤害 ×0.6 |
两轴就足够产生"我先换什么弹"的决策,摊子小、平衡可控。 🔴 前提:必须先修「特种弹药不消耗」(未完成清单 §3 #2),否则这三条弹药全是摆设。
8. Boss 阶段化:机制优先,血量其次
现有天罗:120 血、2 招、22s 榴弹 CD。它是"能打的靶子",不是"要解的谜题"。
改造原则:每个 Boss 3 个阶段,每阶段换的不是数字,是"你必须做什么"。
| 阶段 | 触发 | 机制 | 玩家动作 |
|---|---|---|---|
| P1 试探 | 100%~70% | 现有招式(连射 + 榴弹),落点预警圈可见 | 练习走位 |
| P2 破防 | 70%~30% | 展开能量护盾,只有固定 2 个弱点可破(发光部位) | 机动绕位 + 换穿甲 |
| P3 狂暴 | <30% | 招式合并 + 场地 hazard(岩浆/雷击/毒雾,按星域) | 用环境与防御模块硬扛 |
要求:
- 落点预警必须可见(现在火榴弹有
mortarSpread,但玩家看不到圈)。这是低成本高回报的一条。 - 弱点显示由科技
t3_bossintel(Boss 情报)提供 —— 把这个"雷达显示 Boss 位置"的鸡肋节点,
升级成"显示弱点 + 阶段提示",它才有存在意义。
- 每星域一个 Boss 需要新模型(GLB),这是硬成本 ⇒ 阶段 1 只做天罗的 P2/P3,新 Boss 跟着新星域走。
9. 机甲骨架改造:模块槽 + 容量 + 套装
9.1 现状与目标
| 现在 | 改成 | |
|---|---|---|
| 装备槽 | 4 个,开 2 个(weapon / tool) | 2 个装备槽(weapon / tool,沿用)+ 4 个模块槽 |
| 模块槽分类 | — | 武器 / 防御 / 机动 / 支援,各 1 个 + 1 个超载槽(任选一类) |
| 成长 | 科技加法 | 模块有容量成本,总容量有限 ⇒ 逼取舍 |
| 组合 | 无 | 同系 2 件 = 套装效果 |
9.2 容量
| 项 | 值 | 说明 |
|---|---|---|
| 基础容量 | 12 | 新手只能装 2~3 个低阶模块 |
| 科技加成 | t3_armor +2 / t4_overload +3 / 新增「能量核心 I/II」+2 / +3 | 容量本身也是成长线,但只加容量不加数值 |
| 满容量 | 22 | 满配 4~5 个模块(平均 cost 4) |
| 超载槽 | 放入的模块 cost ×2 | 第五个模块的代价,用于"极限构筑" |
🔴 容量为什么是最好的成长旋钮:它让"变强"等于"能装更多组合",而不是"数字更大"。 它天然限制无限加法,也让每一张新模块都有价值(不是替换,是补位)。
9.3 套装(专精奖励)
| 同系 2 件 | 效果 |
|---|---|
| 武器 ×2 | 换弹 -30% |
| 防御 ×2 | 容量 +2,移动速度 -5%(带代价) |
| 机动 ×2 | 冲刺 / 闪避 CD -30% |
| 支援 ×2 | 增益持续时间 +50% |
套装要有代价才有取舍。只有防御那一条刻意带负面,因为"堆防御"最容易变成无脑最优解。
10. 模块清单:4 系 22 个
每个模块只用一句话说清"它改了什么规则" —— 说不清的就不是模块,是数值。
10.1 武器系(改发射物行为)6 个
| id | 名称 | 效果(改的规则) | cost | 获得 |
|---|---|---|---|---|
w_spread | 散花 | 一次发射 3 发扇形,单发伤害 ×0.6 | 3 | 首通 · 铁锈带清剿 |
w_boomerang | 回旋刃 | 去程穿透、回程再判定一次(同一目标最多 2 次) | 4 | 首通 · 灰烬环破袭 |
w_cluster | 集束 | 抛射到目标上方垂直落下,爆炸半径 18 | 4 | 图纸 · 硫磺谷 |
w_chain | 链弧 | 命中后跳到 2 个邻近目标(12 单位内),跳跃伤害 ×0.7 | 5 | 科技 · 战场线 T3 |
w_lance | 穿刺 | 蓄力 1.2s,贯穿直线(长 90),破甲 50% | 5 | Boss 部件 · 天罗核心 |
w_sentry | 哨戒 | 布置一架自动炮塔,30s 后自毁 | 4 | 图纸 · 荒骨滩 |
10.2 防御系 5 个
| id | 名称 | 效果 | cost | 获得 |
|---|---|---|---|---|
d_barrier | 屏障 | 正前方锥形吸收 8 点伤害,CD 12s | 3 | 首通 · 熔渣原坚守 |
d_nano | 纳米修复 | 脱战 1.5s 后每秒回 1(可叠加科技 t3_regen) | 3 | 科技 · 战场线 T2 |
d_phase | 相位闪避 | 冲刺中 0.35s 无敌,CD 8s | 4 | 首通 · 霜牙 |
d_decoy | 诱饵 | 放下信标,吸引 40 单位内敌人 6s,CD 25s | 3 | 图纸 |
d_aegis | 应急重组 | 受致命伤害时免死一次并回 30%,CD 120s | 5 | Boss 部件 · 霜牙之主 |
10.3 机动系 5 个
| id | 名称 | 效果 | cost | 获得 |
|---|---|---|---|---|
m_dash | 冲刺 | Shift 冲刺 24 单位,CD 5s(所有构筑的地板) | 2 | 新手引导第 17 步(免费) |
m_hover | 悬停 | 空中悬停 4s 且射击不抖,CD 10s | 3 | 科技 · 战场线 T1 |
m_glide | 滑翔 | 下落速度 -60%,可长距滑翔 | 3 | 首通 · 幽蓝渊 |
m_grapple | 钩索 | 拉向 60 单位内目标点,CD 8s | 4 | 图纸 |
m_warp | 短跃迁 | 瞬移 30 单位(含垂直),CD 15s | 5 | 科技 · 战场线 T4 |
10.4 支援系 6 个
| id | 名称 | 效果 | cost | 获得 |
|---|---|---|---|---|
s_pulse | 雷达脉冲 | 8s 内全图敌人可见 | 2 | 科技 · 战场线 T1 |
s_mark | 弱点标记 | 标记目标,对其伤害 +25%,15s | 3 | 首通 · 雷暴环猎杀 |
s_supply | 补给信标 | 放下后 20s 内区域内补满弹药、修 3 血 | 4 | 图纸 |
s_shield | 护盾墙 | 放置一面可挡弹的墙,20s | 4 | 图纸 |
s_scan | 资源扫描 | 60s 内本区域矿脉 / 巢穴高亮 | 2 | 科技 · 生产线联动 |
s_revive | 应急核心 | 死亡后原地留数据核心,队友可复活(单人无效) | 5 | 多人节点通关 5 次 |
10.5 组合深度验算
- 理论组合:
6 × 5 × 5 × 6 = 900(不含超载与套装) - 容量 12 时只能装 2~3 个 ⇒ 实际可行组合约 40~60 个
- 这个量级正好:玩家能感觉到"我的打法和你的不一样",但不存在唯一最优解
验算方法(做的时候必须真跑):对每个组合打同一个 T5 节点,记录"通关时间 / 死亡次数", 如果某个组合在 60% 以上场景都最快 ⇒ 它太强,要削弱而不是加强别的。
11. 纸飞机怎么变成"多种武器"
现有 paper-planes.js 是一套状态机:orbit → climb → strike → spent, 发射物无物理体(自己积分 + ttl + 贴地飞),碰撞只走 pickAlong 与 onStrikeSegment。 这是好消息:新武器 = 同一个状态机加一个 kind 分支,不需要新物理系统。
| 武器 | 发射物改动 | 状态机变化 | 视觉代理(不用新动画) |
|---|---|---|---|
| 散花 | 一次生成 3 个,速度方向各偏 ±8° | 不变 | 三条尾迹 |
| 回旋 | 到点后折返 | 加 return 阶段 | 折返时闪一下 |
| 集束 | 目标点上方 20 单位生成,垂直下坠 | strike 改为下落 | 地面预警圈 |
| 链弧 | 命中后从目标再生成 2 条短弹道 | 命中回调里递归 | 电弧线段 |
| 穿刺 | 不销毁,沿直线继续 | strike 不结束 | 贯穿光束 |
| 哨戒 | 不发射,原地生成炮塔实体 | 不进状态机 | 炮塔模型 + 自动索敌 |
🔴 三条实现约束(都是踩过的坑):
grazing标记要跟着onLaunch广播,新弹种别漏(否则远端看到的是"从头顶飞过")。- 命中半径按体积归一化(
d²/r²),新弹种的爆炸半径别用固定值。 - 弹药消耗必须在服务端扣(现在客户端完全不扣,见未完成清单 §3 #2)——
否则"爆破弹"变成免费 AOE,经济直接崩。
12. 逐步获得:三条路径 + 节奏表
12.1 三条获取路径(缺一条就会变成"只能刷")
| 路径 | 给什么 | 节奏 | 现状 |
|---|---|---|---|
| A 科技树 | m_hover / s_pulse / d_nano / w_chain / m_warp | 持续的、可控的 | 战场线 26 项已有框架,新增 5~8 个"模块解锁"节点(别改老的,老存档只记 unlocked) |
| B 节点首通 | 图纸(回基地制造) | 每次推进都有 | 全新 |
| C Boss 部件 | 高阶模块的唯一来源 | 每个星域一次 | 全新(天罗掉 boss_core 已有雏形) |
🔴 三条路径必须互不替代:科技给"基础能力",节点首通给"专精分支",Boss 给"终极件"。 如果 Boss 也能刷出科技节点,那节点图和科技树就会互相稀释。
12.2 图纸系统(口径 1 已定:掉图纸 → 回基地造)
图纸是什么:一张永久配方凭据,不是一次性消耗品。
| 项 | 定义 | 理由 |
|---|---|---|
| 形态 | 掉落物(走现有 loot.js 的三段动画,要走过去捡) | 保留"看见东西掉出来"的仪式感 |
| 拾取后 | 服务端写 profile.blueprints,不占背包格,弹提示并广播 | 一旦进背包就要处理堆叠 / 丢弃 / 交易,纯属自找麻烦 |
| 作用 | 解锁一个模块的制造配方(bldRecipes 里多一条) | 现有 bldRecipes 已经是服务端下发,客户端零改动(记忆铁律:配方归属只认服务端下发) |
| 消耗 | 不消耗。造一次之后永远能造 | 模块不损耗 ⇒ 图纸若是一次性,玩家会被迫反复刷同一个节点(本方案最想避免的事) |
| 重复掉落 | 首通 100%,重复 15%;已拥有时自动转成结晶 ×2 作补偿 | 奖励要确定性(这是"不做随机词条"的同一个原则),但重复也不能白掉 |
闭环要一次走通,别卡在门槛上(这是最容易做错的地方):
首通掉落图纸 → 捡起 → 回苗圃 → 装配机面板里出现新配方 → 用「节点掉的新材料」造出来 → 装进模块槽
🔴 卡点警告:如果模块制造要求「钢锭 / 电路板 / 机械部件」(装配机 T3 的产物), 那 M1 阶段第一个图纸拿到手也是白拿 —— 玩家会站在装配机前发现自己造不出来。
对策沿用现有的「零到一死锁」解法(见记忆:COMMAND_RECIPES):
| 模块档位 | 制造在哪 | 材料来源 |
|---|---|---|
| Mk1(cost 2~3 的 12 个模块) | 指挥中心兼职(COMMAND_RECIPES) | 节点直接掉的新材料(如 shard 碎片、circuit_worn 旧电路),不依赖高阶加工 |
| Mk2(cost 4~5 的 10 个模块) | 装配机(t3_assembly 后) | 钢板 / 电路板 / 机械部件 + Boss 部件 |
⇒ 每条科技线都不该把"第一次造出东西"锁在"必须先有三座工厂"之后。
与科技树的边界只认一条规则:
模块可造 = tech.effect.unlock 命中 OR profile.blueprints 含该模块 id
两条路径互不叠加、互不替代:科技线给"人人都有的基础能力",图纸给"打过那个节点才有的专精"。
12.3 节奏表(按真实玩家时间)
| 时间 | 玩家在做什么 | 拿到什么 | 系统首次亮相 |
|---|---|---|---|
| 0~30 分 | 现有 16 步引导 | — | 基地 / 采集 / 星门 |
| 30~60 分 | 焦土清剿 ×2 | 冲刺模块(引导第 17 步)+ 结晶 | 模块系统、容量 |
| 1~3 小时 | 焦土猎杀 / 坚守 + 破袭 | 首个图纸 → 造出第 2 个模块 | 节点图、撤离 |
| 3~8 小时 | 焦土 Boss | 天罗核心 → 穿刺 | Boss 阶段 |
| 8~15 小时 | 星门 Lv2 → 铁锈带 | 散花 / 回旋 | 第二颗星球 |
| 15~30 小时 | 逐星域推进到 T2~T4 | 套装成型 | 构筑差异化 |
| 30 小时+ | 威胁 T5~T10 + 深潜 | 熟练度、极限 Build | 终局 |
⚠️ 这张表是设计意图,必须在真机上跑一遍校准(现有经济从未实测过,见未完成清单 §2)。
13. 星域差异化:地貌管线 + 环境危害
口径 2 定了"换 theme 和新地貌都要做"。这一节是怎么做得起 —— 结论先给:地貌和主题必须是两层,混在一起就做不动。
13.1 为什么必须分两层(这条是硬约束,不是洁癖)
theme.js 文件头已经写死了红线:
🔴 只放"看着不一样"的东西,绝不放会影响判定的东西:BIOME的阈值、elevation()的地貌、 植被的数量与accept条件、collide半径 一律不在这里 —— 那些一动就会改出生点 / 障碍物 id / 玩法平衡。
所以"新地貌"不能塞进 theme。要单独一层:
| 层 | 文件 | 管什么 | 改了会怎样 |
|---|---|---|---|
| 主题 theme | theme.js(已有) | 色带 / 植被配色 / 天空 / 雾 / 光 / 雷达色 | 只影响外观,可安全按世界切 |
| 地貌 style | terrain-style.js(新增) | elevation() 的噪声组合、液体类型、出生偏好、矿脉权重 | 影响判定,每个 style 必须一次性做对 |
判据很简单:"如果两种星球只用一套地形,玩家会不会觉得是同一颗?" 会 ⇒ 你需要新 style;不会 ⇒ 一套 theme 就够(这就是剩下 23 颗星域的省钱方案)。
13.2 style 怎么接进现有代码
现在 terrain-field.js 的 elevation() 是硬编码的一段公式。改成按 style 分派:
// terrain-field.js
import { STYLES } from './terrain-style.js';
const style = STYLES[cfg.terrainStyle ?? 'plains'] ?? STYLES.plains;
function elevation(d) { return style.elevation(noise, d); }
🔴 STYLES.plains.elevation 必须是现在那段公式的逐字复制(同样的 octave、同样的常量、同样的加法顺序)。 不是"效果差不多",是同一个浮点结果。理由:焦土和苗圃的地形一旦变了, 所有老存档的玩家坐标、已建建筑、障碍物 id 全部错位 —— 这是本项目最贵的一类事故。 所以 plains 那个函数写完就别再碰,连"顺手把 0.82 调成 0.8 更自然"都不行。
每个 style 的字段:
{
elevation(noise, d) → 0..1, // 地貌本体
liquid: 'water'|'lava'|'coolant', // 那个"水面"是什么(只换 theme 色 + 危害)
oceanRatio: 0.33, // 液体占比(自动标定 waterLevel 用)
snowLevelHint: null, // null = 自动分位数
spawnPrefer: ['grass','forest'], // 🔴 出生点偏好(不声明就会落进熔岩)
oreWeights: { copper, iron, tin, oil, stone }, // 🔴 矿种权重(见 13.6)
slopeLimit: 30, // 可建区坡度上限
}
⚠️ 不要扩 BIOME 枚举。现在 7 个(deep/shallow/beach/grass/forest/rock/snow), 冰原的"grass"就是冰面、火山的"grass"就是冷却熔岩 —— 靠 theme 换色,不靠加枚举。 加枚举会连带改贴图 atlas、植被 accept 条件、雷达小地图、findSpawn 偏好,一条链全是坑。
13.3 六种新地貌(按排期顺序)
| # | style | 形态(相对 plains 改什么) | 液体 | 出生偏好 | 玩法特征(地貌即规则) |
|---|---|---|---|---|---|
| 1 | wasteland 荒原 | 大陆占比降、起伏变低;mountain 换成高频小脊(风蚀沟),保留大块平坦台地 | water(酸湖,占比 0.08) | grass / rock | 视野开阔、掩体少 → 远程与机动吃香,逼玩家用冲刺而不是绕掩体 |
| 2 | ash 灰烬 | 起伏大但圆滑(火山灰堆积),锥体稀疏;细节层加强"松软感" | water(灰泥池,0.10) | grass / rock | 地面松软 → 越障变慢,AOE 陷阱多;适合放"坚守"节点 |
| 3 | ice 冰盖 | 极平缓 + 大范围低洼 + 细长冰川脊(低幅 ridged);snowLevel 压到很低 | coolant(液氮海,0.45) | snow / rock | 打滑(摩擦降低)+ 低温耗能 → 载具战变"漂移战",冲刺/滑翔价值翻倍 |
| 4 | volcanic 火山 | 高起伏 + 密集锥形(ridged 取高次幂),锥间低地连成沟 | lava(占比 0.15) | rock / grass | 地形即敌人:熔岩河分割地图,逼玩家规划路线;悬停在这里最容易送 |
| 5 | rift 裂谷 | 台地 + 沿噪声等值线开槽(carve = 1 - smoothstep(0, w, abs(n))),深沟成网 | water(0.12) | grass / rock | 高低差最大 → 钩索/悬停是刚需,纸飞机抛物线更难,适合"破袭" |
| 6 | ruin 废墟 | 平缓 + 坐标量化的块状噪声(造出台阶与残墙的人工感) | water(0.18) | grass / rock | 垂直掩体多 → 巷战、炮台与哨戒模块的价值场。⚠️ 最像"假"的一种,放最后做 |
顺序的判据:前 5 种都是"改噪声参数"就能出来,第 6 种要动"人工结构"的思路(还额外要废墟 GLB), 所以它排最后,且可以视情况降级成"ash + 废墟 theme"先顶上。
13.4 成本解耦:一次地貌,多次主题
这是口径 2 能落地的前提:
| 工作项 | 某 style 首作 | 同 style 后续换 theme |
|---|---|---|
elevation 调参 + 贴图核对 | 1 天 | — |
| theme 七层(色带 / 植被 / 天空 / 雾 / 光 / 大气 / 雷达) | 1 天 | 1 天 |
| 出生偏好 / 矿脉权重 / 环境危害 | 1 天 | 0.2 天 |
| 测试(两端地形一致 / 存档 / 出生点 / 性能预算) | 1 天 | 0.3 天 |
| 合计 | ≈ 4 天 | ≈ 1.5 天 |
⇒ 30 个星域的总账:6 种首作 × 4 天 + 23 套 theme × 1.5 天 ≈ 58 人天(不含 Boss GLB、节点内容、节点 UI)。 这就是"都要做"的真实价格。但它是可以按阶梯发版的:每完成 1 种地貌 + 3 套 theme 就能开放 4 颗星域, 不需要等 58 天做完。
13.5 环境危害(跟着地貌走,不单独发明)
| 危害 | 绑定地貌 | 规则 | 实现成本 |
|---|---|---|---|
| 低温 | ice | 能量类模块 cost ×1.5;静止超过 8s 开始掉血 | 低(改容量计算 + 一个计时器) |
| 打滑 | ice | 地面摩擦 ×0.45,刹车距离变长 | 低(player.applyControl 的 brake) |
| 雷击 | volcanic / ash(雷暴环那类) | 每 20~40s 随机落雷,预警圈 2s,伤害 3 | 中(沿用火榴弹的落点散布逻辑) |
| 熔岩 | volcanic | 液体面附近 6 单位内持续伤害,逼玩家走高 | 中(terrain-field 已有 waterLevel,取阈值即可) |
| 低能见度 | wasteland(尘暴) | 视野雾距离 ×0.55,雷达半径 ×0.7 | 低(改 fogDensity + 雷达半径) |
🔴 危害必须"可读":预警圈、温度计 UI、地面发光,缺一样玩家就只会说"莫名其妙掉血"。 这是本项目最典型的一类 bug(参见"在苗圃被焦土的 Boss 打到"),不可读的危害等于 bug。
13.6 落地风险(这五条会真的出事)
| # | 风险 | 对策 |
|---|---|---|
| 1 | 🔴 plains 公式被"顺手优化" → 老存档坐标 / 建筑 / 障碍物 id 全部错位 | 逐字复制;写一条 e2e 断言"焦土某点的 elevation 与旧实现同值(误差 0)" |
| 2 | 🔴 新地貌用同一个 seed → 与焦土的障碍物账本混淆 | 每个新星域 seedOffset 独立(20261012 + n),别复用 |
| 3 | 🔴 服务端没拿到 terrainStyle → 服务端算的出生点与客户端不一致 → 玩家掉进熔岩 | server/world.js 的 applyWorldToConfig 必须一起传;e2e 断言"出生点两端口径一致" |
| 4 | 🔴 矿脉跟着地貌消失 —— resource-field.js 按海拔偏好找矿(锡=高山 >0.7、石油=低地平坦 <0.25) | ice 平坦无高山 ⇒ 没有锡;volcanic 无低地 ⇒ 没有石油。每个 style 必须配 oreWeights,否则玩家的科技树会卡死在缺某种矿 |
| 5 | ⚠️ 障碍物 id = 生成顺序 | 动 flora 生成参数(数量 / accept / 密度)必须先停服 + 清 _data/state.json 里该 world 的条目 |
14. 代码接缝:改哪里
| 文件 | 改什么 | 风险 |
|---|---|---|
server/world-config.js | worlds[id] 增 terrainStyle / threat / hazards / enemySet / bossId;新星域陆续加 | 参数改动要两侧同步(public/src/config.js) |
public/src/terrain-style.js(新) | 6 种地貌的 elevation() + 液体类型 / 出生偏好 / 矿脉权重 / 坡度上限 | 🔴 最高:plains 必须与现公式数值等价,改错 ⇒ 全存档坐标错位 |
server/world.js | applyWorldToConfig 把 terrainStyle 传给两端 | 🔴 高:漏传 ⇒ 服务端算的出生点与客户端不一致 ⇒ 掉进熔岩 |
public/src/terrain-field.js | elevation 改成按 style 分派;findSpawn 用 style 的 spawnPrefer | 中(逻辑很短,但两端共用,改错就"哪是陆地"不一致) |
public/src/resource-field.js | 矿种权重改成读 style 的 oreWeights | 中:漏了会出现"冰原没有锡" ⇒ 科技树卡死 |
public/src/theme.js | 新增 23 套 theme(只加数据,不动 verdant / scorched) | 低(纯外观;改完按"七层都要接"逐层核对) |
server/missions.js(新) | 节点定义表 + 进度存档 + 结算 + 图纸发放(纯函数优先,可单测) | 新文件,无历史包袱 |
server/enemies.js(新) | archetype 表,替代 npc.js 里写死的两档 | 动 npc.js 生成逻辑 ⇒ 障碍物 id 顺序不能变 |
server/npc.js | 按 archetype 生成;新增"固定炮台 / 巢穴"两类无移动实体 | 中等 |
server/world-boss.js | 阶段机(血量阈值切招)、弱点、落点预警广播 | 中等 |
server/store.js | profile.missions / profile.blueprints / profile.loadout / profile.modules;老存档读取时补默认值 | 低(沿用 ensureWorlds 那套自愈) |
server/tech.js | 新增战场线模块解锁节点(不改老节点成本);t3_vehicle 加"星门等级"语义 | 低 |
server/items.js | 22 个模块(cat: 'equipment' 新子类 module)+ 图纸掉落 + 新材料(shard / circuit_worn)+ 新弹药 | 低(纯数据) |
public/src/paper-planes.js | 武器 kind 分支(6 种) | 高(弹道三件套极易回归,见现状 §7.1) |
public/src/mecha.js | 模块槽 / 容量 / 套装效果应用;ice 的地面摩擦 | 中(只影响数值与 CD) |
public/src/starmap.js | 星域面板里加"节点列表"层(现在只有星域层) | 低(DOM 层) |
public/src/hud.js | 节点目标条、撤离倒计时、模块 CD 环、危害读数(温度 / 预警圈) | 低 |
新增 public/src/modules.js | 模块数据 + 装配面板 + 容量校验(界面展示以服务端下发为准) | 低 |
🔴 五条硬约束(前四条都在记忆里,第 5 条是这次新增):
safe()包住主循环里每个新模块调用 —— 一抛错整局冻结。- 跨模块传方向 / 法线必须 copy 成
Vector3—— 新弹种最容易在这里炸。 - 改生成顺序要清
_data/state.json,且改前先停服。 - 配方归属只认服务端下发的
bldRecipes—— 图纸解锁新配方正好复用这套,客户端一行都不用改。 - 🔴
plains的 elevation 写完就别碰 —— 它不是"看起来差不多就行",是必须同一个浮点结果。
写一条 e2e 固定 200 个采样点做回归,改任何地貌代码都先跑它。
15. 分期:M0~M5
每一期都要"上线就能玩到新东西",不做纯地基。 地貌被拆成 M3a(管线 + 首作)和 M3b/M5(靠 theme 铺量) —— 这是口径 2 的可执行形态。
| 期 | 内容 | 验收(可测) | 估量 |
|---|---|---|---|
| M0 · 最小爽点 | 1 修特种弹药消耗 2 敌人 archetype 表 + 2 种新敌人(炮台 / 骚扰无人机)3 坚守节点 4 散花模块 | 进 T1 坚守,用散花清掉一波无人机;爆破弹真的爆炸且扣弹药 | 3~4 天 |
| M1 · 节点图 + 图纸 | 节点定义 + 星图节点层 + 首通掉图纸(拾取即登记)+ 撤离窗口 + 进度存档 | 焦土 5 个节点可依次通关;首通真掉图纸、捡到就能在指挥中心造出 Mk1 模块;中途撤退无首通奖励 | 7~9 天 |
| M2 · 模块系统 | 4 槽 + 容量 + 套装 + 12 个模块 + 装配面板 | 容量上限能挡住装配;同系 2 件触发套装;打 T3 能感知构筑差异 | 7~10 天 |
| M3a · 地貌管线 | 抽 terrain-style.js;plains 数值等价;wasteland 首作 + rust 主题;出生偏好 / 矿脉权重 / 尘暴危害 | 焦土任意 200 个采样点的 elevation 与旧实现误差为 0;铁锈带出生点不落水、锡矿仍在;两端地形一致 | 5~6 天 |
| M3b · 星域铺开 | 铁锈带 + 赤铁荒原(换 theme)+ 各 4 节点 + Boss 阶段化 + 星门 Lv2 门槛 | 星门 Lv2 后能去;两张图一眼看出是两颗星球;Boss 有 P1/P2/P3 | 8~11 天 |
| M4 · 终局 | 威胁等级 + 深潜 + 每日合同(可选) | 同节点 T1→T5 数值按曲线走;深潜打到第 8 波会被拦 | 6~9 天 |
| M5 · 地貌扩充 | ash / ice / volcanic / rift / ruin 逐个上线,每种配 3~5 套 theme | 每上线 1 种地貌 + 3 套 theme ⇒ 开放 4 颗星域;每种的地貌特征(打滑 / 熔岩 / 高低差)可被玩家说出来 | 20~24 天(分批) |
建议顺序不要跳:M0 必须先做,因为它是唯一一条能让老玩家"今天上线就感觉到不一样"的改动, 而且它顺手修掉了未完成清单里挂了很久的 #2。 M3a 是"都要做"的前提:管线没抽出来之前,做第 2 颗新地貌的成本和第 1 颗一样贵。 所以哪怕只用wasteland一种地貌验证,也必须先把terrain-style.js立起来。
16. 明确不做(写下来防止后面被"顺手加上")
| 不做 | 状态 | 为什么 |
|---|---|---|
| 随机词条(Warframe 的 Riven) | ❌ 2026-10-17 老大已否决 | 会把"构筑"变成"刷到好词条",与 P1 直接冲突。模块只有固定效果 |
| 随机生成关卡 / 地图 | ❌ 不做 | 服务端成本高、品质不可控、失败体验差 |
| 护送到 NPC / 潜行 | ❌ 不做 | 要新 AI 与视线系统,投入产出比最差 |
| 元素伤害表(腐蚀 / 磁力 / 病毒…) | ❌ 不做 | 两轴抗性已经够产生配装决策,铺开就是平衡地狱 |
| 独立 PvP 排位 | ❌ 不做 | 现有 PvP 只有"同世界遭遇",做成排位要重生平衡体系 |
| 开放世界平原 / 跑酷墙跳 | ❌ 不做 | 球面地形上的关卡美术与移动改造是另一个项目 |
| 全动态寻路 AI | ❌ 不做 | 现有"黄金角铺开 + 简单避水避障"足够;复杂寻路会压垮单进程 |
| 段位(Mastery Rank) | ⏸ 缓做 | 先做"模块熟练度",等模块数量上到 30+ 再考虑独立段位 |
| 地形改造(挖山 / 填海 / 平整土地) | ❌ 不做(新加) | 球面网格上改地形要重算贴图与碰撞,多人同步要发全量地形差量。建筑已经靠"程序化基座贴合地形"绕掉了这个需求 |
| 地貌随事件变化(同一星域换地貌) | ❌ 不做(新加) | 地形一变,障碍物 id / 建筑高度 / 玩家坐标全失效。地貌是每个 worldId 的静态属性,只能用换世界来表达 |
| 模块升级 / 强化等级(+1 +2 +3) | ❌ 不做(新加) | 那是把"构筑"偷偷换回"数值"。模块的成长只走"换更好的模块"和"容量变大能多装一个" |
17. 待老大拍板的 4 个点(原 6 个,2 个已定)
| # | 问题 | 状态 / 我的建议 |
|---|---|---|
| 1 | 模块掉图纸回基地造还是直接掉成品? | ✅ 已定:掉图纸(详见 §12.2) |
| 2 | 模块要不要随机词条? | ❌ 已定:不做(详见 §16) |
| 3 | 容量上限走 12 → 22 够不够? | 建议够。槽位 5 个 × 平均 cost 4 = 20,满配刚好"装不满",永远有取舍 |
| 4 | 节点进度存服务端还是跟世界存档走? | 建议服务端(profile.missions,与 profile.guide 同款),刷新不可跳关 |
| 5 | 撤离要不要"抢撤离点"(多人时先到先得)? | 建议不要。会直接毁掉合作体验,本作多人本来就稀 |
| 6 | 6 种新地貌的上线节奏:一次做齐再发,还是每 1 种单独发? | 建议每 1 种单独发(配 3~5 套 theme ⇒ 4 颗星域一批)。一次做齐要 20+ 天见不到新内容 |
18. 与现有文档的关系
| 文档 | 关系 |
|---|---|
| 玩法系统现状 | 本篇引用的所有"现在是什么样"都以它为准 |
| 玩法方案-Planet Civilization-v1 | 上一篇是"基地 / 生产 / 双星球",本篇是"战斗 / 关卡 / 构筑",两者在星门与科技树上咬合 |
| 未完成清单 | M0 的第一项就是它的 §3 #2(特种弹药不消耗) |
| 系统架构 | 新增 missions.js / enemies.js / modules.js 要按它的分层放 |
| 接口与协议 | 新增 WS 消息(missionStart / missionState / extract / loadout)要登记进去 |