哨兵“看到”的,并不是屏幕上它前方的一切。视线是定义在棋盘的图上的,是一条边链。本页说明这条链如何构成,又在哪里中断。
边链如何构成
监视的单位从自身所在的节点出发,伸向它所面朝方向上的相邻节点。从那里起,沿着朝同一方向延续的边继续前进,然后是下一条。关卡数据为每一对边定义了其中一条是否为另一条的延续;边链就遵循这种关系。
边链进入的每个节点都受监视。没有距离上限——它一直延伸,直到被什么东西截断。
边链在哪里中断
有三种情况会让它停下:
- 遮挡物。 带有
blocker标记的节点:摊位、墙、岩石。视线无法越过它。 - 拐角。 在该方向上没有延续的节点。路径拐弯,目光不会拐弯。
- 关闭的门。 在收集到对应钥匙之前,门边既挡住移动,也挡住视线。门一打开,边链就开始穿过——这正是开门有时既缩短路线、又同时让棋盘更危险的原因。
躲藏
站在带有 hide 标记的节点上,对视线检查是不可见的。即使有边链从该节点上延伸而过,也找不到玩家。接触规则依然适用,但敌人本来就绝不会踏上藏身节点——这一保证由引擎强制执行,所以即便关卡数据写得再糟,也无法打破它。
被制伏的单位看不见
敌人被制伏后,同样不参与视线检查:它的边链不会构建,所以再也看不到任何人,也无法拉响警报。处于被引开状态的单位同样只能看到自己所站的节点;参见铃石。
为何没有自由几何
因为脑中能构建的模型,必须与求解器构建的模型一致。基于角度的视线系统在屏幕上好看,却使人无法看一眼棋盘就确定地回答“我在这里安全吗”。
有了边链,答案是可数的:顺着节点走,看到遮挡物,就知道了。
威胁高亮
开启威胁高亮后,画出来的正是本页所述计算的结果。这不是近似;看到的边链,就是被检查的边链。
下一个问题:站在边链之内,是否始终意味着同一件事?不——参见捕获。