在 2014 年左右,VR、AR、人工智能开始逐渐火热起来,我也曾在它最火的时候深入接触过这几项技术。
如果你不是在这个领域从业的话,除了 VR 之外,有很多名词你可能都没有听说过,那我们就先来看一下这些名词是什么意思。通过这几个名词,我们来看一下它们究竟是如何在游戏领域应用的。
VR 是什么?
VR 本身是 Virual Reality 的缩写,意思就是虚拟现实。VR 相对于 AR、MR 等技术来说,在技术上是最为简单的。简单地说,它只需要将 3D 画面做成可以通过 3D 眼镜呈现的内容即可,那么 VR 眼镜是怎么播放 VR 画面的呢?
VR 基于不同视觉场,在局部空间中营造出对不同画面的深度感知,在用户的大脑视觉系统中形成一个虚拟现实视场,而决定虚拟现实视场的主要因素是透镜,而非我们人眼的瞳孔。因此,为了得到更宽广的视场,制作者需要缩短用户眼球与透镜间的距离,或增加透镜的大小。
VR 眼镜的结构一般都是透镜加上屏幕成像的方式,透镜放置在眼前 2~3 厘米的地方,屏幕距离透镜 3~6 厘米,成像在眼前 25~50 厘米左右。
除此之外,在 VR 中,两个眼睛的立体视觉起的作用很大。用户双眼看到的不同图像是分别产生的,显示在不同的镜面上。用户带上 VR 眼镜后,一只眼睛只能看到奇数帧图像,另一只眼睛只能看到偶数帧图像,奇、偶帧之间的不同,也就因为视差产生了立体感。
人的眼睛有两方面用途,一个是判断左右距离,一个是判断前后深度距离。VR 眼镜相当于通过透镜,欺骗了你的眼睛,让你的眼睛认为自己是在真实的场景下工作,而有些人对于距离和景深比较敏感,就会有眩晕的副作用出现,毕竟是模拟真实的效果,而非完全真实的场景。
如何区分 AR 和 MR?
随着 VR 的兴起,AR 也逐渐进入了人们的视野。AR(Augmented Reality)就是增强现实。简单地描述,所谓增强现实,就是利用摄像头或者头盔,将现实世界外部影像结合内部 3D 计算的影像,将内容混合。
比如我们走在一个空旷的屋子里面,忽然在 AR 视觉效果里面,出现一个怪兽,向你扑过来,你需要拿起手柄,将手柄变成武器,将怪兽杀死,这里面就涉及 AR,它将现实中不存在的东西模拟出来,变成增强了效果的现实场景。
至于 MR,它是混合现实(Mixed Reality)。混合现实的意义和 AR 非常相似,比如将现实混合在视觉效果中,这是两者都在做的事情。同时,AR 和 MR 中比较重要的一个技术是定位技术。
基于 2D 定位的是 AR 最成熟的技术。2D 定位是基于平面的识别和定位,比如利用手机 App 拍摄图书中的某个图片,然后虚拟物件就会出现在手机中的对应位置。这种 App 可以识别一幅图片或者图形,作为定位点,随后手机生成的虚拟物体会围绕这个点,融入到被拍摄的现实环境中。
3D 环境的动态实时解析是当前 AR 在技术中最活跃的功能,这其中不得不说的就是 SLAM 定位。所谓 SLAM 就是“同时定位与映射”(Simultaneously Localization And Mapping)。
AR 中的 SLAM 比其他别的领域中的难度大很多,因为移动端的硬件计算能力和资源比起其他硬件平台来说弱很多,所以难度比资源充足的硬件平台更大,所以有一些做法是利用网络交互,到主服务器去计算 SLAM 场景,但是网络交互又有实时性无法保证的问题。计算 SLAM 最好是本地计算,这样才能保证随时随地都能计算,而如果通过网络交互的话,你可能需要等好久才会拿到计算结果。
SLAM 的问题可以这么理解:打开摄像头,你要知道“我(摄像头)在哪”。然后进行定位,定位完后需要对周围的环境进行映射和虚拟环境的构建。然后一边走,一边对周边环境进行虚拟模型的构建,确定本身在所建地图中的定位。所以 AR SLAM 需要在走的过程中,一方面把所见到的地方连起来成模型图,另一方面找到自己在地图上的定位, 这就是 SLAM 的原理。
AR 和 MR 的原理大致一致,不一样的是,MR 是在 AR 的基础上将 3D 物件更精确地展现出来。那究竟该怎么区分 AR 和 MR 呢?有一个方法就是,看虚拟物件是否会跟着真实场景一起动。如果是的话,就是 MR;如果不是的话,就是 AR。
所以,MR 比 AR 更“先进”的地方就是,它看起来更像现实,所以是“混合现实”。当然 MR 还有更多事情可以做,比如它可以让你听到、感受到来自虚拟世界的感受,这是混合现实的另一层含义。
AR 在游戏开发中的应用
说完了这些名词,我们来看一下实际使用 AR 技术制作的游戏吧。
AR 最出名的就是前些年的《PokeMon》和 LBS 结合版本的 AR 游戏,这款游戏风靡一时,可以说是 AR 领域一次比较成功的尝试。它利用 SLAM 技术,结合相机拍摄的真实场景,让虚拟小宠物出现在真实场景下,然后进行 App 端的操作。
VR 就不用说了,现在 Steam 上拥有大量的 VR 游戏,比如前阵子非常火爆的《Beat Saber》,就是一款非常成功的 VR 音乐游戏。还有《刀剑神域》也是成功的 VR 游戏。
但是所谓的 VR 游戏,用到的 VR 头戴式设备,用的其实还是“MR”设备。因为所谓的混合现实头戴设备,就是将手中的手柄,眼里看到的内容进行混合,比如手柄变成剑或者手枪,这就是混合现实的一部分,所以使用 MR 设备也无可厚非。
所以在视觉效果的增强下,目前 VR 在游戏中的使用范围是最广的,其次是 AR 和 MR。
人工智能在游戏开发中的应用
至于人工智能,那也是最近比较火爆的一个行业风口。但是从理论讲,我觉得人工智能、AR、VR 并不会像 HTML5 技术、Flash 技术等一样变成全面颠覆产业的技术,而是会成为各个行业的辅助。
人工智能涉及的领域很多,每一个分支进行细分,都是一个研究课题和研究方向,比如导航当中的语音识别、手机的人脸识别、专家系统、大数据分析、机器学习等等。在游戏领域,能使用到人工智能的地方,或者说最能体现人工智能的地方,就是游戏中的 NPC。
NPC 是最简单,但也是最难做好的。如果做得简单,你随便写几行脚本语言,就可以完成一段 NPC,或者一整个城市 NPC 的编写。但是如果要写得好,利用简易的人工智能,就能将 NPC 做的很真实。
比如《老滚》中的 NPC,你可以看到他走向某个地方去和某人说话,或者你跟踪他一段时间会发现他会和森林里某些野兽战斗。在脚本语言里面,就是大量的事件绑定机制来实现人工智能的功能,比如 A 事件和 B 事件组合出现就可以决定某些 NPC 的行为,比如你可以利用类似代码来作为 NPC 的行为准则。
def foo():
if npc.action == eat and player.action == talk:
npc.action = talk
早几年,我曾经想做一款只有 NPC,没有玩家的游戏。你可以观察它们的生活起居,也就是所谓的“上帝模式”。这样的游戏要求游戏中的 NPC 足够智能,以至于这里面的人工智能需要做一些最基础的判断,类似“自动”的“模拟人生”。然而当我开始编写逻辑代码的时候,就发现事情并非想象得那么简单。
我们先抛开人工智能本身不说。我们首先从 NPC 入手,从编程角度讲,每个 NPC 一定有一个统一的身体和大脑的类,就像“模拟人生”一样。我们先要塑造这个 NPC 的躯壳,有了躯壳,才能填写数据进去,比如他累了要睡觉,饿了要吃饭,渴了要喝水,到达一定阀值就要去做某件事情。
单从一个 NPC 入手的框架都很难实现,就算真的完成了一个 NPC 的人工智能的框架,一个游戏中有这么多 NPC 需要交互和计算,一台普通的个人电脑估计很难运算过来,所以从这点来讲,这个游戏的编写计划就已经很难实现。
我们最常见的就是还有地图生成、人物运动控制等。
我们可以通过学习算法进行地图的随机生成,比如哪些是河流,河流旁边一定有树木,河流旁边不可能有飞机场等等;另一个领域是利用神经网络实现人物运动控制,你如果有兴趣也可以去这个网站看。
http://theorangeduck.com/page/phase-functioned-neural-networks-character-control
除此之外,也可以用在一些 2D 讲故事类的游戏中,开放式结局的游戏中,有了人工智能,我们就可以把开放式解决做得更生动和有趣,每个人物的结局都可以是不同的,也没有任何死的套路可言,但是从某方面讲,这个要实现起来也有一定的难度。
小结
今天我们讲了 VR、AR 的知识以及人工智能在游戏中的应用。
AR 和 VR 是对于人们在现实世界的一种增强技术,将现实和虚拟结合起来,做出更多优秀和好玩的游戏,而人工智能则能让人们在游戏中的体验能更好,比如智能的 NPC 行为,漂亮的随机地图的生成等等,这些技术的应用能使我们的游戏体验能变得更加丰富。