维塔士工作室,《黑色洛城》switch版移植工作采访

没想到这个能出第二期,本篇采访了一位在国内从事游戏行业的工作者,有幸参与了多个游戏的外包开发,我们从他的角度上看目前中国“单机游戏”行业的前景。

Q:虽然都是认识,但能介绍下你自己吗?

A:从小喜欢打游戏,本科专业数字媒体艺术技术方向,手残做不了艺术,所以主攻编程,研究生专业是互动娱乐编程方向,回国加入上海的维塔士,目前工作两年。

Q:维塔士?我记得你之前是去育碧啊?

A:哈哈,没被选上呢(苦笑)

Q:这个公司名气很小啊,看样子这公司是专门搞外包么?

A:是的,虽然老板一直认为自己是“游戏开发公司”。其实,维塔士美术团队还是很厉害的,不光给海外游戏大厂做美术资源,还时不时做点电影外包,比如魔兽电影,星战电影,都有维塔士的参与。相比之下,游戏部门逊色一些。主要是做游戏移植整包,专注底层技术,在游戏设计上基本不做参与。不过最近慢慢也开始发展合作开发业务,目前我知道的有两款,不过都是商业机密,不能透露。总体而言,维塔士的水平,跟海外大厂还是有距离的,不过也是比上不足,比下有余,技术上还是是吊打各种手游小作坊的。

维塔士上海工作室负责移植本世代平台维塔士上海工作室负责移植本世代平台

Q:在工作室里经验收货多吗?

A:在维塔士的好处,就是可以见到真正的上百万行C++代码打造的自定义游戏引擎,这个在国内其他公司是很难有的机会。毕竟国内大厂的端游也就是把UE4扒过来改改,然后美其名曰“自研”。

Q:最近参与了哪些游戏?

A:刺客信条:艾吉奥合集,与黑色洛城Swtich版。

Q:刺客信条吗?本世代的艾吉奥合集为何只有30帧?!

A:这个我就不大清楚了,我中途才加入艾吉奥移植,可能工期太紧吧,一年三款游戏塞一起,很多游戏内原有bug,都是放弃修复的(苦笑)。

Q:那你参与的第二款游戏《黑色洛城》从高配移植到低配上是什么体验?

A:我在项目里不是负责优化的,说下我从同事那里了解的优化吧

GPU方面,首先我们使用的APINVN图形库。这套API比较特殊,不是传统的Direct3D 11OpenGL,跟较新的Direct3D 12Vulkan比较像,特点是更接近图形硬件底层,对硬件有更多的可控性,尤其是在GPU多线程方面。

所以,利用此API,可以充分发挥现代GPU的并行计算优势。缺点便是,难于debug,需要更多精力同步GPU的并行任务与GPUCPU间的同步。开发过程中,很多UI闪烁bug,就是多线同步没做好造成的。除此之外,还有很多套路性优化,比如立方体环境贴图,原来每帧更新六个面,改成一帧更新一个面。

还有镜面反射,原来会计算反射的内容会远远大于镜子发射的内容,我们做了提前裁剪,只计算反射后,从镜面看得到的部分;动态分辨率;高清漫反射贴图配低清法线贴图等;调整lod的距离,使得玩家需要离得更近才能看到游戏物体高模。不过这也带来了很多bug。比如有个成就是打掉远处塔顶的字母标志,结果因为log距离设置的太近,导致远处完全看不见,也没有办法接近,最后解决方案是,将这些物体手动管理,不进行lod优化。

CPU方面,主要是改进多线程的任务分配效率,我们基本重写很大一部分线程池的相关代码。物理是另一个大的部分,首先降低物理引擎模拟频率。枪战非常耗时间的部分,是射线到物体的碰撞,所以我们将射线多线跨帧处理,提高计算效率;散弹枪这种,减少子弹数量,并且用椎体做预判定。还有,专门集成了Umbra遮挡剔除中间件,优化场景管理,减少不可见物体的渲染,从而减少每帧CPUGPU的数据传输量。这个中间件可能听着陌生,但其实很多知名3A游戏都在使用,比如巫师3,最终幻想15等。

还有游戏容量,黑色洛城内容量实在太大!!!,没有好的办法压缩,所以,即使我们上架时,卡带里面也不是完整游戏,玩家必须联网,才能下载到剩下的游戏内容。。

Q:谢谢讲了那么多!那么从事这行业的道路多吗?

A:挺多的吧。最简单的是QA,没有啥门槛,只要爱玩游戏就好,之后是产品和设计,比较偏向名校或是国外游学经历且爱玩游戏的,如果有游戏制作经验那更好。美术的话,需要很强的美术功底,最好手绘强。程序的话,最喜欢熟悉C++的程序员,且对数学有一定要求。手游也许用不到C++,但是懂C++依然是加分项,代表一个程序员对硬件如何工作与程序设计有更加深刻的理解。

Q:最后一个问题吧,给步入行业的新人或后辈们的建议!

A:美术策划我没干过正式工作,就不说了。搞技术的话,C++和数学基础是入行的敲门砖。游戏本质是软实时系统,对优化要求比较高,这就意味着程序员需要理解接近硬件的东西,比如多核协作,内存显存管理等。C++既有高层抽象的特性,比如面向对象,多态,又可以直接对内存和线程进行操作,满足了游戏开发的需要,所以C++是游戏开发的首选。其次,由于游戏的特性,不管图形还是物理还是游戏性,需要较强的3D数学功底,所以数学对于游戏开发来说也很重要。入门的话,C++学习方面,推learncpp.comC++ For Game Programmers,和C++ concurrency in action

第一个是C++的语法基础,第二本书介绍了如何将C++的各种特性运用到实际游戏工程当中,如内存管理,常用设计模式等。第三本介绍了较新的多线程序设计技巧,如无锁多线程序设计。数学方面,首推3D Math Primer for Graphics and Game Development。这本书的好处是,可以很好帮助读者建立数学与3D几何的联系。游戏引擎方面的书籍,我推荐Game Engine Architecture3D Game Engine Design

前一本基本是理论方面,介绍了游戏引擎大致分为哪些部分,浅尝辄止地概括了游戏引擎各个部分的技术要点。第二本偏向于实践,带的例程是一个小的完整的游戏引擎,工业级质量的代码,非常难得。

最后,我的建议是,做技术的话,最好混个高学历,因为现在技术发展越来越快,各个细分领域越来越专,对专业知识储备要求越来越高,比如,近来比较火的物理渲染,深度学习,对数学还有计算机功底,要求就很高。所以,在学校的时候,尽量多储备理论知识,才能更有利于未来职业发展。当然,出了学校,进入工作岗位后,也要不断学习,才能跟上技术发展的脚步。


展开全文

评论

发布
取消
返回顶部
App内打开