"日拱一卒。"
文/托马斯之颅
太多人低估了《天涯明月刀OL》新的年度资料片:「云上之城」。
先别急着把文章关掉——或许你会觉得,这款已经上线5年的端游MMO玩不出什么新花样。但如果你体验过「云上之城」,你会发现,它向开放世界悄悄迈出了一小步。
这个资料片的地图将达到8X8的大小,而且采用了制作流程向影视看齐的实景扫描技术。这样的生产管线,是生产开放世界所需海量资源的基础。
与此同时,他们还升级了光线追踪的效果,并实现了全真物理碰撞的模拟。有了这些特性,玩家将与世界产生更多互动,而这是开放世界 探索 玩法的前提。
去年《天刀》制作人杨峰曾表示,他们拆解过不少单机开放世界的玩法,分析在剥离它们的一次性体验之后,能不能找到支持网游长线体验的循环,并计划在新地图做一个开放世界方向的Demo。种种迹象表明,「云上之城」符合这个定义:它拉开了一场大戏的序幕。
前几天,葡萄君采访了《天刀》研发团队,了解了这个资料片背后的技术突破点和实现过程,以及他们对于开放世界的见解。
01 如何还原足够真实的场景?
去年年末,北极光通过几个新老项目的开发储备了不少技术。再考虑到 社会 价值,《天刀》团队设定了一个目标:搞一场文旅联动,把整个张家界搬到 游戏 里。
那么问题来了:张家界的山形奇特,植被茂密,地形起伏巨大,要想还原当地的光照情况和自然地理条件,且做出8X8的地图,必须要能量产高品质的资源。于是团队决定效仿影视行业,引入实景扫描的流程——去现场把一切都拍下来,再逐一还原参数。
听起来很好理解,但这套流程对细节的要求实在太多了。
第一,拍照似乎很简单,但记录一切可就难了。 到底应该用什么相机?什么标准的光圈、快门、镜头和遮光片?如何记录材质、光照和环境数据?又该如何保证捕捉出来的HDR贴图、光照单位的准确,以及在时间上的连续度?即便做了不少功课,美术团队依然跑了两趟,才拿到足够多的原始素材。
第二,如何保证还原的程度? 拿到RAW源文件之后,团队需要用算法复原真实世界的成像规律——在传统流程当中,美术可以直接上手调整做出成品;但如果想追求写实效果,团队必须追求极致「物理正确」的生产管线,所有环节都要遵循流程,不能为了追求好看的结果,就让老师傅随意发挥,省略步骤。
第三,做出素材之后,团队还要用Look Dev验收 ——也就是在多种光照环境下,查看和调整各项参数。这要求技术团队真正吃透理论,确保算法完全符合所有公式。"最明和最暗的环境,光照HDR的范围可能差得非常多,你要通过高光管线确定裁掉的部分合理,完整还原从物理光照到曝光成像过程每一步的细节。"
在这个过程中,甚至人的双眼也不太靠谱。引擎负责人刘冰啸举了一个例子:一位负责Look Dev的TA做好了视频,他怎么看都觉得光线有违和感,可仔细一查,又发现参数没有问题。"大自然的光照条件千变万化,只有认真做对Look Dev,才能让玩家感受到真实世界的效果。而平常我们习惯了生活中的人造光,如果只按照我们的认知来调, 游戏 就会变得没有特色,过于平庸。"
现在你应该对于「用实景扫描量产高品质资源」的难度有了了解,但这才刚刚迈出了第一步。想做出真正写实的场景,还要有美术团队的海量投入。
例如为了制作张家界的山石和植被,场景团队先是恶补了地理知识,弄清楚了侵蚀构造会如何塑造砂岩地貌;又根据张家界的纬度和海拔,列出了上百种植被,从中挑出了武陵松、红豆杉、野芭蕉等二十多种常见植物,思考如何把它们还原出来。
在常规地图当中,一般只要制作十几种岩石就可以不断复用;但砂岩地貌太过奇特,石柱、石块、悬崖……至少要做四五十种才能还原那种氛围,而且石英砂岩的石质稍软,负责雕高模的外包团队很难平衡细节度,最终每块石头都要经过10次左右的沟通才能完工。
然而把这些岩石放到场景里,美术团队又发现了新的问题:张家界的岩石量远远高于常规场景,且彼此间隔很小,如果按原样摆放,性能负担实在太大。于是在3-4个月的制作之后,美术又额外花了1个月,重新对模型和细节做了一系列调整,再配合混合材质,最终才保证了性能。
不过幸运的是,美术团队在植被方面的工作还算顺利。孙老师说,除了制作工具的升级,引擎性能和底层支持的提升也让美术效果有了质的飞跃:树木从2000-3000面升级到了5000-10000面,AO贴图的烘焙让它们的轮廓造型更加立体,光线照射到叶片的质感也显得更加自然。
这也引出了下一个话题:除了新的开发流程和美术团队的努力,《天刀》还在更底层的部分下了不少功夫。正如北极光技术总监安柏霖之前所说,"前面的技术都是招式,但打出来靠的是内功。"
02 永无止境的优化,
和更扎实的底层支持
刘冰啸说, 游戏 开发有一个很常见的规律:当细节复杂度提升之后,团队要解决的是多项系统之间的乘法关系,这对底层系统的设计会带来极大的影响,也会提出更高的要求。
一个直观的例子是光线追踪。不同的光照射到不同的材质,都会产生不同的效果。因此光用影视化流程做出更物理的材质还不够,想模拟真实世界,必须实现更好的光线追踪效果。
由于《天刀》采用了自研引擎QuicksilverX,团队没有采用其他引擎自带的软件光追方案,而是会去研究NVIDIA、AMD等硬件的光追算法。"这样理解最彻底,代码最干净,也会受到更少的限制。"为了达成这些,他们要理解硬件光追背后所有的原理,并始终保持与硬件公司工程师的交流研究,确保每一个细节指标都理解到位。
之所以能这么做,是因为QuicksilverX主打的就是性能优化。《天刀》团队内部有一套监控代码行数的系统来严控代码量,以此保证引擎足够轻简,更容易升级管线;他们还开发了不少自动化的工具,在美术提交地图后的第一时间让机器人做AI验证,把地图分割成64X64大小的区域,分区展示性能,记录问题,回放场景,一键输出「体检报告」,以便QA和程序做针对性的调整。
刘冰啸说,《天刀》有50%以上的程序都在负责优化,而且他们都很资深。"资源和算法合不合理?有没有更好的解决方案?如果全都合理,那它的设计足够合理吗?比如是不是可以按区来做,或者在美术遮挡上做一些效果?这些都需要经验。”
但即便如此,性能优化也依旧有不少挑战。在贴图、模型规格不断升级,并引入影视级流程之后,团队要把握新的变量。"有点儿像解方程式,这一侧有好多变量,那一侧要有固定的结果,然后计算如何分配。"为此他们既会研究在汇编语言层面(比算法更底层)的改动,也会从产品视角出发和美术沟通,比如野怪会在很远处就被击杀,那就可以适当降低细节,以保证主要角色的精度。
在流程上,这也要求技术和美术团队之间充分信任。在前期工作的时候,技术会尽量减少对美术的限制,先把效果拉满;但美术也会理解为了保证性能,后面大家还要一起反复调整资源,拼命优化,“而不是听说性能爆了要砍资源,就要杀个程序员祭天。"
不过如果只是实现了更好的美术效果,那「云上之城」还称不上拉开了研究开放世界的序幕。更需要注意的是,有些底层能力的建设,还为未来的玩法创新打下了基础。
正如前文所述,张家界的地貌复杂,高低起伏巨大,如果玩家一直站在地面观赏,显然就差了点儿意思。于是为了实现3D空间之间的移动和观察,团队开始研究更好的物理模拟技术。
物理的基础是碰撞。之前《天刀》采用的是基于Voxel(体素)的碰撞方式,它会在后台把资源拆分成大量体素再进行计算。这种做法可以节约性能,但不够精确。"比如它会把体素的上表面设定为可行走区域,只有落在这个范围才合法。"
而在「云上之城」中,团队实现了全真物理碰撞,让侧面也可以被检测,且在后端也支持多人对于整体环境的改变,这增加了玩家的可 *** 作区域的范围,"像是爬山就可以实现了。"在新资料片的单人 探索 场景,以及生存撤离PvP玩法「馥郁之战」中,地形和物理特性也会发挥更大的影响。团队表示,随着技术实力的提升,后面他们还会尝试更多基于真实物理引擎的创新玩法。在未来一段时间里,这片8X8的区域将成为《天刀》着力研究开放世界的试验场。
说实话,「云上之城」更新的不少特性,放在单机大作里可能不算是特别顶尖——毕竟《天刀》是一款已经上线了6年的多人同屏网游,他们要带着 历史 包袱,寻找因地制宜的技术解决方向。但在安柏霖看来,「标准化」是工业化的一大要素。而借由「云上之城」,他们朝理想中的目标踏出了关键的一步。
03 结语:日拱一卒
我们常常认为,国内 游戏 公司的技术距离3A厂商还有巨大的差距。但安柏霖说,每年大家在GDC或者SIGGRAPH上公布的最新成果,他们团队都有把握在2-4月内实现;就算想追逐超出前人的技术特性,只要愿意付出更高的成本,也不是没有可能,"比如当年《天刀》的云海,以及透明布料的衣服。"
不过这些局部的突破,只能说是一个开始。刘冰啸讲了一个小故事:之前《天刀》制作人杨峰曾问他,能不能做一张《幽灵行动》那样的,64km X 64km的地图?他评估了一下觉得没问题:"我们有Streaming机制,只需要加载玩家身边的地图资源,性能没问题;而且现在基于houdini的过程化生成技术在团队也已经应用得非常纯熟,在生产管线上也能搞定,甚至更大都可以。"
但在技术因素OK了之后,大家还要做更全盘的考虑: 在这么大的地图上面,玩家能不能玩到足够丰富多变的内容? 这些内容的设计和生产,将对工具链、美术和策划提出更高难度、更大工作量的要求——做 游戏 从来不是一个单点突破的任务,而是一个系统性的挑战。
面对这样的挑战,《天刀》的选择是用稳扎稳打的方式,通过每个版本保持进化。"从新手村的九华地图,到后面出的从龙,再到现在的张家界,画面变化贼大,几乎都不是一款 游戏 ……每出一张地图,我们就往前拱上一步。"
团队告诉我,未来这样的节奏还会继续下去。当前版本的张家界开放的面积只有计划中的十六分之一,战场玩法也只是试水;明年4月,《天刀》将开放下一个单人 探索 的版本,后者呈现出来的玩法和实力,会更接近团队对于开放世界的想象;而整张新地图将在2022-2023年内全部完成——听上去是很漫长,但用刘冰啸的话说,"日拱一卒,这是必须经历的过程。"
程序员因为是从事程序开发、程序维护的专业人员,所以通常需要大专学历及以上的学历。
一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。
扩展资料:
程序员通常要求熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术;负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广;负责对业务领域内的技术发展动态进行分析研究。
参考资料来源:
百度百科-程序员
程序员所写的代码,是为某一特定程序或某一个应用程序所制定的编码和内部测试的组织实施,使此应用或程序应能够在程序员编写的代码中,实现各种功能。程序员(英文Programmer)是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。代码又臭又长
我见过最长的方法是5000多行,那段代码没人敢动,只敢往下加 if else,每次需要改这段代码的开发都战战兢兢,生怕出现什么莫名其妙的bug。java 可是一门面向对象的语言,一个方法里面有5000多行可以说是很可恶的事情了。我想一开始代码长度可能没这么夸张,是什么导致这种结果的?一个是当初写这段代码的人本身写的是直来直去的方法,一堆if else ;后面迭代的开发,面对这么长的代码瞬间失去了从头读到尾的耐心,直接继续在后面加 if else 迭代,最后这个方法就变成了一个缝合怪一样的玩意。
好的 sql 可以很大程度上简化代码的复杂程度,但是太过复杂sql 本身就会给后来的开发人员造成阅读困难,结果又是变成一条无人敢动的祖传代码,我想这应该是不少公司极度抵制存储过程的原因之一。当然不少银行应用开发还是大量使用存储过程,存储过程有用武之地的,但是一个又臭又长的存储过程就等着变成祖传代码吧。当年我见到一个60多个join的sql,看到第一眼就惊为天人从此难以忘怀,当然那段sql也成了没人敢去动的代码了。
代码逻辑不明
代码逻辑不明所以是我们开发很容易去犯的毛病,是一个不致命却烦人的毛病。在代码上的体现是,逻辑判断写的比较反人类各种双重否定是肯定,不把你绕晕不罢休。或者是写起代码来东一榔头西一棒槌,让人不知道你想干嘛。导致这个的原因有可能是开发人员在需求理解上出现偏差,做到后面发现不对劲,再回去改又不大可能了,只能硬着头皮往下写,结果就是代码弯弯绕绕;还有很重要的锅是在产品经理,任意变更需求,想一出是一出,开发人员无奈只能跟着想一出写一出。还用可能是开发人员方法或者类命名太艺术了,什么四川方言拼音这种没有十年脑血栓想不出的命名咱就不说了。就说那种国产凌凌漆式的无厘头命名——这看上去是个刮胡刀实际上是个吹风机,就这种不知道让人说什么好。
规划代码的核心思想
吐槽了一堆代码规范问题,接下来我们说说如何去规范我们的代码以及如何做到就算开发人员更换了,或者项目转手给他人了,仍然可以让后面的开发可以无碍的去阅读代码修改代码。当然各个公司/团队都有自己的一套代码规范,比如项目的结构、代码命名风格、代码格式等等。不同团队有不同的风格,但核心思想是大同小异的。接下来我就我个人的开发经验来分享一下一些代码规范的思想。
以上就是关于当腾讯最成功的MMO开始研究开放世界全部的内容,包括:当腾讯最成功的MMO开始研究开放世界、程序员是什么、什么是程序员什么是代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)