一个从敌人中心或者头部发射出的一个锥体,通过设置夹角和长度来控制敌人视野大小
当玩家在视野锥中暴露过久,敌人就会感知到这个空间内可能有玩家存在,以此切换自身状态
这样的设计会出现一些问题,由于视野锥其模型特点的原因,敌人能够捕捉前方远距离的目标,而身侧近距离的目标则无法捕捉
这就导致玩家可以从侧面直接接近敌人身边,而敌人完全不会发现,这是反直觉的
然而,为了让敌人能够捕捉自身周围的目标而一味增加视野范围,可能导致敌人在远距离的索敌能力超出预期
The Last of Us制作团队的解决方法是对椎体进行分层,将敌人视野分为中心视野和周边视野
视野锥的增大并非线性:中心视野的增大是先慢后快的,但周边视野则不被设计为锥形,而是呈现为块状凸起,并且不会拥有和中心视野一样长的距离,总体呈现以下形状:
不同视野承担不同职责:玩家处于敌人视野中时,敌人的某个数值会逐渐积累,当积累满时,玩家就被发现了;而玩家处于周边视野时,这个值积累的会比在中心视野时更慢
2. 视线射线遮蔽(Vision RayCasting)
从敌人眼睛位置射向玩家身体中心的一簇射线检测,来积累某个值,代表玩家是否被敌人发现
为了模拟视线的体积,美末的制作者会发射竖排的三条射线作为一簇。当且仅当所有射线都没有被遮蔽,这时才能判定敌人发现了玩家
同时,视线射线不会仅向玩家身体上的单一位置发射,而是可能根据情况变化位置,甚至发射多条,美末制作人是这么处理的:
当玩家进行蹲下等明显表现出躲藏等意图的行为时,射线仅向玩家胸膛处发射,使得敌人视线更可能被遮蔽
而当玩家站立四处走动时,玩家应该更容易被发现,此时射线会向玩家头顶发射,避免射线被一些低矮障碍物遮挡,因为即便敌人只看到玩家上半身,由于玩家此时并非想要躲藏,敌人也应该发现玩家
我自己的想法是,在玩家四处走动时,也应同时向玩家胸膛下发射射线检测,同理避免敌人只看到玩家下半身却无法发现玩家的问题
值得一提的是,制作者他们也尝试过使用更复杂的视线检测,比如检测玩家身体的各个部位是否暴露,并根据暴露部位的总得分来判断玩家是否暴露,但最终这种方案被否决了。
原因是如此复杂的判断机制尽管可能会让游戏看起来更真实,却让玩家难以判断自己的操作会如何影响敌人;而让一个敌人AI变得更有可信度,最重要的是让玩家能够理解敌人如何理解环境并做出当下行为的。以下是原文:
And we found over and over that the most important thing about our AI seem believable was making the player konw why they made the decisions they made
当视线射线锁定到玩家身上后,会快速积累某个值,数值积满后,就判定玩家被发现,这时敌人一般会持续注视玩家
负责近身战的敌人会追击靠近玩家,而在这个过程中,敌人并非一直掌握玩家的真实位置,像开了透视那样
当玩家躲藏起来,追击的敌人失去玩家视野后,他们不会继续实时掌握玩家位置来继续追逐玩家,也不会停下来装作从未发现玩家
游戏会保存所有敌人失去玩家视野前的最后一个位置,敌人会前往那个位置,并试图在那里重新寻找玩家的踪迹
他们将这个称之为实体,一个十字箭头,他会记录一些目标的信息
并且这个实体实际上在大多数时间里是一直跟随玩家的,并且有不同的状态:
那么实际上,这些东西是如何配合的呢?美末制作人并没有在讲座中给出详细的演示,所以以下是我的猜想:
它负责感知空间内是否有玩家存在,先前提到的两个参数都与这部分有关
当玩家处于中心视野或者距离敌人近时,Quality值高,Full Acq值会以更快的速度积累
当玩家处于周边视野或者距离敌人远时则相反,并且距离远近的判定似乎并非线性变化,而是分段的
当玩家在视野锥中暴露过久导致被发现后,敌人就会向玩家发出射线判定是否可见
当敌人判定玩家可见,他们就会进行追击或攻击,我觉得射线应该同时锁定玩家的头顶和中心,并且根据情况变化
而等到敌人丢失玩家视野,也不需要立刻重新累积Full Acq值;而是正如先前所说的,敌人会追踪到玩家最后的位置来重新寻找玩家
我们能发现,Full Acq,Quality这些值都是与玩家进行绑定的,而非分别记录于单个敌人身上,相当于敌人共享了这些数据
我想这样是为了多敌人的场景而做出的考虑,当玩家暴露在多个敌人视野中时,玩家会被发现的更快,而不是每个敌人都单独感知玩家
同时玩家的行踪信息也是实体,只有当玩家脱离所有人视野后,实体才会停止跟随玩家,告诉敌人这就是所有人最后看到玩家出没的地方
评论区
共 条评论热门最新