12 KiB
修炼系统设计(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_bonus(1.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 突破判定(手动)
- 玩家点击"大境界突破"→ 扣除灵石(一次性,成功失败都不退还)
- 掷骰:成功率按目标大境界读配置
realm_breakthrough_chances(升筑基 0.6 / 升金丹 0.5 / 升元婴 0.4 / 升化神 0.3,越往上越难) - 成功 →
realm_index+1、sub_realm_index=0(新大境界初期)、修为清零;控制台与信号广播"X 突破至 筑基初期" - 失败 → 修为倒退(配置
realm_breakthrough_fail_drop步,默认 3):倒退限于当前大境界内——练气期倒推层数(如 13 层圆满 → 10 层),筑基及以上倒推小境(圆满 → 后期 → 中期 → 初期);倒退后修为清零重新积累;控制台提示"X 突破失败,灵石化为乌有,修为倒退至 练气10层" - 失败后修为照常继续增长(无冷却;冷却规则后续版本再考虑)
设计意图:为灵石提供经营消耗出口(建筑产出 → 突破消耗形成闭环),并保留"攒灵石 → 点突破"的手动决策感与成败反馈;失败代价是境界倒退(练气 13 层 → 10 层意味重新冲 3 个瓶颈层),比单纯扣修为更能制造挫折与经营压力。
4.5 灵石不足
- 按钮置灰并显示所需灵石("突破(需 500 灵石)")
- 灵石不足不可点击,不弹窗
五、突破判定(瓶颈层)
- 修为 ≥ 瓶颈层门槛时,每日结算后自动尝试突破
- 掷骰:成功概率按瓶颈层分别配置(
breakthrough_chances,与bottleneck_levels一一对应:升 4 层 0.85 / 升 7 层 0.8 / 升 10 层 0.75 / 升 13 层 0.6,越往上越难) - 成功 → 升层,控制台打印"X 突破至 练气4层"
- 失败 → 修为扣减 20%(冲关损耗),次日再尝试;控制台打印失败信息
- 失败不连续重试(每天最多判定一次)
设计意图:挂机友好(全自动),但瓶颈制造节奏感与"卡关→等积累"的经营反馈;损耗惩罚避免无脑挂到顶。
六、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(本期不做日志界面)
九、实现拆解(小步可验证)
- 配置节追加 3 项 + GameConfig 读取(默认值与 cfg 同步)
- Disciple 辅助:
is_realm_ready()(修为圆满判定)、突破花费查询、进度文本支持筑基及以上 - CultivationManager:
_gain_exp放开到筑基及以上 + 小境自动推进_check_sub_realm try_realm_breakthrough(d):校验 → 扣灵石 → 掷骰 → 成功/失败结算- 详情面板"大境界突破"按钮(可用性 = 条件 + 灵石;文案含花费)
- 挂机验证(加速时间观察筑基圆满 → 手动突破金丹)+ 提交
十、验收清单(D5 交付标准 + D9 追加)
- 挂机时弟子修为逐日增长,速度随资质/天灵根不同(下品慢、天骄快)
- 非瓶颈层修为满自动升层,无失败
- 瓶颈层(4/7/10/13 层)需突破判定,控制台有成败日志,失败扣 20% 修为
- 练气 13 层圆满后修为封顶,显示"练气圆满"
- 详情面板显示修为进度,突破后实时刷新
- 修改配置(速度/概率/门槛)重启生效
- 详情面板常驻"大境界突破"按钮:修为圆满 + 灵石足够可点击(文案显示所需灵石),否则置灰(未圆满/灵石不足/已至巅峰)
- 点击突破:扣灵石 → 成功升大境界(realm_index+1,显示"筑基初期")或失败修为倒退(练气退层/筑基+退小境,配置
realm_breakthrough_fail_drop步),控制台有日志 - 灵石不足时按钮置灰不可点击
- 筑基及以上:修为继续增长,满
realm_sub_thresholds自动推进小境(初期→中期→后期→圆满),圆满后可再大境界突破 - 修改配置(花费/成功率/小境门槛)重启生效
注:修为显示("当前/本层门槛")待详情面板接入(拆解第 6 步)。