本
文
摘
要
水文一篇,不喜勿喷。不知不觉离上一篇已经过去一年多了,不是不想去分享,确实是忙(懒)。新引擎开发了2年多了,引擎和工具团队加起来寥寥数人,不过没任何关系,我向来不追求人多,而是团队的战斗力和执行力。先简单说说最近很火的天刀手游版的技术吧,仅代表个人观点,首先恭喜天刀手游在收入上取得了非常棒的成绩,不过就技术而言令本人比较失望,当然这并不影响它的销售成绩。首先是所谓的gpu driven pipeline,现在大家对gpu driven pipeline的定义比较含糊,不过天刀手游里的显然是比较半吊子的东西,牺牲了灵活性和扩展性,从效果表现上而言方案的健壮性显然不足。最最基本且重要的光照,阴影,材质没有一个做的到位的,其中阴影的方案尤其的业余。整个游戏的效果基本就是靠美术硬堆出来的,感觉北极光这几年的技术进步不大,整套架构和方案没有什么值得借鉴的地方,实在感觉不到哪里 *** 了,做下一个项目的时候这套架构基本就是重撸一套的节奏,当然这对他们而言不算啥事儿。发热控制的一般,随处可见的渲染错误,包括反射,阴影,遮挡剔除。光就技术而言明显感觉比原神还是要差了一截,虽然原神的技术方案偏激进了一点,但它在光影和细节方面的确要好不少,当然优化的空间还很大。
说回到自家引擎,新引擎在开发过程中遇到了诸多的挑战,首先是手机上支持开放世界沙盒游戏,需要支持超大规模的地图,动态的世界逻辑,包括但不限于昼夜变化,动态实时天气,物理引擎支撑的动态交互场景,大量交互的实体(树木都可以砍伐,建造房屋,种植,搜刮),另外还有真实时光影,动态导航寻路与AI交互,支持玩家本地开服,需要支持iphone5s级别的低端机型,内存需要控制在600M,针对内存优化也是花了极大的功夫,还特意做了一套动态数据的压缩解压系统,另外还需要保证pc与移动端效果的一致性,pc上会天然具备一些优势,包括更好的阴影,反射与后效,但整体效果和表现与移动端是一致的。 游戏包体大小这块也需要控制。所以整体而言对引擎和服务器的架构提出了诸多的挑战。
这一年完成了诸多的功能,主要包含:
1:跨平台开发,不同的手机平台真的是区别蛮大,一个特性不支持可能就导致了开发工作量上升不少,甚至是对架构造成冲击,这块真的是反复的调整修改优化。目前移动端用的是ogles3,一方面是想尽可能多的支持各类机型,另一方面是确实人手有限,目前而言没有人力同时搞vulkan,metal,不过这块后续会逐步展开。另外移动版本与pc版本效果的一致性方面也花了很大的功夫,2套版本在架构上是有区别的,但效果是整体一致的,为了更好的优化,移动版采用了single pass deferred的方案,这块改造适配与测试花了不少的时间,后续还在调优,目前而言整体功能已经开发与测试完成了。
2:深度优化的多线程框架,去年的框架已经很不错了,不过在某些效率热点还有优化的空间,这一年也是反复的调整,测试与优化,尽可能使线程之间更加平衡,消耗更加均匀,有些地方采用的方案也是脑洞大开,有很多小而精妙的点。目前整套引擎完全是多线程化,调整起来也很灵活,为了适应未来的vulkan等api带来的架构冲击,引擎在架构灵活性上花了很多功夫,同时也能很好的兼容老式api的功能特性。未来的渲染方案规划是以下几套方案会并存并且可以良好的切换,包括相对传统的deferred shading(高度优化,兼容gles3等老式api),clustered deferred shading(dx11级别的api),material deferred shading(dx12,vulkan级别的api),之前曾经讨论过cbdr,cbfr等方案,而且那时觉得cbfr总体最佳,不过目前个人总结下来,也是与时俱进,觉得material deferred shading才是未来不二的选择,这块以后有时间再详细讨论。另外各种卡顿或者引发卡顿的问题也逐一去排查和解决。因为毕竟是大地图,动态加载,更新,同步,刷新机制等等都需要小心伺候。
3:客户端引擎对应的服务端版本,除了一些常规的功能外,还需要支持动态导航的生成,玩家本地开服开房间,由此引发出来的各种新的挑战,包括内存,效率等等,尤其是内存,由于需要支持玩家本地开服,数据的分离,内存消耗挑战很大,因为低端机(1g内存)上也要支持。
4:开放世界制作工具,打包工具,这块其实非常耗时间,需求多而杂乱,反复地去调整,改良,还要考虑老数据的兼容性,不过多赘述。
5:Misc: 新开发的compactPBR系统,基于FrameGraph的粒子系统,特效,导航模块,AI模块
总结:很多功能还在不断的调整优化测试验证,想必经过验证后在明年可以逐步的拿出来分享一二,一直坚持实战是检验真理的唯一标准这个理念,目标就是先做到国内最好的跨平台引擎(没有之一),以上所述的都是实战经验,绝非纸上谈兵。