前《永恒之塔》技术总监谈如何使用Unity实现次世代效果 | 游戏葡萄...
图形图像技术CGGraph渲染图形学 9814 364
实名

通过了实名认证的内容创造者

发布于 2015-9-19 13:02:42

您需要 登录 才可以下载或查看,没有账号?注册

x
我想谈谈关于次世代游戏的话题。首先,我们想为用户提供高品质的游戏体验,目前手机主流的3D画面是这样的。

0?wx_fmt=jpeg.jpg


虽然比以前的画面有很大进步,但还可以做的更好看,比如这样的

0?wx_fmt=png.jpg


如果是身穿铠甲的战士,他应该是这样的


或者这样的皮革感觉


所以,我们选择做高品质的次世代游戏。

开发次世代游戏会有2个主要的选择,Unreal 和Unity。所以,我们遇到的第一个问题就是,应该选择什么引擎?

先来看画质对比


这是一个UE4 Infiltrator Demo的截图,品质很高


但PC GPU 性能是要远超Mobile GPU,所以这个demo只能运行在PC 的GPU上,而无法在Mobile设备上运行。那么UE4在移动设备上是什么样的情况呢?以两款三星手机中的画质来对比


可以看到UE4,在高中低端手机上,实现的效果差距很大,那么Unity的情况呢?是这样的


可以看到,虽然有一定差距,但是不那么明显。在苹果家族,iPhone5 以下都只支持OpenGl ES 2.0,也就是低端手机。


经过详细测试,我们发现:


Unreal4在高端设备上表现优越,而中低端设备画质下降非常严重


Unity 在高端设备上没有Unreal4表现出色,但是在中低端设备上画质上较为不错,远超Unreal4的表现。

除了画质之外,在具体开发效率上,Unreal4也不如Unity


总结下:
  • Unreal4 Mobile还属于开发当中,只支持高端设备
  • Unity在中国市面上有大量设备可供支持发挥
  • Unity对程序提供很高的开发灵活度


因此,最终选择了Unity引擎来制作次世代游戏

在确认使用Unity引擎之后,为保证高品质,制定了四个目标
  • 不想修改Untiy源代码 (修改源代码会造成很多不可预测的BUG)
  • 保持高效率开发 (主要是C++性能和C#效率的综合使用对比)
  • 在Unity实现原本无法实现的高品质画质 (重点)
  • 开发美术方便使用的材质系统,且兼容中低端设备(重点)


【在Unity实现原本无法实现的高品质画质】

“在没有源代码的情况下,Unity可以改善到什么程度的画质? ”这是经常钻研的一个问题

先看一些Unity游戏的例子:


《Ori And the blind Forest 》,很好的表现了奇幻氛围 ,虽然是pc游戏,但是如果努力这种程度在手机上还是可以实现


《聚爆Implosion 》,不足之处,安装包超过1.3G。

如果想制作同样水准的次世代品质的作品,安装包又希望只有100-200MB,这是一件很有难度的事情。我是这样解决这个问题的。


以这个Unreal4 Mobile中的场景为例,Real HDR(HDR = High Dynamic Range)是如何实现的呢?

先来了解Unreal4的实现机制


如果在中低端设备就会出现这样的情况


所以,中国市场超过90%以上的安卓机型,次世代游戏都会因为信息的缺失而无法显示HDR效果,导致巨大的画质下降,怎么办呢?我们想了一个办法,“用RGBM 形式将曝光的luminance 信息储存在alpha当中”


然后“利用储存在alpha的luminance,以它为基础进行了bloom,使得最终达到HDR效果 ”


这样,在中国市场绝大部分安卓手机也能实现HDR效果,如下图


这样的方案,也会有一些局限性,比如:
  • 超出的颜色信息会消失
  • 因为只用Luminance去处理,所以无法实现高饱和的亮颜色(例如强烈高亮的蓝色)
  • BLOOM效果之外是否可以Tone mapping还是未知 (之后会去尝试)


不过优点更明显
  • 绝大部分硬件支持
  • 因是使用8bit per channel render target,所以消耗很少的fill-rate,不太占资源,游戏运行时候有更好更高的效率 (对于游戏优化很重要)


【开发美术方便使用的材质系统,且兼容中低端设备】

要制作次世代游戏离不开好的材质系统,好的材质系统能实现这样的效果


人物的皮肤质感


因为Unity自身没有提供方便美术开发者灵活使用的材质系统 ,所以只有2个选择
  • 去Asset Store下载第三方工具(Unity5 开始支持Standard Shader)
  • 程序制作Shader


第三方工具Shander Forge(U3D商城有售),虽然这个工具
  • 以Node based 方式制作Shader
  • 和Unreal一致的UX (操作界面)


但是最大的问题在于,在中国市场大约30%的苹果设备,和80%的安卓设备都会报错,而不会正常显示


再加上美术缺乏编程常识,一般为了好效果,最后都会构成复杂的node


而不是这样的


所以,我们放弃了Shader Forge ,而官方Standard Shader目前最大问题是其在移动设备上的性能很低 ,只能等之后版本改善再使用


在测试之后,对于材质系统结论就是:用美术易懂的方式,程序来制作Shader,而后提供给美术使用是最好的方式

所以,我们决定做一个兼容中低端移动设备的材质系统,并规定了三个原则
  • Shader的优化责任是在程序身上
  • 让美术人员在有一定限制又能较为自由的去使用它
  • 程序制作局部的部件,美术只负责合理组合使用这些部件


在最初开发的时候,第一次尝试使用的是Uber Shader 方式:
  • 在一个大的Shader上使用所有效果,然后用#if 语句选择使用哪一个
  • 优点:程序容易控制(容易写)
  • 缺点:效果组合多,Shader的总量增大


效果越多,代码量越多,最终无法灵活管理臃肿的Shader代码


所以,现在我正在开发新的方法实现:Micro Shader + Node Class Hierarchy


为了适应中国复杂的设备环境,我还特意开发了能够根据设备配置不一样,实现自动匹配不同的材质效果。我想这样能够减少程序员和美术的工作负担。


后面还有更长的编辑器、演出系统和程序开发经验,但篇幅有限,这次就分享到这里。虽然我是韩国人,但是我很喜欢中国,如果对于我们这款游戏的相关次世代技术,有想交流和咨询,或在北京深圳愿意和我们一起开发做高品质游戏的,都可以加我合伙人的微信号zhangyangqi咨询。

本帖被以下画板推荐:

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
Zeson  发表于 2015-9-19 13:33:27  
2#
谢谢分享~~~
回复 收起回复
使用道具
鸡毛掸  发表于 2015-9-19 14:01:03  
3#
为了元素币,拼了!
回复 收起回复
使用道具
luanyushengyan  发表于 2015-9-19 15:20:52  
4#
元素帖子强,满满正能量!
回复 收起回复
使用道具
碟中谍  发表于 2015-9-19 16:37:17  
5#
高端大气上档次,低调奢华有内涵!
回复 收起回复
使用道具
a3657896  发表于 2015-9-19 19:34:55  
6#
带你赚币带你飞,元素里面有正妹!
回复 收起回复
使用道具
qqwwee  发表于 2015-9-20 00:03:04  
7#
给力!元素有你更精彩
回复 收起回复
使用道具
qqwwee  发表于 2015-9-20 00:03:04  
8#
给力!元素有你更精彩
回复 收起回复
使用道具
aoao  发表于 2015-9-20 08:49:18  
9#
元素帖子强,满满正能量!
回复 收起回复
使用道具
maomao1210  发表于 2015-9-20 17:27:03  
10#
元素帖子强,满满正能量!
回复 收起回复
使用道具
maomao1210  发表于 2015-9-20 17:27:07  
11#
元素那么大,我想来看看!
回复 收起回复
使用道具
maomao1210  发表于 2015-9-20 17:27:16  
12#
元素帖子强,满满正能量!
回复 收起回复
使用道具
maomao1210  发表于 2015-9-20 17:27:48  
13#
给力!元素有你更精彩
回复 收起回复
使用道具
maomao1210  发表于 2015-9-20 17:27:51  
14#
高端大气上档次,低调奢华有内涵!
回复 收起回复
使用道具
maomao1210  发表于 2015-9-20 17:27:57  
15#
元素帖子强,满满正能量!
回复 收起回复
使用道具
学习之路  发表于 2015-9-21 09:56:25  
16#
感谢分享,学习了!
回复 收起回复
使用道具
blueice0  发表于 2015-9-21 15:14:28  
18#
好资源,mark
回复 收起回复
使用道具
443876058  发表于 2015-9-21 21:03:31  
19#
666666
回复 收起回复
使用道具
Sunfound~!  发表于 2015-9-27 20:06:07  
20#

元素帖子强,满满正能量!
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表