【观点】腾讯杨拓:如何使用UE4开发VR游戏

 

UE4对于VR游戏开发又怎样的帮助呢?...

点击关注,获取更多中国虚拟现实产业联盟VR体验活动
摘要:5月27日,2016腾讯GAD全球游戏开发者峰会在北京国际饭店举行,超过1700名游戏开发者参与。此次峰会以“链接·生态”为主题,超维星球作为战略合作伙伴,中国虚拟现实产业联盟作为智力支持,联合主办VR论坛。
本文观点出自中国虚拟现实产业联盟作为智力支持,腾讯Gad  、超维星球联合主办 【腾讯Gad全球游戏开发者大会VR论坛】

2016年2月,知名游戏制作团队EPIC Games宣战游戏开发引擎Unreal Engine4将在新版本中全面支持VR游戏制作

UE4对于 VR游戏开发又怎样的帮助呢?
腾讯游戏高级游戏美术师杨拓先生分享了主题演讲:《如何使用UE4开发VR游戏?》

演讲开始杨拓先介绍了项目的背景,VR项目是光子内部的一个VR的游戏,考虑到使用UE4整个产品它对质量品质要求很高,现在完成度还没有达到这个要求。

腾讯自己有自己的游戏发布的一个审核的标准,做的不是一款DEMO,而是整个游戏,就需要对整个游戏的一些技术方面是要能够通过各个通道的专家的一个审核,要禁得起他们的质疑和拷问。

所以这个游戏的时候也要考虑到美术资源的管限是不是很快的开发出一款产品游戏出来。

接下来杨拓对要分享的这三个部分做了简单介绍:

第一部分,描述一下我们的游戏在VR上面使用的一些决策。

第二个部分,从图形程序员角度来描述在开发VR的时候,在优化和集成图形品质上所做的事情。

第三部分,如何使用UE4来开发AI,也就是人工智能。

因为之前也很少涉及到AI这部分,网上的资料对AI这部分讲得也不是很深。

Uf4

一开始杨拓向大家解释了为什么他们的团队现在UE4。

第一点出于这个图形的考虑,最开始是把虚幻4比较有名的太阳神庙的场景完全移植到了这上面,渲染效果对比只是简单的物件对比,基于物理渲染的话,不光是要有基于物理的材质,还要有基于物理的光照,包括反射效果,UE4这方面很明显。

第二个,UE4上有很成熟的DEMO。

第三个,需要去支持不同的VRSDK的支持,因为VRSDK本身更新的很快,如果要不断的跟进版本的话,需要引擎也需要不断的更新,而大家用过Unreal Engine的话,它每个版本都有坑,UE4的版本相对稳定一点,哪怕它有漏洞也可以对它进行一些修改。

设备决定玩法

在玩家操作部分,它的头戴显示和控制器的设备是不同的,设备决定的玩法。

首先是视角,因为考虑到当时的子弹列车已经是一个非常完善的一个DEMO,包括它的操作,包括它的移动方式,我们就没有必要再自己重新做轮子,所以我们很多一部分都是参考了它的特性。

头戴的显示只能到两只手和头,使用联机以后,实际上看到它的手会产生抽搐的现象,有时候在双人玩家合作的时候可能不太在意,可是由于你是竞技类的对战的话,如果你的对手突然抽搐的话,也会影响你的心情和影响你的射击命中率。

所以我们在游戏里没有加入联机。

第三人称

究竟第三人称能不能使用呢?

杨拓也是参考了一些尝试。

首先第一种是角度没有变化。

就是说它其实是一个玩家可以的移动头部,也可同时操纵角色去前进,当角色前进的时候,他会带动玩家的头部往前走,这种模式下,玩家可能不到十分钟就会产生很强烈的眩晕感。

第二个是参考了Lukey sTale,它是不断向前走的,它是一个比较远的镜头去控制。

是把相机的距离拉得很远,类似于前面谈到的小狐狸那种方式,这种它的眩晕感不会有什么眩晕感,但是因为它距离的操作决角色也很远,所以也不会有太高的沉浸感。

第三种方式,它是一个类似于解密类的方式,在场景里找不同的解迷的要素,把它拼接在一起,这种情况下,因为玩家需要频繁的去旋转头部,去找东西,很快也会有眩晕的。

第三种类似于解密类的方式。

在场景里找不同的解迷的要素,把它拼接在一起,这种情况下,因为玩家需要频繁的去旋转头部,去找东西,很快也会有眩晕的。

第四种类似于第二种的一个延伸版,它等于还是第二种的模式,只不过把镜头拉近了。

类似于把相机的距离和玩家的头离得距离更近了,这样并不会造成眩晕感,虽然现在这操作很大程度上只能是往角色的深度的方向前进,但是也是一个第三人称操作的一个很好的范例。

分辨率渲染

制作场景的时候充分的利用关卡的特性,一个是借助英伟达多分辨率技术,这种技术主要用进处的物体用较高的分辨率渲染,远处的用较低的分辨率渲染。

在制作场景的时候也要充分考虑这一点,在策划制作规范这个流程图的时候,就要考虑到告诉美术哪个部分是玩家经过的。

美术就会把这些必要的部分做得精确一些,远处的物体就细节稍微低一点。

 

技术美术作为技术美术的杨拓对整个项目起到了性能的优化和表现的提升的作用。

但技术美术的日常是什么样子的呢?

UE4主要的一些特性和各种功能的引用是由技术美术师来负责,技术美术师会关注像图形大会,以及日本的电技娱乐相关的知识。

这就是技术美术的一些主要工作。

除此之外,还会把先进的技术引用到引擎里,不光是技术,包括整个的美术资源的制作,有一些特殊的效果,需要在程序和美术方面寻找突破口,选择一种成本最低的方式来达到我们的要求。

 

图形程序优化





UE4的选山因为是双眼的缘故,这样对性能的消耗非常大,如果可以对应的底层的渲染去关掉一些特性的话,实际上G8消耗会少很多。

奥克鲁斯(音)如果大家了解,他可以支持很多的动态光源,如果大家感兴趣,可以去他的官网看一眼。

另外一个在程序方面比较重要的优化,就是材质的使用。

绘制一个物体除了需要对这个材质所有使用的切实进行提交,UE4它很多的变量只需要一个调用就可以把所有的变量提升。

但是因为提交是每桢都要进行的,虽然它的提交次数只有一次,但它的消耗要维持的,如果不是非常有必要使用这个材质实例的话,尽量把一些材质的功能用一个单独的材质实现。

如果你材质里头使用了一些衣服的状态切换的功能,实际上会编辑成两份,你使用越多,编辑的次数越多,这一点也是需要注意的。

物理渲染

物理渲染还是开始被关注,主要是在2010年的时候,那个时候有了一个专门的网站去讨论这个知识,那个时候物理研究院的龚敏敏先生也分享到国内的网站上。

物理渲染技术在国内技术人员方面都是有很长时间的了解。

物理渲染涉及到非常完整的管限,最核心的是它的微平面反控模型,实际上它的所有表现的还是镜面高光的效果。

希望美术制作资源的时候和制作场景打光的时候,也要充分考虑到如何把高光的表现表现出来?

具体的钢需要支持现在游戏的一些标配,而且要支持高光的时候,实际上这东西就是一个反射的表现。

注意高光使用的过多会涉及到会有一些闪烁的效果,那就需要做一个高光的反走样,这样对性能也是一个很大的消耗,如果没有特别需要的话,还是要在场景里控制住你的高光,在该使用的时候再使用它。

可以利用点光源修改它的形状和大小来模拟灯管的效果。

已经使用的渲染实际上保证你引擎可以支持大量的动态光源,我们可以拿动态光源做一件事情,当我们光照烘焙的效果不是很好的时候,我们可以打一些没有点光去弥补这种反弹效果。

基于物理的后处理,因为模拟的是人眼而不是一个相机,所以像传统相机里头的,像景深屏幕光斑效果可以不要,但是这个常用的是曝光补偿的问题。

因为图像渲染以后,有可能会产生一种过白或者过暗的效果,需要做一个自我修整,就是用来处理这个的。

可以在不同的光卡里通过蓝图调用不同修整的效果。

最近的4.1里头,这里它GPA提供了最新的渲染,但是它并没有提供足够的资源。

我们这边把他们的游戏破解出来,然后重新分UA,重新导入到我们的场景里去对整个的使用做一个规范,然后再把规则交给我们的美术去制作资源。

现在很多的3DUI可能很多都是3D的模型的UI,所以有的时候也会去破解分析一下他们的绘制方式,给我们UI的设计师一些技术方面的指导。

游戏AI

AI重要有三个原因:第一部分首先是玩法方面,第二部分是渲染方面,第三部分是它的性能方面。

VR渲染对GPU的负载要高,而且在CPU这一起也很高,如果想丰富玩法,可以利用到UE4很多现成的功能,游戏现场做一些文章。

果开发一款手机游戏的话,可能在渲染方面很难有突破,但是可以在AI的玩法方面做出一些突破。

想参考一个比较成熟AI的方案,不但要有好的方案,还需要有足够的资料。

程序也要去考虑如何实现这些功能,考虑比策划要多很多,比如模块的效率,模块的安全性等等各方面。

实际上要求需要更多的资料。

 

“在AI这方面主要一个学习的过程,第一步我们从GDC和IAPPRO找了大量的资料,但是它并没有关联到很多跟编辑器有关的,而我们UE4是根据编辑器开发的。最后我们参考的是什么呢?”

会议上杨拓给我们分享了他的AI学习过程,并带来一段视频为我们分析了史格威尔的AI特性。

史格威尔的AI特性

需要强烈可视化的编辑跟调试的工具。

需要AI根据扩展和数据的备份。

作为一款游戏还需要有剧情有事件有任务,需要策划可以很方便的把AI细致运行打断,去插入一些行为。

“当我们已经确定的一些基本需求以后,我就要一项一项去解决,首先第一点我们要去决定这个AI的决策模型的制定,就是AI去模拟行为的一个模块,我们常用的角色模型一个基于行为数的,可能有基于有限状态机的,或者是基于规则的。

但是最终幻想实物里实际上是一个混合体,大家知道UE4它的AI只支持行为树。

这边右上角这张图就是它的分层有限状机的例子,它有若干的状态机,每个状态机还可以链接更多的状态机,如果我把这张图给转90度以后,实际上就是右下角这张图,包括光环3的时候也把这个东西定义为行为树,把整个用这种分层的行为树模拟它分层的有限状态机的模式,我们如果需要增加一个状态的话,我们只需要增加一个子行为树就可以解决问题。

最后我们所有的角色等于是统一有了一套行为树。

另外考虑到性能方面,我们大部分行为树的节点都是用C++实现的,也许也保证的行为的效率。”

UE4编辑调试功能

UE4里面几个编辑跟调试的功能,它实际上以打开UE4的一个行为树,再运行游戏的话,可以看到行为树的变化以及黑板的变化。

也就是说在编辑器里打开AI调试然后运营模拟,这样会在整个屏幕上显示出AI的视觉以及听觉效果,还有各种行为树的状态。

AI和蓝图以及C++也有非常紧密的关系,UE4动态蓝图是C++与新的动态机的一个混合体。

通过使用了几个特性,以及是它的子状态机的模式,就是一个状态机可以嵌入很多状态机,它在开火的时候这个角色是一个抖动的动画。掩体系统

玩法方面最主要的核心就掩体系统,AI是从游戏世界里获取信息交给AI的这个角色模型去制定它的行动,最后再通过AI的控制器把它的行动反馈给游戏世界是这么一个流程。

那么掩体系统就是把场景中可以作为掩体的一些物件的信息反馈给AI。

掩体系统也是玩法的核心系统。

比如说我们的VR游戏,那么玩家是可以做出一些下蹲的躲掩体的行为,我们可以让AI对玩家进行一些急火的攻击,玩家可以蹲下来,获者顺移出去躲避攻击。这样也强迫玩家利用他顺移动功能区对敌人技术攻击。

掩体系统其实也是第三人称射击的系统。

当时没有人做过这个掩体系统,所以参考了很多方面的资料,第一个是光环里面的,它叫做定位系统。

可以看到场景里有很多不同颜色的方块组成,每个块可能就是它的一个走点,但它这个有一个问题,光环里头并没有一个掩体射击的行为,它所谓的掩体行为就是一个敌人可能会走到掩体后头躲避完以后再从这个掩体走出来再继续射击,这样并不是我们当时想要的。

它的好处在于它的这个位置系统对于团队合作是很有帮助的,它的掩体是分成不同颜色的,一组颜色块是AI里的一个小队,所有颜色的AI会有一个战略行为统一去进行作战。

杨拓参考了顽皮狗最后生产者的掩体系统给大家继续讲解到:

它的掩体系统主要是给玩家准备的,它通过两个点拉成一条带子出来,然后把这部分完全就定义为掩体,而具体玩家怎么去判断它是玩家呢?

它会投射一条线动态去判断这个掩体的形状,等于它是程序化的掩体系统。

这个对我们当时来说实现起来太困难,而且这个东西并不支持AI,所以我们也把这种方式放弃了。

最后我们选择的是战争机器三的掩体系统,这里我要对它做一个简单介绍,首先右上角这张图里绿色小人的图标叫做CoverLink,然后它还会包括CoverSlot,就是它把后面整个掩体的信息给代表出来,这个红的一个CoverSlot是否能够翻越?

或者从右侧射击,这个都是通过图标显示的。

我们在我们的系统里继承了这种,但是这里有一个问题,因为这种掩体系统是给AI和所有角色同时使用的,所以它的排列非常紧密,因为它保证玩家在掩体后面活动的时候都可以获得掩体信息。

最后解决是全境封锁,全境封锁的掩体是分为掩体位置跟非掩体位置,它的特色是说它有一个掩体的屏幕系统,那么这个屏幕系统作用是什么呢?

比如我们一开始设计的时候,一个敌人在一个掩体里头他为什么会走到另外一个掩体里?

我们设计当初是它向玩家最近的系统走。而全境封锁里它的方式是什么样的呢?

它会根据玩家所在的位置对他视线内所有的掩体做一个评估,他走到下一个掩体点是否会被玩家攻击到?

或者他在新的掩体点上是不是可以距离玩家最近?

这些算法都会影响到掩体的平分,然后AI具体查询顺序的时候会查找可视范围内最高分数点,实际上往视线的范围外走,这个我们也是完全引用到我们的AI系统里。

最后方案实现掩体跟非掩体系统。

掩体非常简单,玩家可以在掩体后面移动。

非掩体是一个大概四平米的一个区域,AI可以在这个区域内进行随机移动的方式,或者只把这个非掩点作为一个走点。

VR游戏玩家是不可以随便走的,和顺移动位置有限的,采用的预计算的方式,把玩家可以走到的这些顺移点都做了预先的计算。

UE4有描述器行为。

最后实现AI只用了一套行为树就支持了所有AI的创建,对于维护和量产来变得非常方便。

把所有的表,所有的参数所有一个表去提交给策划,而且也准备的一些预设的值,策划只需要在这个表里面填写AI的行为之后,当AI的控制器初始化的时候,他会给自己AI行为树的变量去复制,当它的AI行为树跑起来的时候,会根据具体的数值走不同的分支。

AI动作的表现有两个方面,一个是利用动画的一些技术,比较简单的可能会用到动画混合,动画分层,还有利用动画树去表现不同的状态。

一个AI不一定就只有一个战斗状态,它实际上是整个的战斗循环。

当战斗循环以后有一个侦查模块,这里面UE4也提供了一个非常完善解决方案,它自己有一个可以模拟听觉跟视觉的这么一个模块。

我们参考了神秘海域4的分级的警告等级,的警告等级可以根据不同的声音产生不同的威胁值。

低层次指令

在全境封锁里叫做低层次的指令,当AI有一些功能达不到策划的需求的时候,那么策划可以把这个AI暂停或者挂起,这个时候策划可以用UE4自带的蓝图功能区别操作这个AI具体实现一些功能。

比如走到哪里去?或者播一段特别复杂的动画,另外挂起还是保证AI在运行,这样策划可以运行AI控制器的行为,比如说射击追随敌人做一些行为,他会把AI重新恢复,黑板里也会保存这个AI在挂起前的一些记忆。

除了VR这部分内容以外,杨拓讲到他实际上还开发了一款传统的家用机(音)的游戏。

除了渲染以外,具体的游戏逻辑可以通过国外的最新技术去缩短与它们的一些差距。

他认为现在的VR技术其实除了是VR的一个发展,也是PC游戏的一个发展。

VR游戏,它的时长还是比较短的。只需要做一个30分钟长的一个场景,在这期间内可以不断区别打磨模块,去完善系统。

如果要做一款家用系统用几十个小时,这样在国内是很难实现的。

而且还面临国外的竞争,他们都有自己VR的一些研发的团队,如果当VR的这个技术成熟以后,当VR这个技术成熟以后的话,他们投入到这个VR的产品也是很快的,对我们也是一个很大的挑战。

很多人觉得现在的PC也好,现在的家用机也好,已经开始没落了,但是作为一个30多年游龄的玩家,以及十多年来一直关注产品的开发者来说,杨拓表示内心还是希望中国的家用机有复兴和崛起的哪一天的,但是这不是某一个人和一个公司团队来解决的问题。

最后杨拓这样告诉我们:

其实机会是留给有准备的人的,也希望通过GAD这个平台,当你面临机会的时候,你可以从这个平台获取足够的知识和资本去把握这个机会。



【关于“中国虚拟现实产业联盟”】

2016年3月30日,在工信部等国家部委支持下,在中国3D产业联盟虚拟现实专业委员会基础上,联合虚拟现实领域政、产、学、研、用、检等100余家骨干企业机构,共同发起成立"中国虚拟现实产业联盟",并于4月9日,在工信部主办的CITE2016上,举行揭牌仪式,标志着中国虚拟现实行业,首个国家级官方组织正式成立。

首批加入联盟的企业包括:华为、盛大、迅雷、中手游、掌趣、上方传媒、长虹、康佳、创维、乐相、联发科,强氧、浙江水晶光电、深圳市瑞立夫、中视典、东莞永泰电子、利亚德,赛欧必弗、深圳市基伍智联、协创数据技术集团、南昌VR产业基地、第二空间、北京身临其境、星宇时空、科普动漫文创产业园、黑晶科技、爱客科技、蓝科互动、美屋三六五、朗迪锋、清显科技、浙江大学、北京大学、深圳华龙迅达、北京犀牛数码、大连博涛、橙色海豚、兹曼软件、星火互娱、中青宝、苏州蜗牛数字、广州励丰、帅映、数字王国……
入驻“中国虚拟现实产业联盟”请咨询他 ↓
Tel No:13810305952
从3月开始,超维星球、中国虚拟现实产业联盟“全民体验计划”开启,即刻招募最好玩的VR产品。
参与方式(点击以下标题):

关于“VR产品如何能做到100万+用户”的统一回答

拓展阅读
在超维星球微信后台(chaoweixingqiu)回复相应数字,获取干货文章。

【66】VR媒体联盟成立,联合第一批40余家媒体引爆极致价值

【67】【盘点】2016 CES Asia有哪些惊爆眼球的黑科技?
【68】超维星球与爱应用达成战略合作 中国VR/AR游戏产业联盟接轨国际

【69】关于今天证监会与VR这件事,我们汇总了你想看的事件始末

【70】中国虚拟现实产业联盟会员服务:构建军民资源共享机制,打通“军民合作渠道”


    关注 超维星球


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册