You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
9.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 第33讲 | 热点剖析AR和人工智能在游戏领域有哪些应用
在2014年左右VR、AR、人工智能开始逐渐火热起来我也曾在它最火的时候深入接触过这几项技术。
如果你不是在这个领域从业的话除了VR之外有很多名词你可能都没有听说过那我们就先来看一下这些名词是什么意思。通过这几个名词我们来看一下它们究竟是如何在游戏领域应用的。
## VR是什么
**VR**本身是**Virual Reality**的缩写,意思就是**虚拟现实**。VR相对于AR、MR等技术来说在技术上是最为简单的。简单地说它只需要将3D画面做成可以通过3D眼镜呈现的内容即可那么VR眼镜是怎么播放VR画面的呢
VR基于不同视觉场在局部空间中营造出对不同画面的深度感知在用户的大脑视觉系统中形成一个虚拟现实视场而决定虚拟现实视场的主要因素是透镜而非我们人眼的瞳孔。因此为了得到更宽广的视场制作者需要缩短用户眼球与透镜间的距离或增加透镜的大小。
VR眼镜的结构一般都是透镜加上屏幕成像的方式透镜放置在眼前23厘米的地方屏幕距离透镜36厘米成像在眼前2550厘米左右。
除此之外在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](http://theorangeduck.com/page/phase-functioned-neural-networks-character-control)
除此之外也可以用在一些2D讲故事类的游戏中开放式结局的游戏中有了人工智能我们就可以把开放式解决做得更生动和有趣每个人物的结局都可以是不同的也没有任何死的套路可言但是从某方面讲这个要实现起来也有一定的难度。
## 小结
今天我们讲了VR、AR的知识以及人工智能在游戏中的应用。
AR和VR是对于人们在现实世界的一种增强技术将现实和虚拟结合起来做出更多优秀和好玩的游戏而人工智能则能让人们在游戏中的体验能更好比如智能的NPC行为漂亮的随机地图的生成等等这些技术的应用能使我们的游戏体验能变得更加丰富。
给你留个小问题任天堂出的3DS是最早的一款裸眼3D设备这种技术是怎么实现的呢
欢迎留言说出你的看法。我在下一节的挑战中等你!