[IT技术] 请问腾讯校招中游戏引擎开发和游戏客户端开发有什么区别吗?

[复制链接]
peeperp 发表于 2023-10-9 03:37:43|来自:北京 | 显示全部楼层 |阅读模式
游戏引擎开发这个岗位好像是今年才在校招官网上有的,我想问下和之前客户端岗位有什么区别吗?
1.技术要求上的区别?(主要是下面几个方面,其他方面说一下更好)
1.1.游戏引擎和游戏客户端对实时渲染知识的要求区别?
1.2离线渲染、物理引擎、数字几何处理、计算几何、模拟这几个方向,要求的深度?
1.3本科生是否有机会,引擎客户端难度区别?如何准备?
1.4两者均要求C++/C#调试经验,区别?
2.工作内容的区别?
3.各工作室对游戏引擎和游戏客户端两岗位的区别(指4大工作室+Next)?
4.待遇区别?
全部回复5 显示全部楼层
必填内容 发表于 2023-10-9 03:38:12|来自:北京 | 显示全部楼层
造武器的后方兵工厂,和拿武器上前线的军队。
以及,本科想拿引擎of真的很难,必须得非常优秀才行,或者你本科大学名头足够响。
tubal 发表于 2023-10-9 03:38:23|来自:北京 | 显示全部楼层
引擎开发这一概念本身就比较笼统,图形渲染、性能优化、物理、动画,甚至各种PCG和工具链,都可以算作广义概念的引擎开发。
站在2022年的中国游戏行业现状来说,引擎开发和游戏客户端开发的区别还是挺明显的。但是这种区别和两年前又不太一样,主要是引擎开发这个岗位近两年发生了很多变化。
因为近几年游戏行业对游戏品质的要求越来越高,游戏开发者需要对引擎进行各种定制化的改造,涉及到的领域已经不仅仅是图形渲染,物理、动画、性能优化等等都需要改造引擎,引擎开发就应运而生。
当然大部分引擎开发都是做渲染这块的改造,因此渲染可以说是引擎开发的基本功,但如果想继续往上走,就得在物理、性能优化、动画等领域再选一个专精方向。
以上是引擎开发领域。而对游戏客户端开发来说,除了UI、3C等广义上的GamePlay领域,还有AI、动画等其他领域。其实客户端和引擎也会有少部分内容重合,但是客户端主要还是专注于业务本身,除了技术之外,客户端的竞争力主要在于对游戏的理解、沟通交流的能力等。
一句话总结,引擎开发更像是打造战斗装备,打造全套战斗体系的军火商;游戏客户端更像是利用这些武器和打击体系直接上场的集团军。
以上是国内引擎和客户端总体情况介绍,具体到厂商来说,腾讯现在全面转向UE,网易UE、Unity、自研引擎(Messiah、NeoX)并举,米哈游之前是Unity,现在也有转向UE的趋势。



荒野行动、一梦江湖都是基于Messiah引擎打造

另外据我所知,与前几年引擎多集中于中台不同,腾讯、网易近几年的引擎都有拆中台的趋势:在一段时间内,引擎开发会直接打进一个项目,具体跟进包括渲染、特效、性能、动画等一个或者几个问题,从引擎层就提供支持。
以上简单讲了一下这两个岗位的区别,相对于客户端来说,引擎开发的校招要求可能高一些,但这绝不意味着客户端开发就容易。
下图是游戏引擎校招需要掌握的一些技术,供参考。

wsb000763 发表于 2023-10-9 03:39:22|来自:北京 | 显示全部楼层
1.技术要求上的区别?(主要是下面几个方面,其他方面说一下更好)
1.1.游戏引擎和游戏客户端对实时渲染知识的要求区别?
客户端如果是做Gameplay的话,对实时渲染要求不高。引擎方向如果是做工具链的话,也对实时渲染要求不高。但是面试的话引擎方向对实时渲染是必须要求,客户端不是。
1.2离线渲染、物理引擎、数字几何处理、计算几何、模拟这几个方向,要求的深度?
任选一块专研即可,在游戏里都有可能用到,除了大牛以外,正常人只能在短暂的学校生涯中熟悉这几个中的一个领域。
1.3本科生是否有机会,引擎客户端难度区别?如何准备?
知识到位就行。全靠自学。引擎面试会更难,具体面试题可以去牛客看面经比对一下。
1.4两者均要求C++/C#调试经验,区别?
校招面试基本不问C#,C++是必要条件。组里没见过不会C++进来的程序,尽管进来以后可能写C#/Python/Lua/GLSL/HLSL/CG等多种语言。
2.工作内容的区别?
工作内容可能有重复之处。客户端的工作更偏向于具体完成某个游戏内容,而引擎则更倾向于为客户端/美工完成某个功能提供技术支持。但是不是完全的泾渭分明,两者的工作有许多交叉的地方。在许多工作室内部不会有专门设立的引擎岗位,都是统称客户端。只是有些客户端对接策划的需求写GamePlay,有些客户端对接美术的需求做渲染/物理特性的开发,有些客户端做工具链相关的开发。
3.各、工作室对游戏引擎和游戏客户端两岗位的区别(指4大工作室+Next)?
具体看项目组,和项目组的规模有关系。项目组越大分工越细。
4.待遇区别?
校招定级都差不多,待遇也不会拉开很多。引擎的天花板更高一点,但是这是职业生涯中后期才会考虑的事。腾讯内部目前很多高T总监,比如安老板,都是在客户端锻炼后转向引擎开发的。
lndxs 发表于 2023-10-9 03:40:01|来自:北京 | 显示全部楼层
作为一个客户端开发和引擎开发都干过的人,当初入行之时也对这个问题十分困惑,因此看到这个问题很亲切,就当作知乎首答吧。
本人在网易雷火做过五个月的游戏客户端开发(实习),目前在腾讯天美做了三个多月的游戏引擎开发(实习),所以对这两个岗位都有了一定的了解,我会尝试针对题主提出的这几点来作出回答,但是顺序不一定一致,希望能够让大家更加容易理解这两个岗位的区别。
1. 工作内容上的区别
客户端开发更偏重于游戏玩法的实现,也就是常说的Gameplay,比如战斗系统怎么实现、任务流程怎么进行、UI界面如何交互等等,细分来说,其实客户端也有很多方向,比如3C(Character、Camera、Controller)、AI(怪物、寻路)等。再具体一点,一般新人进去大概率是从UI做起,你可能会接到一个需求,比如实现一个简单的背包界面,背包里面会存放人物身上的物品,点击的时候会显示物品的具体信息(属性、数量、价格等),并且可以出售、丢弃、购买、整理等。因此客户端开发,更多的会跟策划打交道,每当机智的策划同学想到了一个什么新的点子(需求),你就需要把他们精妙的想法实现到游戏中。
游戏引擎开发则更偏重于游戏的画面和性能,以及游戏开发中的工具链,并且引擎会更多地涉及底层的技术知识。引擎岗也有很多细分方向,最大的一块肯定是渲染(或者说人们一般最关注的),除此之外还有动画、物理、编辑器、脚本、性能等等,以及一大堆开发工具。这一点其实可以去看看UE引擎的官方文档,下面那么多模块,每一个都是可以深入研究的领域:


以及最近看到的一个很不错的帖子:游戏引擎架构总览 | (raytaylorlin.github.io)


即使是最受关注的渲染方向,也还分为光照、着色、阴影、抗锯齿、后处理、特效等等,其实细分方向真的很多。
我本人是渲染方向的,具体的工作而言,你可能会去实现某种画面表现的特性,比如天气系统,你怎么实现动态昼夜变化的效果?比如粒子系统,UE的Niagara已经非常强大了,你当然不需要自己去实现一个粒子系统,但是你如何运用它的强大功能去实现一些酷炫的效果?比如像最后的生还者2中的雪粒子附着到人物身上、随着手电筒的光束照射,虫粒子群会随之聚集和扩散等。Niagara系统是可以在内置的脚本中写逻辑的,因此几乎你想要的粒子行为和表现效果,都可以通过代码(和美术)来实现。
此外,引擎岗之所以是引擎岗,肯定是要写引擎的代码的,不过除了极少数拥有自研引擎的工作室之外,大部分引擎岗的工作就是如何"用好"和"改好"商业引擎,不需要重造轮子。不过如果现在的商业引擎没有这个功能,但是你的项目又需要用到这个功能,你就需要去实现;如果这个引擎的功能,无法满足项目的需要或者太烂了(无论是功能还是性能),你就需要进行改进。包括一些引擎工具的开发,一些系统功能的扩展和优化(有时候你甚至需要修复引擎自身的Bug),这些,都是引擎岗的工作内容。当然,引擎还有很大的一块是性能优化,这一部分工作一般都是组里技术实力比较强悍、工作经验比较丰富的老司机来完成。
因此引擎岗的话,平时更多的会和美术打交道,一起去实现更牛逼和酷炫的效果。
推荐两个引擎大佬,北极光的技术总监:安柏霖 以及我们组的组长 毛星云
不过我想提的重要一点是,其实客户端开发和游戏引擎开发,很多时候并不是分得那么清的。比如我曾经在网易实习的时候,那个项目的程序组只分为客户端和服务端,所以无论是客户端开发还是引擎开发,都由客户端的同学来完成。在这种组里面,一般会有一部分人做Gamplay的工作,还有一部分人,其实会做引擎的工作,比如渲染、性能优化、工具链等,而且客户端组长确实就是做渲染的(他一个人),但项目主程是服务端。即使在我现在的这个组,分了客户端和引擎岗,客户端很多一部分工作,都会与引擎岗交叉重叠,比如他们也会有做动画的(3C),做工具链的(资产检查工具、各种编辑器等),也会有一些改到引擎代码的工作。甚至我们引擎岗的很多工作,都需要客户端的同事来做支持。
2. 客户端和引擎岗的难度区别
一般来说,引擎岗的要求会比客户端岗稍微高一点,因为引擎更多地涉及到底层,并且很大一块是图形学技术,因此需要较强的数学功底。但门槛的区别,不代表引擎岗做的工作一定比客户端难,客户端的很多进阶方向,比如上面提到的战斗、AI、动画、系统架构等,都是很有技术深度,值得深耕的。
比如这个知乎大佬 Jerish - 知乎 (zhihu.com) 写过很多客户端方向的高质量文章。
说到难度了,就顺便提一提游戏公司对于两个岗位的区别。其实我推测,题主问这个问题的目的应该是想知道这两个岗位到底哪一个未来的发展会好一点(比如待遇和晋升),以及引擎岗究竟难不难学,是否能够入门,这其实也是我当时的困惑所在。但从我的经验来看,可能不需要太纠结这个问题,因为无论是客户端还是引擎方向,都可以拥有很好的发展前景,客户端一样可以作为主程、组长甚至总监,我们项目中也有一些职级很高的客户端大佬。一个人的职业发展更多的是取决于你的能力,以及你工作上的表现,而不是取决于你选择了什么岗位。
不过客观地来说,引擎确实是一个门槛更高,以及天花板更高的岗位,腾讯中我所知道的3个T14的巨佬,都是引擎方向的(或者说客户端+引擎),我之所以说不需要纠结这个问题,是因为绝大多数人,都不会触及到客户端开发的天花板。而且随着你开发能力的提升,肯定是越来越往底层做的,客户端多多少少会涉及到引擎的工作,后期转引擎也是很简单的。这里再介绍一个技术大佬,据说是腾讯第一程序员 顾煜 - 知乎 (zhihu.com)  他前期也是做客户端开发的,后来职业中期的时候才转去研究引擎。所以我建议最好从自身的兴趣出发,找到一个自己喜欢的方向,做到精通,喜欢GamePlay,游戏玩法相关的就做客户端开发,对于画面表现、底层技术感兴趣的,就选引擎。有时候要做选择,不从功利的角度出发,也许反而能得到更好的结果。
但话说回来,咱实在点也没事(我真的很喜欢转折.jpg),如果真的关注薪资的问题,我也可以告诉你,客户端和引擎岗,如果是相同级别的OFFER,其实差距不大,可以说基本没啥差别。如果真要说差别,那就是引擎岗的上界会比客户端更高,毕竟这技术区间摆在这里,那些发了Siggraph的学神,那些浙大CAD的大佬,不给多点也说不过去啊。不过还是那句话,我们当中的大多数人都...不需要纠结这个问题。
3.技术要求的区别
其实这两个岗位的要求,可以直接去参考一下各个游戏大厂对于这两个岗位的jd(岗位描述),对于我自身的经验来说(我参加过客户端的秋招和引擎的秋招),有一部分技术要求是公有的(Public),比如计算机基础知识(数据结构、操作系统、计算机组成)、计算机语言能力(C++、C#、Lua)、算法能力;当然还有项目经历(项目、比赛、实习都算);区别来说,其实主要就是计算机图形学的知识了。除此之外,引擎岗可能还会更注重你的底层技术知识,比如计算机组成中的缓存技术,C++编译链接的原理(动态链接、静态链接),操作系统中的内存管理等。此外,游戏客户端可能更看重于你对游戏引擎的熟悉程度(使用),以及开发游戏的经验。如果你自己尝试开发过很多或者质量很高的游戏,面试的时候肯定是很加分的。
在图形学这一块,其实客户端开发也会问一些,但我个人觉得,其实客户端问图形学的意义不是很大,除非像我之前说的客户端和引擎都在一个组,不进行区分,否则进了客户端组大概率不会参与到渲染相关的开发(当然可能也会有一些用,比如一些渲染的基础知识,如果你要做一个美术资产管理工具,你连Mesh、Texture、Material这些都不懂,是不可能做出来的)。然后根据我的经验而言,我实习面客户端的时候,一点渲染知识没问,秋招的时候倒是问了一点,不过也是比较基础的东西,客户端更注重的还是软件开发的工程能力,问我图形的原因我认为是跟我自己的简历背景相关,如果你有很多Gameplay方面的经验,我想客户端的面试官肯定会更感兴趣问这些东西。
那么对于引擎岗来说,图形学基本是必问的了。游戏引擎主要关注实时渲染,所以离线渲染可能要求不是那么高,当然如果你光追学得很牛逼,实时光追很了解得话还是有用的。至于数字几何处理、计算几何这些,感觉算是一些前置基础知识,不用太过系统和详细地去学,用到的时候再学可能效率会更高。还有模拟,这些其实与你做的方向相关,比如我自己就对流体模拟、布料模拟很感兴趣,因此这些可以多深入学习,上面也说了引擎岗也分很多方向,如果你就是擅长物理,那么你的技术深度越深越好。
4. 如何准备
和职业发展一样,面试关注的是你的实力,跟本科生研究生没有太大的关系,只是一般研究生对于技术和知识的积累更深厚,导致了可能会被认为引擎岗研究生会更容易进入,其实我们组里就有几个本科生,实力也挺强。
如果想要系统地学习,那么还是我刚才说的那几点,计算机基础、图形学基础知识、算法和Coding能力,以及项目经验。对于图形学而言,现在的学习资料太多了,有空的话直接GAMES套餐来一套,学一学闫神的101和202,只要全部理解掌握了,把作业都独立完成了,面试肯定没问题
如果你只是想达到招聘的门槛,那么其实图形学也有一些八股文。我可以简单说一下,渲染管线、变换矩阵、着色模型、抗锯齿处理、辐射度量学(BRDF)、PBR、阴影、全局光照等。。面经也很多,自己找吧。但是光靠八股文还是有可能会翻车的,干程序员这行的,还是得有真材实料不是。
另外我有个小建议,可以考虑把问题描述改为游戏开发中的客户端开发和引擎开发有什么区别,这样可能会让更多的人看到。
OK,以上,算是我的知乎首答了,希望能够解决题主的困惑。
<hr/>当初回答了这个问题之后,得到了很多朋友的认可和关注,我感到很惊喜,也很高兴。因此我开了一个专栏【游戏开发之路】,专门分享我在游戏开发的道路上的一些思考和经验。包括我自身是如何转行进入游戏行业的,学习路线应该如何规划,以及很重要的一些干货比如面经等。
相遇就是缘!针对题主的最后一个问题,如何准备,我在这里直接放出干货。我可以很自信地说,秋招/实习准备,看这个系列的文章就够了:
【游戏开发面经汇总】- 计算机基础篇这个面经系列会分为四大部分,这是第一篇《计算机基础篇》,欢迎大家关注我的专栏,也希望能够对大家、对游戏行业有所帮助。
月朗风清 发表于 2023-10-9 03:40:42|来自:北京 | 显示全部楼层
一个回答的都没有?答主也是校招生,对这个问题也非常兴趣,以下是其中几个问题的个人观点,供参考:

技术栈(校招):
客户端:

  • C/C++(OOP, 11,17新特性), C#/lua
  • U3D/UE4
  • 内存优化策略
  • 多线程优化策略
  • 数据结构算法
  • 图形学基础知识(3D数学知识等)
引擎

  • 客户端技术栈
  • 渲染基础(实时渲染基础,延时渲染基础等)
  • 物理学基础(牛顿动力学,刚体运动学,光学基础等)
  • GPU架构(缓存,GPU并行处理等)
面试难度(校招):
本科生有机会,两者难度大体相同,主要在于引擎岗的hc远少于客户端,大概1:6?
学习建议(校招面试)
《深入探索c++对象模型》《STL源码剖析》《Fundamentals of Computer Graphics》《unity shader入门》,GAMES论坛的开放课程
其他《Mathematics for 3D Game Programming and Computer Graphics》《Physically Based Rendering》《Real-Time-Rendering》《Introduction to 3D Game Programming with DirectX 11》《Real-time Collision Detection》这种可选择性看,不如看《腾讯游戏开发精粹》面试效果更好?(如果你打算投腾讯)
工作区别(个人YY)
客户端

  • 根据策划需求,实现游戏的战斗/场景/系统/界面等逻辑和效果
  • 和策划/美术/引擎对接,确保游戏功能点的实现,工具链的优化,性能开销等问题
除了渲染,游戏客户端程序员还有哪些进阶方向? - Jerish的回答 - 知乎 https://www.zhihu.com/question/433768405/answer/1700193198
从事游戏开发,需要什么技能? - 胡帆的回答 - 知乎 https://www.zhihu.com/question/20242554/answer/84086866
引擎

  • 维护引擎的使用,解决引擎使用中的BUG
  • 对游戏的某些性能瓶颈进行优化
  • 对游戏的某些卖点进行模块/流程/工具链的实现和设计,主要通过整合其他开源代码,复现业界前沿技术如每年GDC上的技术分享,以及论文中的方法并优化性能
待遇区别:
校招新人在一个价位区间,根据面试/简历 略浮动几个k。后期发展的待遇,我也想知道。
更新
终于有大佬来回答了

工作一年后更新

没啥差别,只是为了更好地分工协作,完成制作游戏这一最终目标。
引擎是在各种syscall和graphics api之上调接口,往往会受制于硬件的发展水平。
客户端是在unity unreal引擎上调接口,往往是听策划的指挥。
来干这行的估计都是需要这份工作养家糊口的,待遇肯定最重要,两个岗位在这方面几乎没有差别。待遇几乎全部取决于所在部门或项目组的盈利水平。甚至和技术水平关系都不大。

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则