How does a monster notice your settlers, and what can you do about it? This page is read straight from the game's tables (DS_B.0.4.29) and the code dump; each number names the constant it comes from, and anything the data cannot confirm is flagged as such. Try the interactive 检测范围计算器 来填入一只具体怪物。
检测模型 实际发生的事
检测是 基于视野且基于网格的。每个单位 - 你的开拓者和每个怪物一样 - 都带有一个 视野范围 用于定义单位当前能看到的一组地面格子的属性,墙壁会阻挡视线。当怪物可见的格子中包含你的单位时,它开始注意到你(察觉中状态),然后决定发起攻击。代码中没有单独的听觉或噪音感知。
怪物会经历三种战斗状态 (来自转储的
CombatState 枚举,每次单位移动时由 MoveApplier.RefreshUnitCombatState):
- 未察觉 - 闲置或巡逻;它还没看到你。
- 察觉中 - 你的一个单位进入了它的视野。
- 战斗中 - 它锁定目标并开始交战。
单位发现敌人后会进入 察觉中 并携带 惊讶;该效果消退后,它会进入 战斗中。如果敌人在其仍处于惊讶状态时离开视野,它会退回到 未察觉 而无需战斗。被击中会使单位立即进入战斗。
数据表还定义了察觉累积(每游戏内分钟 1,进入战斗需要 5),但此版本的游戏代码从不读取这些数值。
自定义 AI 建立在 Behavior Designer 树上,其距离/视野检查(CheckEnemyDistance, CheckCombatTargetInRange)读取的是相同的网格视野数据,而非三维视锥射线检测。
视野范围 发现半径
视野范围是核心数值。游戏自己的描述:"在单位的视野范围内,可以查看周围区域和发现敌人。" 它身兼两职 - 为己方驱散战争迷雾,也是怪物用来发现你的半径。它以 格 计量,并按视线追踪,因此你和怪物之间的墙会挡住它(VisionDataHandler.GetVisiblePositions).
| 视野范围 | 单位 | 示例 |
|---|---|---|
| 4 | 2 | 无尽深渊格洛斯幼崽, 格洛斯幼崽 近视 |
| 5 | 7 | 火龙爪战士, 刺猬, 稻草人 |
| 8 | 97 | 无尽深渊酸液虫, 无尽深渊酸性斯洛格尔, 无尽深渊蜜蜂 标准 |
| 12 | 2 | 无尽深渊阿尔法酸性斯洛格尔, 阿尔法酸性斯洛格尔 |
| 16 | 1 | 眼球 最远视野 |
数值是下列表中为每个单位填写的
UnitTable。大多数单位能看到 8 格;眼球能看到很长的 16,而无尽深渊格洛斯幼崽近视,视野为 4。玩家方单位默认为 7
(StatusValueTable)。成长表自身的基础值 5
(GAMESYSTEM_Unit_Growth_..._VisionRange)从未被游戏代码读取。
仇恨与威胁 交战,以及谁会被打到
数据表中有两个仇恨常数。游戏代码都不读取它们:
GameSystemTable 的察觉、仇恨范围、仇恨修正、格挡减免和暴击伤害常量,在此版本的游戏代码中未被读取。
- 仇恨范围:数据表显示 8 格。
- 仇恨修正:数据表显示近战 x1.3,远程 x1。
游戏代码通过完整键字符串(SystemVar)读取 GameSystemTable 的数值。所列键在转储中都没有字符串字面量或 SystemVar 属性,因此修改它们在游戏中不会产生任何变化。
没有牵引计时器,也不会走回出生点。战斗中的怪物会返回 未察觉,并在你的任何单位都不在其房间附近、且没有敌人位于其战斗区域内时,丢失目标。
昼与夜 你的视野在夜间缩小
地下城按昼夜时钟运行。白天是 06:00 到 20:00
(GAMESYSTEM_Campaign_DayTimes);该时段之外就是夜晚。
夜间,游戏会给你自己的单位与友军 夜晚,这会使视野范围减少 3 格。怪物永远不会获得该效果:标准的 8 格怪物依然能看到 8 格的夜间距离,而你的拓荒者看得更少。夜视效果会为携带者增加 +3 视野范围。
数据表还包含一个昼夜视野常量(GAMESYSTEM_Campaign_DayNightVisionDiffrence = 3),但本版本的游戏代码从不读取它;惩罚来自"夜晚"效果。
潜行 已描述,未接入
潜行 reads like the one hard counter to detection. The in-game text: "保持未被发现且无法成为目标。如果你对敌人造成伤害,该效果会立即结束。"
潜行药水会给饮用者一个限时潜行效果,但游戏代码中没有任何读取该效果的部分,因此在此版本中,它不会让你隐身、不会阻止被选为目标,也不会在你造成伤害时被移除。 The effect adjusts no stat and no game code checks it, so the hiding and the break-on-damage in its description are not wired up in this build. 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。
感知误区 名称与效果
很自然会以为 感知 属性会拉远单位能看多远 - 名称和描述("磨砺感官")都在暗示这一点。数据并不支持。
什么会提高或降低检测 摘要
以上内容收进一张表。"效果"是从怪物的角度看 - 它有多容易发现你。
| 因素 | 效果 | 数据所示 |
|---|---|---|
| 怪物的视野范围 | 不定 | 每个单位都有自己的视野半径 (UnitTable.VisionRange):从 4 (无尽深渊格洛斯幼崽) up to 16 (眼球),大多数为 8。半径越大 = 它从更远处发现你。 |
| 视线(墙) | 降低 | 视线逐格沿直线追踪,墙体图块会阻挡它(VisionDataHandler.GetVisiblePositions);普通的不可通行图块则不会。在拐角处打破视线即可隐藏你,即使是近距离也是如此。 |
| 夜晚 | 仅限你的一方 -3 | 从 20:00 到 06:00,你自己的单位和盟友会携带 夜晚: -3 视野范围。怪物永远不会获得它,因此夜晚不会缩短怪物的侦测距离。 |
| 夜视 (affecter) | 恢复 +3 | 增加 +3 视野范围 (夜视), exactly cancelling the night penalty. 来源:夜勤人。 |
| 潜行 (affecter) | 无效果 | 潜行: "保持未被发现且无法成为目标。如果你对敌人造成伤害,该效果会立即结束。" 潜行药水会给饮用者一个限时潜行效果,但游戏代码中没有任何读取该效果的部分,因此在此版本中,它不会让你隐身、不会阻止被选为目标,也不会在你造成伤害时被移除。 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 |
| 仇恨范围 | 未使用 | 数据表定义了 8 格的仇恨范围,但此版本的游戏代码从不读取它。 |
| 攻击类型(近战 vs 远程) | 未使用 | 数据表定义了近战 x1.3 和远程 x1 的仇恨系数,但此版本的游戏代码从不读取它,因此近战不会通过它获得额外仇恨。 |
| 感知 (Fortify / Weaken / Elixir) | 无效果 | 尽管名字如此,感知属性实际影响的是物理与魔法攻击、暴击几率和烹饪,游戏将视野范围计算为固定基础值加上效果与装备,不含任何感知项。因此 感知强化 / 感知削弱 (±30%)与 +3 感知灵药不会 不 改变本版本中的侦测。 |
应对方式 实战要点
- 拐角胜过距离。 视线是唯一始终生效的硬限制。墙在任何距离都能挡住你;开阔地不行,哪怕很远。
- 去侦察极端单位。 眼球 (16 格视野) 会从房间另一头发现你,而你可以摸到无尽深渊格洛斯幼崽 (4 格视野) 旁边几格。大多数是 8。
- 夜晚有利于怪物。 夜间你的单位视距减少 3 格,而怪物看得和白天一样远,如有夜视,请携带。
- 不要指望潜行。 本版本中没有任何游戏代码检查"潜行"效果,因此它无法打断接触。