【技术贴】实例分析《仙剑六》的优化问题

时间:2015-07-14 00:00 作者:sorrow930426 手机订阅 神评论

新闻导语

仙剑执行效率为什么这么低?我作为一个较为熟悉Unity3D的学生(对,因此如果有一些错误观点,请毫不客气的指出来,我会虚心学习),就把仙剑6中一眼就能看出的一些奇葩制作方法给大家讲述讲述.

仙剑执行效率为什么这么低?我作为一个较为熟悉Unity3D的学生(对,因此如果有一些错误观点,请毫不客气的指出来,我会虚心学习),就把仙剑6中一眼就能看出的一些奇葩制作方法给大家讲述讲述.

一.我TM为什么会入仙剑6.

本来是不打算买的,但是不小心看了洛妹子的海报,女扮男装,并且长得很像以前喜欢的一个妹子,由此令回忆起了往事,感慨万千,又好奇女子身份被拆穿时是怎么个故事发展,所以买了。

至于往事,是这样的:我曾经喜欢过的一个妹子,她是个蕾丝,然后我送她去机场接她女朋友,然后我默默离开了。故事完毕。

虽然我因此而入了仙剑6纯CDKEY版,但是在买之前,我首先把巫师3的钱付了,然后才入的仙剑6,不然我心里会很过意不去。

二.关于Unity

Unity是一个易于上手的引擎。但不可否认,它在渲染和执行效率方面,同虚幻和CryEngine等大型商业引擎比起来,还是不行。哪怕是现在已经进化到了第5代,依然不及上述两款大引擎。

它的主要优势在于:

编程语言主要采用了C#和JS, 而虚幻和CryEngine采用的C++,Lua.对于程序员的要求要低很多。

你能很方便的购买到第三方扩展包,来实现你希望实现,但是你没那个能力或精力去实现的功能。这些扩展不只是美术资源,更多的还有程序上的扩展。

它能达到的性能“下限”是很低的,只要控制得当,运行一些画质一般,美术风格独特的画面,对配置的要求是极低的。然而大型引擎在这上面,由于默认已经加入了很多高等特性,工作流程上很多部分已经脱离了对底层的把控(例如可视化编程,节点化的材质编辑器),因此他们虽然在高画质下,效率远超Unity,但在低画质下,是很难达到Unity的运行水准的。

总结起来:Unity就是一个对开发人员要求低,更加适合去做一些画风独特但画质一般(画风和画质,一定要分开)的游戏。

三.仙剑为什么看上去画面糟糕:

仙剑完全没有用上全局光照,只使用了SSAO,甚至连光照贴图都懒得烘(最低特效下,没有任何阴影,而如果轰了光照图,最低特效下也应该存在),而且还是Unity自带的那一堆廉价特效包里面的SSAO。而全局光照,已经在Unity5中开始支持。

没有调节材质。嗯,其实是根本就没有材质。通篇只有Diffuse材质,默认水材质和粒子效果用的材质。其中粒子效果用的材质极其混乱,很多一眼就能看出来自Unity商城中. 若材质是合理调节后的,那么对于一个主角而言,身上的布质,皮质,皮肤,金属部分,是有非常明显的反射区分的。

 ref.jpg (不做材质,什么质感都是放屁)

总结起来:美工只会画贴图。所以想做次世代之前,还是稍微请一两个对传统渲染懂行的人,他们对于材质的理解,不是一个二维美术一晚上就能理解到的。

四.仙剑为什么执行效率低。

滥用点光源

游戏中给我最大的感触就是,这尼玛点光源已经滥用到一个境界了。首先每个角色头上一个点光源。其次一个地牢场景中,一条路上全是点光源。而且这些点光源都是Important的,它们会进行像素级别的渲染,产生投影。这在CryEngine中都是大忌,更别说一个Unity。然而这些效果之薄弱,恐怕普通玩家根本就看不出来吧?但是你看不出来,不但表电脑就没计算这些玩意。就更别提特效中为了凸显特效华丽的点光源了。战斗中爆卡?这就是原因之一。

(仙剑6中的点光源应用)

(巫师3中的点光源应用。如果点光源代表了画质,那么巫师3画质真他妈没情怀!)

没做Culling和LOD

在有些大型场景中,远处的物体依旧在渲染,并且丝毫没有降至。但是由于游戏有景深,其实远处的细小物体根本就看不清除。这极大浪费了性能。没做lod的最好证据,就是远处贴图有明显的贴图重复感。

(这是unity商城中的一个第三方解决方案。看不见就不要渲染,这才是优化的正道,也是最需要费心思的优化,从场景设计之初就要考虑到这些)

华而不实的物理系统

衣服和头发,相信大家早就已经看出来了。但实际上一个画面已经烂到这种境界了,你倒是别用布料系统的好,纯粹浪费。其次,大家可以稍稍按一下W键,然后立刻松开,是否发现,主角稍稍有一个往回走的位移?这表明什么?对,仙6的角色移动并不是数学计算的,而是尼玛纯物理的。主角脚上有特定的碰撞体,有物理材质提供的摩擦力计算。但是其实你能感受出来?另外一个证据,我在客户端里面发现了布娃娃系统。但是你在游戏中哪个地方看到了这东西的实际运用?

滥用真反射

还记得在洛家庄第一次讨论龙晶的时候么?越祁在龙晶旁边做动作时,镜头是没有任何运动的,但是尼玛上面的反射居然动了!意思是什么?对,这个龙晶的材质是带真反射的。。。一个如此小的东西,甚至连个微距的特写就没有,居然就做真反射。我简直不敢想象到底有多少地方是大量利用了真反射,但是其实你玩家根本没看到的。

(邪教组织崩塌的那个迷宫。远处随便一个水晶都是真反射,真实吊到不行)

总结起来:大量使用了AAA大作才会使用的技术,但是表现力几乎为0,同时还不靠Culling和LOD进行优化,导致远处一个细小的物体,也耗费大量计算。按照我对Unity中的工作流程的理解,想要把这些全部都解决,得在场景中一个区域一个区域的优化,并且还考虑到是否需要额外程序支持,而这些程序支持是否会导致整个工作流程的变化。所耗费的时间不会压于把游戏场景重做一次。所以,想等优化,慢慢等吧。

五.其他很挫的地方

数值:不开修改器这真是人能玩的?倒不是说打不过,而是这战斗耗时完全是恶意拖延游戏时间。

自动存档功能:开发者已经懒到一个剧情完后自动存一下的功能都没做。这才是我真的要使用修改器跳剧情的原因。至于应龙关中死亡一次……呵呵,我已经在此处放弃这个游戏了。根本不想再玩第二次这个boss战,还不如去玩神庙逃亡。

UI卡顿:原因只可能是一个,UI全是最高分辨率下的的整图(你自己感受一下Windows下首次打开一张1920*1080的图是否需要大约0.5的时间?仙6暂停界面的UI可不止一张图),还要附加数据读取,所以打开会卡一阵。程序员能懒到这个境界,我也是献上我的膝盖了。如果真的优化得当,UI的内存消耗会低不知道多少, 也因此UI所消耗的全部素材基本都可以驻留内存中(也必须要),只实时读取一些诸如头像,道具ICON等东西。如果这些玩意其实都是固定的话,驻留内存也无妨,毕竟PC游戏。

六.仙6的优化

就算找国外大牛进来,估计至少得先准备个100W的医疗费防止他人吐血身亡吧。连我一届学生仅靠玩这个游戏,都能找到这么多的奇葩设计,更别说别人还要打开开发工程文件,一个一个看。而且这次销量因为神优化和神公关估计已经只能勉强回本了,再加上我刚才推测的几乎会翻倍的优化工作量,想要达成真正良好的优化(仙6这个画质连比鬼泣4都差一大截。真要达到神优化,理论上8800GT就应该得60贞运行),估计是根本不可能的事情(亏本),除非开放商真的有情怀。

但一个将就能运行的优化,应该还是能很快放出的。剧情过完赶紧卖号吧。由于我绑定的账号是我的电话,因此我不打算转手卖了。


相关阅读:

**专题

**新闻

仙剑访谈录