Files
SectSimulator/doc/design/修炼系统设计.md
T

12 KiB
Raw Blame History

修炼系统设计(D5:修炼循环 + D9:大境界突破)

对应开发计划表 D5(8/7):① 修为随时间增长(资质×灵气)② 境界门槛 ③ 突破判定;D9(8/11)追加大境界突破。 交付标准:弟子自动修炼,可突破;练气圆满后玩家手动花费灵石突破大境界。 本文档只描述设计,不包含代码。 状态:D5 部分已实现(每日结算 → 修为达门槛升层 → 瓶颈掷骰判定,失败扣 20%;13 层圆满封顶;修为进度已在管理界面展示);大境界突破已实现(练气圆满 → 手动花费灵石 → 筑基及以上大境界,失败灵石不返还 + 修为倒退;配置驱动,详见第四章)


一、核心循环

每日推进 → 修为增长(资质×灵根容量×天灵根×灵气浓度)→ 达到层门槛 → 升层/突破判定 → 境界推进
  • 纯挂机机制:弟子自动修炼,玩家无需操作
  • 修炼只在游戏时间推进时进行(TimeSystem.day_passed),暂停/弹窗期间冻结

二、修炼速度

每日修为增量 = 基础速度 × 资质倍率 × 灵根容量倍率 × 天灵根加成 × 灵气浓度

因子 来源 说明
基础速度 配置 base_speed(默认 10 修为/游戏日
资质倍率 配置 aptitude_speed[0.6, 1.0, 1.5, 2.0] 按下品/中品/上品/天骄索引
灵根容量倍率 固定公式 1 ÷ 根数(无配置) 1根=1.0、2根=0.5、3根=1/3、4根=0.25、5根=0.2
天灵根加成 配置 heavenly_bonus1.5 仅在 is_heavenly 时乘入
灵气浓度 配置 qi_concentration(默认 1.0 D5 固定值;D6 建筑系统接入后动态化

所有修炼数值统一从 GameConfig 读取(Disciple 不内置倍率常量),避免双份数值漂移。

含义

  • 资质定天赋上限:决定倍率主体(0.6~2.0
  • 灵根数量定灵气容量:容量 = 1 ÷ 灵根数(硬规则,不提供配置)。单灵根 1 单位灵气即充满(×1.0),双灵根只充 1/2(×0.5),三灵根 1/3,四灵根 1/4,五灵根 1/5,根数越多同一单位灵气分摊越薄
  • 天灵根是稀缺加成:强制单根(满容量)+ 额外 ×1.5,三个维度独立掷骰
  • 无灵根(体修路线预留):容量为 0,无法练气;暂不生成,待体修系统(炼体)接入后另行结算

组合示例(天骄资质 + 五灵根 = 2.0 × 0.2 = 0.4,慢于 上品资质 + 单灵根 = 1.5 × 1.0 = 1.5

修为存储用 float(允许小数积累),显示时取整。


三、境界门槛(本期:练气 1–13 层)

需求修为(配置 level_thresholds 是否瓶颈
1→2 100
2→3 200
3→4 350
4→5 550
5→6 800
6→7 1100
7→8 1500
8→9 2000
9→10 2600
10→11 3300
11→12 4100
12→13 5000
  • 非瓶颈层:修为满门槛 → 自动升层(无失败)
  • 瓶颈层3→4 / 6→7 / 9→10 / 12→13):修为满后进入突破判定
  • 13 层圆满:修为封顶,显示"练气圆满";大境界突破见第四章(玩家手动花费灵石突破至筑基)

数值均为示例,正式数值在 D9 平衡调整,只改配置不动代码。


四、大境界突破(D9 追加:手动花费灵石)

4.1 总览

练气圆满(13 层)后,玩家可在弟子详情面板手动操作:花费灵石尝试突破至下一大境界(练气→筑基→金丹→元婴→化神)。

练气13层圆满 ── 手动花费灵石 + 成功率判定 ──> 筑基初期 ── 小境自动推进 ── 筑基圆满 ──> 金丹初期 …
  • 与练气期小突破(自动挂机)不同:大境界突破是玩家主动行为,消耗灵石、有失败折损
  • 大境界序列沿用 Disciple.REALM_NAMES(练气/筑基/金丹/元婴/化神),realm_index 表示大境界

4.2 触发条件

条件 说明
修为满 练气期:13 层圆满(修为封顶);筑基及以上:修为 ≥ 当前大境界圆满阈值(见 4.3)
灵石足够 当前宗门灵石 ≥ 目标大境界花费(配置 realm_breakthrough_costs
玩家操作 详情面板点击"大境界突破"按钮(满足条件时可用)

4.3 筑基及以上的小境推进

  • 筑基/金丹/元婴/化神各有 4 小境(初期/中期/后期/圆满),显示沿用现有 get_realm_text()
  • 修为每日继续按同一公式增长(不再以 13 层封顶);满小境门槛自动推进小境(挂机,无失败)
  • 小境门槛统一读配置 realm_sub_thresholds(3 项:初期→中期 / 中期→后期 / 后期→圆满),各大大境界通用
  • 圆满:修为达到圆满小境门槛后封顶,解锁"大境界突破"按钮

4.4 突破判定(手动)

  1. 玩家点击"大境界突破"→ 扣除灵石(一次性,成功失败都不退还)
  2. 掷骰:成功率按目标大境界读配置 realm_breakthrough_chances(升筑基 0.6 / 升金丹 0.5 / 升元婴 0.4 / 升化神 0.3,越往上越难)
  3. 成功realm_index+1sub_realm_index=0(新大境界初期)、修为清零;控制台与信号广播"X 突破至 筑基初期"
  4. 失败修为倒退(配置 realm_breakthrough_fail_drop 步,默认 3):倒退限于当前大境界内——练气期倒推层数(如 13 层圆满 → 10 层),筑基及以上倒推小境(圆满 → 后期 → 中期 → 初期);倒退后修为清零重新积累;控制台提示"X 突破失败,灵石化为乌有,修为倒退至 练气10层"
  5. 失败后修为照常继续增长(无冷却;冷却规则后续版本再考虑)

设计意图:为灵石提供经营消耗出口(建筑产出 → 突破消耗形成闭环),并保留"攒灵石 → 点突破"的手动决策感与成败反馈;失败代价是境界倒退(练气 13 层 → 10 层意味重新冲 3 个瓶颈层),比单纯扣修为更能制造挫折与经营压力。

4.5 灵石不足

  • 按钮置灰并显示所需灵石("突破(需 500 灵石)"
  • 灵石不足不可点击,不弹窗

五、突破判定(瓶颈层)

  1. 修为 ≥ 瓶颈层门槛时,每日结算后自动尝试突破
  2. 掷骰:成功概率按瓶颈层分别配置breakthrough_chances,与 bottleneck_levels 一一对应:升 4 层 0.85 / 升 7 层 0.8 / 升 10 层 0.75 / 升 13 层 0.6,越往上越难)
  3. 成功 → 升层,控制台打印"X 突破至 练气4层"
  4. 失败 → 修为扣减 20%(冲关损耗),次日再尝试;控制台打印失败信息
  5. 失败不连续重试(每天最多判定一次)

设计意图:挂机友好(全自动),但瓶颈制造节奏感与"卡关→等积累"的经营反馈;损耗惩罚避免无脑挂到顶。


六、CultivationManager(新 Autoload

存放位置:src/Character/CultivationManager.gd(与 DiscipleManager 同域,注册顺序在 DiscipleManager 之后、声明于 project.godot

接口 说明
监听 TimeSystem.day_passed 每日结算全体弟子
私有 _gain_exp(d) 按公式累计修为(所有大境界通用;练气圆满/大境界圆满封顶)
私有 _check_breakthrough(d) 练气期门槛判定 + 瓶颈掷骰
私有 _check_sub_realm(d) 筑基及以上小境门槛判定(自动推进,无失败)
公开 try_realm_breakthrough(d) 大境界突破入口:校验灵石 → 扣费 → 掷骰 → 成功升大境界/失败修为倒退(realm_breakthrough_fail_drop 步),返回 bool
信号 realm_changed(d) 境界变化(详情面板刷新用)
信号 cultivation_log(text) 修炼日志文本(控制台打印/后续日志系统)

注意:只在 disciples 名录内结算,候选池不修炼;大境界突破必须从 UI 手动调用(挂机不自动花灵石)。


七、配置节(game_config.cfg [cultivation]

[cultivation]
base_speed=10                              ; 基础修为/日
qi_concentration=1.0                       ; 宗门灵气浓度(D6 动态化)
aptitude_speed=[0.6, 1.0, 1.5, 2.0]        ; 资质倍率(下品/中品/上品/天骄)
heavenly_bonus=1.5                         ; 天灵根额外倍率
breakthrough_chances=[0.85, 0.8, 0.75, 0.6]   ; 各瓶颈层突破成功率(与 bottleneck_levels 一一对应)
level_thresholds=[100, 200, 350, 550, 800, 1100, 1500, 2000, 2600, 3300, 4100, 5000]   ; 练气 1→2 到 12→13 各层所需修为
bottleneck_levels=[4, 7, 10, 13]           ; 瓶颈目标层(升到这些层需突破判定)
realm_breakthrough_costs=[500, 4000, 12000, 60000]   ; 大境界突破灵石花费(索引 0~3 = 升筑基/金丹/元婴/化神)
realm_breakthrough_chances=[0.6, 0.5, 0.4, 0.3]      ; 大境界突破成功率(与 costs 一一对应)
realm_breakthrough_fail_drop=3                       ; 突破失败倒退步数(练气倒推层数/筑基+倒推小境,默认 3)
realm_sub_thresholds=[6000, 12000, 24000]  ; 筑基及以上小境门槛(初期→中期/中期→后期/后期→圆满)
  • aptitude_speed:与资质枚举一一对应,必须 4 项
  • level_thresholds:练气 1→2 到 12→13 共 12 个门槛值
  • bottleneck_levels:升到这些层时需要突破判定
  • realm_breakthrough_costs/chances:索引 0 = 练气圆满→筑基,1 = 筑基圆满→金丹,2 = 金丹圆满→元婴,3 = 元婴圆满→化神;两个数组长度必须一致(4 项)
  • realm_breakthrough_fail_drop:失败倒退步数,练气期退层数、筑基+退小境,均不跨大境界
  • realm_sub_thresholds:筑基及以上通用,3 项;修为达到即自动进小境

八、UI 接入(D4 预留区填充)

  • 名录列表DisciplesPanel):条目追加"修为"列(如 "1234 / 800",当前修为/本层门槛;13 层显示"练气圆满";大境界圆满显示"筑基圆满")
  • 详情弹窗:信息区追加"修为:1234 / 2000"(当前/本层门槛;练气圆满显示"练气圆满")
    • 追加"大境界突破"按钮:满足触发条件(修为圆满 + 灵石足够)时可点击;按钮文案带花费("大境界突破(500 灵石)");灵石不足置灰
    • 点击后直接执行判定(成功/失败均无二次确认),结果通过修炼日志与控制台可见
  • 面板打开时暂停时间,进度静态展示;修炼日志:控制台 print(本期不做日志界面)

九、实现拆解(小步可验证)

  1. 配置节追加 3 项 + GameConfig 读取(默认值与 cfg 同步)
  2. Disciple 辅助:is_realm_ready()(修为圆满判定)、突破花费查询、进度文本支持筑基及以上
  3. CultivationManager_gain_exp 放开到筑基及以上 + 小境自动推进 _check_sub_realm
  4. try_realm_breakthrough(d):校验 → 扣灵石 → 掷骰 → 成功/失败结算
  5. 详情面板"大境界突破"按钮(可用性 = 条件 + 灵石;文案含花费)
  6. 挂机验证(加速时间观察筑基圆满 → 手动突破金丹)+ 提交

十、验收清单(D5 交付标准 + D9 追加)

  • 挂机时弟子修为逐日增长,速度随资质/天灵根不同(下品慢、天骄快)
  • 非瓶颈层修为满自动升层,无失败
  • 瓶颈层(4/7/10/13 层)需突破判定,控制台有成败日志,失败扣 20% 修为
  • 练气 13 层圆满后修为封顶,显示"练气圆满"
  • 详情面板显示修为进度,突破后实时刷新
  • 修改配置(速度/概率/门槛)重启生效
  • 详情面板常驻"大境界突破"按钮:修为圆满 + 灵石足够可点击(文案显示所需灵石),否则置灰(未圆满/灵石不足/已至巅峰)
  • 点击突破:扣灵石 → 成功升大境界(realm_index+1,显示"筑基初期")或失败修为倒退(练气退层/筑基+退小境,配置 realm_breakthrough_fail_drop 步),控制台有日志
  • 灵石不足时按钮置灰不可点击
  • 筑基及以上:修为继续增长,满 realm_sub_thresholds 自动推进小境(初期→中期→后期→圆满),圆满后可再大境界突破
  • 修改配置(花费/成功率/小境门槛)重启生效

注:修为显示("当前/本层门槛")待详情面板接入(拆解第 6 步)。