利用统一代理感知模型增强游戏体验

28 4月

随着游戏设计开发技术的提升,加之游戏设备性能的上升,玩家越来越期待更逼真、更真实的感知。而代理感知模型就是一种简单的方法,具体而言包括了听觉模型和视觉模型。

简单的感知模型容易让游戏本身无趣起来,最常见的例子就是利用离散距离来检查实现。这种情况下,玩家可以很容易的利用绝对盲区将AI逐一击破。

这是一些简单的改进方法,基础但是可以提升AI的“聪明”程度。

基本视觉模型

先来看看基本的视觉模型。一般依次使用这三种计算,分别为视距、视锥和视线。

视距是一个相当廉价的计算,一般情况计算平方从而避免平方根。

举例而言,一个代理的视距最远为5个单位,而它的坐标为(0,0,0),当玩家位于(4,2,2)时计算结果为16+4+4=24<25,所以代理可以看到玩家。

视锥测试是一个中度计算,因为需要一个向量归一化,然后进行点乘。如果结果大于0,那么玩家位于代理的180度视锥内;如果结果大于0.5,那么玩家位于代理的120度视锥内。

最耗时的是视距计算,这需要从代理起点计算一个通往玩家的射线,这需要考虑到高度还有中间的任何障碍物。

说明图样

基本听觉模型

听觉模型是一个很划算的东西,一点点简单的处理可以让游戏体验上升一个档次。

最基本的听觉模型是基于位置的,随着代理和玩家距离的变化调整声音的音高和音量。

其次就是基于障碍物的处理,比如代理位于封闭性障碍物附近,那么玩家听到的声音就会有回音和混响出现。这些的实现可能比较复杂,但是SoX项目可以简单做出很好的效果。

椭圆视觉模型

基本视觉模型简单,但是有些生硬和不合情理。比如代理不应该看到正右方的玩家,代理应该在近处有一个较大的视野,而远处应该不断的模糊。

当然这个问题可以使用多个视锥来叠加,可以部分解决视野的问题。

多个视锥

一个小的大范围视锥,一个长度很长的小范围视锥。

不过这样的计算会多一些,因为毕竟多了一个视锥,而且视锥与视锥之间有一个缺口。

使用一个长型椭圆就可以解决问题了。

长型椭圆

椭圆不经可以增加真实度,还可以简化元素,因为判断一个我们只需要计算几个三角函数就可以解决绝大部分问题。计算焦点距离,和2a比较,不再需要平方。

确定性的视觉增强

真实的眼睛其实没有很明确的看得见与看不见,而是更多的出于周边视觉的情况下。

人的眼睛有两只(废话…),大约有200度的视觉范围,其中110~120度是重叠区域。当查看身后的时候,杆体细胞和视锥细胞会产生颜色和运动的敏感问题,就是说你对眼色反应很少,但是移动的东西却很明显。

简单的确定性模型

这其中的数字代表百分之多少,当100%能够辨识时,代理应该采取完全行动,比如高精度射击;当70%能够辨识时,代理转向以获得更高的辨识或者采取低精度射击。

当然这个区域划分很简陋,但是我一直使用这个。如果你愿意,代理的集中度也可以影响辨识度。

确定性的听觉模型

听觉的模拟可以引入举例,但是单纯的举例会让人困惑,特别是在室内环境中。

听觉的确定性模型和视觉类似,当100%辨识度是玩家能够听到,当辨识度下降时音量等开始变化。

辨识度本身可以和音源区域,障碍物质地大小等等相关。

听觉模型的另外一个挑战是遮掩和淹没问题。

当脚步声出现时它是否会被枪声所淹没,当枪声响起时它是否会被路过的汽车喇叭淹没。

统一感知模型

在我们拥有了两个确定性模型以后统一模型就简单了,辨识度可以取最大值,比如max(v,s)或者二者的和v+s

如果听觉系统并不是游戏的重点,那么你可以考虑比例听觉模型,辨识度可以为v+0.4s

真正的统一感知模型不应该只有两个系统合成,我个人认为添加一个记忆系统可以创造很多有趣的现象。

比如玩家被100%辨识以后移动到30%辨识区,那么记忆系统的合成可能产生一个60%的辨识度。这样就可以出现藏匿和警觉等情况,玩家会用更创新的方法来诱骗代理,这样可以极大提供真实性和质量。

参考文献

Sox Project

发表评论

电子邮件地址不会被公开。