记录一下从前端开发转行到游戏开发4个月以来的总结。
技术美术(TA)
技术美术师经常参与研发的就是三维可视化系统了,这是一个前期以技术研发为主,后期以内容开发为主的大型项目,目前课题处于前期研发阶段,主要包含5个方向:
研发的主要内容包括:
三维可视化研发在今年的目标主要是做成一个初版的demo,实现从空间索引数据库PostGIS中动态加载构建(三角面片总量是10亿数量级的期望),以分形算法渲染不同的细节层次(LOD),从3D网格体的基本矢量信息(点线面)和贴图等物理属性载入虚幻引擎中渲染拥有不同表现形式的物体,最后利用WebRTC将像素流快速、安全地传送到Web前端展示。
今年的目标还包括确定引擎对前后端硬件的要求和引擎的渲染极限(顶点和三角面片的数量上限)。由于使用了即时通讯行业最先进的WebRTC技术,前端展示集成的性能基本只由显示器的分辨率决定,当然前提是有足够的内网带宽,后端需要能够运行UE4集群的硬件,主要对显卡和显存的需求较高。引擎的渲染极限仍然在研究当中,目前在RTX2060处理器上的三角面片数量是百万级别,但考虑到尚未吃满的GPU利用率以及后期陆续的优化,三角形的数量在将来能达到500万。
今年上半年经过各种技术选型最终确定了课题研发的基础设施,包括对图形理论实现地最好的虚幻引擎和基于空间矢量模型的网格体(mesh)渲染模式,放弃了存在性能瓶颈的WebGL和空间复杂度过高的体素化(voxel)渲染模式,最关键的一点是选定了基于像素流的前后端分离渲染模式。
今年下半年开始了虚幻引擎的沉浸式研发,通过不断的学习对自身进行计算机图形学的理论升级,先后解决了许多问题,确定了许多不确定性的想法,实现了许多未经验证的可能性,我完成的成果按照时间顺序排列,大致包括但不限于:
三维可视化系统研发涉及计算机图形学、射影几何、关系代数、信息论等基础学科,是一种面向GPU编程的研究型工作,它对于团队中每个人都是全新的机遇和挑战,其中的机遇在于,这个岗位(暂且称之为TA:技术美术)尚未饱和,行业竞争少,发展空间巨大,相对于传统研发有许多趣味;其中的挑战则在于较高的行业门槛,稀少的市场案例,以及未来研发途中各种无法预测的技术障碍。
我个人在这个季度中收获巨大,不仅深入理解了UE4、WebRTC、OpenGL、GPU,还对整个3D乃至游戏行业有了一个更深刻的认识,相当于成功进入了一个崭新的行业(以前的专业是前端开发)。我再次意识到基础知识的重要性:基础知识相当于内功,扎实的内功是高超的招式的前提;学习计算机基础知识则是掌握应用技术的前提。
我们也存在一些不足,或者说需要提高警惕的地方,比如我们赖以生存的虚幻引擎是否可能存在一些尚未发现的性能/功能瓶颈,需要尽早发现这些隐患,寻找相应的解决方案以备不时之需;除此之外我们离国内做的最好的几家同行(如51world)之间也有不少差距,需要提高研发速度,坚持学习以应对未来的竞争。
我个人而言,花费在理解虚幻C++接口上的时间略长,必须养成阅读源码的习惯来提高效率;此外,不用拘泥于数据库空间优化,有时候空间压缩的代价是时间的牺牲(时间换空间原理),先把功能做出来再考虑性能与安全性才是最优解(优化的前提是能跑)。
技术美术属于研发型岗位,研发型和开发型岗位不同之处在于:研发型工作需要更多的理论储备和基础知识尤其是数学,追求的是技术深度,而开发型工作要求的是使用工具的能力,追求的是技术广度。比如三维可视化运维系统,前期需要大量的研发工作,才能为后期大量的开发人员提供方向;从个人角度看,对计算机图形学的探索很符合我“往计算机底层发展”的职业规划。
希望自己私下的研究方向和开源作品能够在项目中产生应用,实现个人价值,比如基于Base128变长编码的Zipack序列化格式可以在各种RPC通讯协议、内存缓存等高能场景提供比JSON更高效的二进制前缀码,为数据的存储和传输提供更小更快的解决方案。
2021年我的提升方向大致是沿着TA这条主干路线走,深入研究网格建模与图形理论,学习GLSL着色器语言和Direct3D图形卡接口,实现骨骼动画和基于shader的特效。因为当前的服务器硬件性能远高于常规的游戏主机,我们有足够的物质基础来按照3A次世代大作的标准设计系统的整体架构,在虚幻源码的基础上改进性能,突破引擎的渲染极限,将硬件的计算力和存储力发挥到极致。
在沿途路上还要积极探索其他的相关方向包括:
目前正在攻克的难点在渲染引擎身上,我们在研究UE宁愿降低帧率也不吃满GPU利用率的根本原因,初步判断是因为渲染所在的主线程无法拆分导致cpu单核堵塞从而造成的短板效应(单核堵塞导致多核等待),但完整的原因和解决方案还未确定:这是我们明年首先要解决的难题,为此我们准备尝试用多线程处理相互独立的异步任务,以及对DrawCall请求进行打包,对顶点进行合并以求更少的时间间隙,还打算向Epic公司寻求有限的技术咨询。
明年上半年的主题无疑是性能优化,优化的内容包括:
按照目前的研发速度,明年下半年以后大多关键技术瓶颈都已经迎刃而解,同时还伴随着UE5的正式发布,届时动态的全局光照和层次细节将被原生支持,空间索引和即时渲染的难度将大大降低,引擎的整体性能会发生质的升级,当然我也不能太依赖新技术:软件层面的更新迭代不可能超越硬件的极限,从CPU、GPU、内外存、带宽的角度思考功能、性能、安全性始终是明智的研发思想。