← 迷途之梦 · 官方数据 战斗系统分析 v0.1

《迷途之梦》战斗系统分析 · v0.1(基于源码逐帧核对)

读的是 lost-dream/ 里的 GDScript,不是凭手感猜。所有时间都是游戏时间(120 物理帧/秒,1 帧 ≈ 8.33ms), 顿帧/慢动作会额外拉长真实时间,我会单独标出来。

0. 六条结论先说

1. 玩家的核心资源是无敌帧,不是血。翻滚 0.34s 里有 0.21s 无敌、冷却只有 0.1s、不消耗任何东西 → 理论上 48% 的时间可以无敌,而且「完美闪避」还给 2.5s 的高额奖励窗口。所有敌人、包括 Boss,都能用「滚过去」解决。 2. 平A 的真实定位是 DPS,重击的定位是控制。三段轻击取消后摇后约 6.1 伤害/秒(全游戏最高),重击只有 2.9/秒,但重击带 1 秒眩晕且能打断 Boss 招式。 3. 重击锁是当前最强的一张「对策卡」:眩晕 1.0s 和重击循环 1.03s 几乎相等,看起来差一点,但每次命中还会额外造成 0.22s 硬直(_hurt_stun),两者一叠,小怪永远醒不过来;范围 245 宽还能一次锁一片。 4. Boss 的横扫是「一次性判定」:只在 t=0.55s 那一帧检查一次距离,之后没有任何判定。这意味着它比看起来好躲得多——站远一点(>380px)或者滚过去都行,甚至可以在 0.55s 之后再走进去。 5. 没有真正的石头剪刀布。三个小怪 + Boss 全部被「翻滚 + 平A」通吃;跳跃还能额外免疫所有地面攻击(影卒 62px、奔角 56px、Boss 冲刺 120px 的纵向判定都比跳跃高度 173px 小)。难度来自玩家自己的输入精度,而不是解法选择。 6. 两个大招是被低估的主要输出。破梦 5 伤 / 斩惑 6 伤、10 秒冷却,一场 60 秒的 Boss 战能放 6 次(30–36 伤,超过 Boss 总血量 26);而且破梦全程无敌(1.15s 覆盖 1.04s 动作),等于「免费的输出窗口」。前提是你会稳定触发完美闪避——而这件事在现版本里非常容易。


1. 玩家能力全表

能力 数值 备注
血量5死亡无惩罚,满血重来
移速 / 加速度430 / 3600空中 2000
跳跃初速 930,重力 2500 → 最高约 173px,滞空 0.74s短按(<0.42 倍速截断)只有约 30px 高
二段跳初速 837空中一次
空中冲刺1150 速,0.15s,无敌 0.18s冷却 0.31s
翻滚660 速,0.34s,无敌 0.05–0.26s(0.21s),冷却 0.1s后摇 0.34s,可连滚
受击无敌0.75s被打后
破梦无敌1.15s全程无敌
斩惑无敌0.5s只保护起手和横扫,硬后摇暴露
输入缓冲攻击 0.16s / 跳 0.12s / 重击 0.16s / 翻滚 0.14s缓冲偏短,翻滚中按 J 容易被吃掉
土狼时间0.10s
场地边界90–1830本轮修复后

关键点:翻滚是无消耗的。 没有体力条、没有次数限制,唯一限制是 0.1s 冷却——所以「一直滚」在数学上是可行的,只是会牺牲输出。


2. 平A / 重击 / 大招的帧数据与 DPS

2.1 三段轻击(player.gd:37-41)

段 前摇 判定 后摇 伤害 击退 判定框(宽×高) 实际够到 顿帧
185ms85ms155ms1250118×108前方 124px45ms
275ms85ms165ms1270124×110前方 130px50ms
3115ms115ms260ms2430140×124前方 146px85ms

2.2 重击(player.gd:44)

前摇 判定 后摇 伤害 击退 框 够到 眩晕 顿帧
300ms140ms300ms3400245×165前方 251px1.0s(Boss 0.35s)200ms

2.3 破梦 / 斩惑(player.gd:42,47-49)

这两个是「完美闪避」的奖励招:只有完美闪避后的 2.5 秒窗口内才能按出来,共用 10 秒冷却。 区别是——破梦开局就能用(J),斩惑要捡到记忆碎片解锁重击之后才能用(K)。

招式 前摇 判定 后摇 伤害 击退 判定框 实际范围 无敌 顿帧 冷却
破梦 J340ms200ms500ms5780360×260,中心在身前 186身前 6~366px,纵向 -208~+521.15s400ms10s
斩惑 K160ms300ms300ms(不可取消)6520400×96,ox=0 绕身前后各约 200px(-194~+206),纵向 -78~+180.5s220ms10s

真实动作时长 vs 无敌覆盖

动作总长 无敌 结果
破梦0.34+0.20+0.50 = 1.04s1.15s全程无敌,还多出 0.11s 的安全余量——可以当「无敌反打」用
斩惑0.16+0.30+0.30 = 0.76s0.5s最后 0.26s 的后摇完全暴露,且不能翻滚取消——这是它和破梦真正的取舍

伤害占比(真实数据)

触发条件(决定了它们的实战价值)

_break_window = 2.5 只在 Player._perfect_dodge() 里设置,而完美闪避的判定是「翻滚中(0.02–0.26s)被任何伤害判定命中」。 换句话说:这两个招不是解锁就能按,而是必须先「迎着攻击滚」成功一次。窗口内 HUD 会显示「破 梦 J 斩 惑 K」。

各敌人的触发难度:

敌人 触发方式 难度
影卒0.42s 举刀时滚过去低(前摇很长)
奔角0.7s 蓄力红线时滚过去,或跳过冲锋再等它撞墙低
浮瞳滚弹幕(460 速、330 距离,有 0.7s 飞行时间)中低
假面·横扫0.55s 举刀时滚进 236px 圈里中(单帧判定,要卡 0.55s)
假面·冲刺980 速冲过来时滚穿中(最稳定的触发源)

应用场景

场景 用哪个 原因
Boss 连段里想硬吃一套破梦1.15s 无敌覆盖整个动作,还能反打 5 伤
被 3–4 个地面小怪围住斩惑前后 200px 都打,6 伤直接清场
浮瞳悬在头顶 / Boss 跳起来破梦斩惑纵向只到 -78,打不到空中的
打奔角(4 血)两个都行5 / 6 伤都是一击
触发完美闪避后想最快出伤斩惑0.76s 打完 6 伤 ≈ 7.9 伤/秒,约是破梦的 1.6 倍
触发后自己血少、周围还有威胁破梦用无敌把危险期盖过去
想打断 Boss 起手破梦命中 5 伤 + 超长顿帧,Boss 的招式基本必断

风险点

2.4 空中攻击(不需要解锁)

2.5 DPS / TTK 总表

输出方式 伤害/秒(游戏时间) 备注
三段轻击(取消后摇)≈6.1最高,但要求贴脸
重击循环≈2.9附带永久眩晕
破梦5/10s ≈0.5(平均)爆发 + 无敌
斩惑6/10s ≈0.6(平均)爆发,不可取消
空中砸地2 / 每次跳 ≈2范围 130

Boss 26 血:纯贴脸轻击约 4.3 秒游戏时间(算上顿帧约 5.5 秒真实时间);实战要躲招、要追,正常在 30–60 秒之间。小怪 2–4 血 → 一套轻击或一个破梦直接清。


3. 伤害与生存逻辑


4. 小怪数据与对策表

敌人 HP 行为节奏 判定 破解方式 有没有「专属解法」
影卒3接近 → 举刀 0.42s → 突刺 0.16s(470 速)→ 收招 0.55s突刺时水平 48px、纵向 62px翻滚穿过 / 举刀时后退 / 跳跃(纵向 62 < 跳高 173)无,通用
浮瞳2保持 330px,蓄力 0.5s → 单发弹 460 速弹丸半径 10,命中 32px翻滚(弹速慢)、贴脸砍、空中砸无,通用
奔角4520px 内蓄力 0.7s(红线)→ 900 速冲锋 → 撞墙/1s 后硬直冲锋时 58px、纵向仅 56px跳过去(跳高 173,冲锋完全打不到空中);撞墙后白给跳跃是最优解,但不是唯一
木桩∞站桩,0.9s 举刀 → 0.26s 挥69px,0 伤害故意站进去练完美闪避教学专用

共同弱点:全部是「接近 → 长前摇 → 单次判定」,没有多段、没有持续判定、没有反翻滚手段。一套「滚穿 → 转身轻击三段」通吃。


5. Boss「假面」招式表与应对

招式 时间轴 判定 安全解法 危险度
横扫举刀 0.55s → 单帧判定 → 收 0.6s以身前 143px、高 -112 为圆心,半径 236px(scale 1.55)站到 380px 外;或滚过去;或站在它背后(背后 -85px 以内才危险)中
跃击地震0.35s 蓄 → 0.75s 起跳 → 落地生成左右两个地面冲击波(520 速,半径 15)只有冲击波有伤害,本体落地无判定跳过冲击波 / 翻滚 / 站远低
突进蓄 0.32s → 980 速冲 0.42s,2 连(二阶段 3 连)水平 120px、纵向 120px翻滚;跳跃只有到最高点(173px)才免疫高
扇形弹幕(二阶段)0.55s 蓄 → 5 发 ±0.4rad、430 速每发 32px翻滚 / 横向跑中

Boss 的决策逻辑(mask_boss.gd:127):

重击可以打断 Boss:MaskBoss.stun() 把眩晕压到 0.35s,但会清空当前招式、把状态打回 walk、_decide_cd=0.35。也就是说 每一次重击命中 = 取消 Boss 一个正在起手的招,这是打 Boss 最实用的控制。

一个容易被忽略的点:攻略里写「翻滚穿过他的刀锋,从背面打」——代码里没有任何背击加成。但横扫的判定圆心在身前 143px,所以站在背后确实是安全的,这句提示在「站位」意义上是对的,在「伤害」意义上是错的。


6. 战斗逻辑深挖

6.1 玩家状态机

IDLE / RUN / JUMP / FALL / ROLL / ATTACK / HURT / DEAD。

6.2 命中判定

6.3 无敌帧来源(全部会叠加取最大值)

来源 时长
翻滚0.05–0.26s
空中冲刺0.18s
受击后0.75s
破梦1.15s
斩惑0.5s
复活1.0s

hurt() 的判定顺序:完美闪避 → 无敌帧 → 扣血。完美闪避的判定窗口是 state==ROLL 且 _roll_t ∈ [0.02, 0.26]——比无敌帧窗口还早 0.03s,也就是「刚滚出去就挨打」也算完美闪避。

6.4 时间操纵

6.5 眩晕 / 硬直

6.6 击退与镜头

6.7 死亡循环

hurt → hp<=0 → _kill → died 信号 → Arena._redream():

6.8 关卡节奏与难度曲线(第一章)

节点 内容 玩家手里有什么
教学木桩,0 伤害平A / 翻滚 / 完美闪避 / 破梦
第一波影卒 ×2同上
第二波影卒 ×3 + 浮瞳 ×1同上
记忆碎片场地中央 y=520,要跳起来才能吃到→ 解锁重击 + 斩惑
第三波奔角 ×2 + 浮瞳 + 影卒全部能力
Boss假面,26 血二阶段全部能力

曲线上的问题:最难的一波杂兵(第三波)是在拿到最强控制(重击锁)之后才出现的,所以实际难度是「先难后易」;Boss 又因为横扫是单帧判定而偏软。整章的难度峰值出现在第二波(没有重击、3 个影卒 + 1 个浮瞳),而不是结尾。


7. 有没有「一张卡通吃」?

结论:有,而且不止一张。

卡 覆盖范围 代价 是否被克制
翻滚所有攻击(近战、弹幕、Boss 冲刺、横扫)0.34s 不能输出无(无消耗、0.1s 冷却、48% 无敌覆盖率)
重击锁全部小怪(含浮瞳),Boss 只能 0.35s2.9 DPS,怕起手被抓基本没有
跳跃影卒突刺、奔角冲锋、Boss 冲刺最高点、地震波空中不能转向太多扇形弹幕/浮瞳弹
破梦任何敌人,5 伤 + 1.15s 无敌10s 冷却 + 要先完美闪避无
斩惑被地面怪围住时,6 伤、前后 200px 清场10s 冷却 + 0.26s 暴露后摇 + 打不到空中对空/远程(浮瞳、跳跃中的 Boss)

为什么这是问题:


8. 下一章要补的「反制手段」(设计建议)

如果第二章想做出真正的攻防选择,建议按这个顺序加机制(每一条都能单独解决一张卡):

1. 反翻滚:多段/持续判定(判定持续 >0.28s,让无敌帧吃完还在),或者「抓取/投技」直接无视无敌帧(代码里给 hurt() 加一个 unblockable 参数即可)。 2. 反跳跃:对空弹幕、上升气流/落雷、把玩家从空中打下来的下砸。 3. 反重击锁:给精英/Boss 加「眩晕抗性递增」(每次眩晕时长 ×0.6,最低 0.2s),或者霸体状态(受击不掉状态)。 4. 让斩惑/破梦变成「解题」而不是「伤害」:例如破梦专门破盾/破甲,斩惑专门清弹幕,而不是纯数值。 5. 背击/方向机制:如果要做「从背面打」,得真的加方向加成(现在只有站位意义)。 6. 给翻滚加成本:体力条,或者把无敌帧挪到 0.12–0.28(要求预判而不是无脑滚)。

8.1 可以给后续章节加的「技巧 / 招式」草案(按成本从低到高)

草案 做法 成本
蓄力斩长按 K 蓄 1.2s → 6 伤、破霸体,松手才出低:复用 HEAVY 结构,加 charge 字段
背击加成take_hit 时比较 dir 和敌人 facing,背后 ×1.5低:一处判定
处决敌人眩晕时靠近按 E → 秒杀 / 回 1 血低:读 is_stunned()
弹反 / 见切受击前 0.12s 内按 K → 免伤 + 大硬直中:在 hurt() 前面插一层判定
空中连段空中 J 之后再来一段下劈,落地砸地中:扩 COMBO 和 _do_attack 的空中分支
翻滚层数翻滚消耗一层、完美闪避回一层;层数用完只能走位中:动核心手感,要重新调所有敌人

9. 实战技巧清单(给玩家 / 给设计参考)

1. 贴脸打三段:轻击 DPS 最高(6.1/秒),后摇 32% 处按 J 直接接下一段,别等动作放完。 2. 重击锁:解锁重击后,对小怪用 K → K → K,1 秒眩晕 + 0.22s 硬直,怪永远出不了手;精英/Boss 用 K 打断起手。 3. 滞空砸地:跳起来按 J,落地 130 半径 2 伤——前期没有重击时的清群主力,也能砸浮瞳。 4. 完美闪避是「撞」出来的:看到前摇就往攻击里滚,判定在 0.02–0.26s,成功率高得离谱,还给 2.5s 输出窗。 5. 破梦当无敌用:1.15s 无敌 + 5 伤,Boss 连段里直接按 J 反打。 6. 斩惑绕身:被包围时按 K,前后 200px 都能打到;但别对浮瞳和跳起来的 Boss 用(打不到)。 7. 跳着躲奔角:冲锋纵向判定只有 56px,跳过去它自己撞墙硬直 1 秒,白给。 8. Boss 横扫站远:>380px 完全安全;或者滚到它背后(背后 -85px 内才有判定)。 9. Boss 冲刺必须滚:纵向判定 120px,跳跃只有最高点能躲,别赌。 10. 半血是白给窗口:二阶段强制收招 0.9 秒,进去打一套。 11. 空中冲刺是位移技:1150 速 + 0.18s 无敌,用来躲弹幕/换位,不消耗次数。 12. 别在翻滚里按 J:攻击缓冲只有 0.16s,翻滚还剩 >0.16s 时按的 J 会被吃掉,等滚完再按。


10. 代码里的「文档 / 实现不一致」与小问题

位置 问题
player.gd:44 + README重击写着「235px 突进」,实际位移只有约 6–8px
arena.gd:593 提示「从背面打」没有背击加成,只有横扫的判定圆心在身前所以背后安全
player.gd:510_roll_grace 除了复活时清零外从未赋值,是死代码(本来可能想做「宽容窗口」)
feel.gd:42顿帧结束无条件把 time_scale 设回 1.0,会截断正在进行的慢动作
player.gd:147攻击缓冲 0.16s,完美闪避后立刻按 J 可能被翻滚吃掉(建议 0.24–0.3s)
enemy.gd:57浮瞳的 _hurt_stun 会让它停止悬浮逻辑(被打时原地掉),小问题
hud.gd连击数只统计命中次数,不是连段数,也不影响伤害

*数据来源:actors/player.gd、actors/mask_boss.gd、actors/{enemy,shadow_soldier,eye_floater,charger,practice_dummy}.gd、autoload/feel.gd、scenes/arena.gd。*