找回密码
 立即注册
查看: 701|回复: 19

如何能在两年后进入网易游戏或腾讯游戏做游戏引擎开发或游戏研发?

[复制链接]
发表于 2021-10-21 18:18 | 显示全部楼层 |阅读模式
我是所杭州普通一本学生,18考研去了北京985的软件工程专硕(大神别喷),我对自己的要求就是希望以后毕业了可以去腾讯游戏,网易游戏的游戏引擎开发或游戏研发。
1.没有什么特别感兴趣的方向,只是自己觉得可以静下来编程了,农村娃,进入这个行业最看重的还是薪水而已,不理解农村娃生活的人请别喷
2.软件工程不怎么搞研究,就是做项目,其实也就两年时间,导师是做计算机图形学方向的
3.打游戏十八级手残,对游戏谈不上热爱,但是导师是做这个,自己也没有什么感兴趣的,所以目前想的就是这个方向,希望有游戏行业的人阐述一下现在的前景
4.现在人工智能太火了。。。我也是蠢蠢欲动,该不该平时应付项目之余转去做人工智能?
5.有查过图形渲染方向的招聘,坑位少得可怜,不知道能不能两年后占了这些坑位
6.个人水平一般,没有拿过什么计算机类的奖,得过一个数模省赛二等就没了,考研总分350,数学101,专业课127。
如果觉得走图形渲染,游戏引擎方面可行的话,恳请大佬能给一些意见。。。
发表于 2021-10-21 18:20 | 显示全部楼层
这个邀请就很灵性了,从学校来看鄙人还不如题主呢(某不知名211的硕士),不到1年进了目前网易的NeoX引擎组。

我选择的思路就是曲线救国,毕业那会网易见到我校的简历估计都是直接刷的,而且网易校招的难度也比较大(听传闻有个什么压力面试很恐怖),然后我就选择试试完美世界引擎组,刚好有个朋友也在里面帮我内推了一下,不过很幸运的进了(可能专业契合度比较高吧,面试也就一般般)。之后1年内也跟不少腾讯的猎头接触过,无奈人家嫌我资历低没吊我,后来很幸运的是NeoX引擎组要升级整个动画系统,我本身动画出身,对这个工作也很感兴趣,去杭州面了一下,和这边leader愉快的交流一波,也算很顺利的进了网易。

说说网易的面试吧,感觉面试官水平都非常高(基本都是专家,网易P5以上的员工)。电面是我们这的主程(传闻是轮子哥的同学2333),项目上的就不细说了,问的C++都非常深基本没有回答全的,后面就是谈人生谈理想了。一面的哥们坐我旁边,项目上基本问的很细(细到某个函授怎么去设计和实现,做过的东西要想的很清楚),然后问了一下STL,最后也是谈人生谈理想。最后一面leader面就是纯谈人生谈理想233。总之,社招不是很难,主要还是看你实力与你资历是否匹配吧,还有你这个人和组内的氛围是否 契合,当然也会被拒的。前几天我们这才拒了一个9年经验的人,理由是本人没有简历说的那么厉害。

下面说一下我准备了些啥:
    基础打夯实,引擎最基础的就是C++嘛,基本上要是个半精通的状态(基本概念+多态+STL+少量元编程+编译器优化+最好会多线程),我个人来说还是对我的C++比较自信的,结果电面被问得一头是汗。专业方面一定要熟,比如我做动画的,完美这边动画很厉害的,我算是1年内把代码都基本看了一遍。多看看GDC和Siggraph还有内部分享,很重要的。GDC里面大多数都是一些先进的开发经验和技术,而siggraph是一些前沿的东西,比如育碧最近做的基于深度学习的地形自适应,我在完美的最后一个工作就是和一个新人复现这个。多了解不是坏处,主要是增加谈资,切勿做井底之蛙。
——————————————————————
深夜补一下答案。
做游戏是个吃力不讨好的活,东西杂,门槛高,工资相对也不高(相比互联网),说实话如果不是对游戏有着一股热情的话,感觉进来也没啥意思。毕竟大部分玩家都会觉得国内这行low。我当年没选择去项目组的原因也不想去做国产网游,引擎这边还是偏重技术。然而,最近越来越发现,项目组的很多东西也很有趣,所以个人认为没必要非盯着一个岗位不放(按我们主程的意思是项目组混两年,反而会对引擎有更深的理解)。
腾讯没去过,下面简单罗列下个人感觉网易比较吸引人的地方:
    整个公司的氛围不错,事业群之间的技术分享很频繁,质量很高。有大量的资料可以查阅(比如每年的GDC等等)。工作基本属于放养状态,只要完成任务即可,不会过分干预。身边同事水平很高,接触到的技术和产品都很厉害。
不过目前互联网确实钱多,不少朋友都去头条快手基本工资至少都是接近double,所以根本不在乎做啥还是往钱多的领域钻吧,游戏行业目前是没有油水的。

以上。
发表于 2021-10-21 18:29 | 显示全部楼层
泻药。
来强答一波吧,我不是引擎岗,而是TA岗(但是本人技术栈偏引擎),更不是正式职工,只是前段时间的大二暑假在某工作室实习一段时间,但是秉着有求必应,有问必答不知道(划掉不知道)的原则,还是决定来强答一波。
首先呢,技术顶端的大佬之所以是为大佬,必定对技术的追求高于许多其他方面的追求,包括名利,这是本人一贯的座右铭,也是经过观察以后得出的结论,其实这句话有点站着说话不腰疼,毕竟我也不是什么富家子弟,也只是普通中产阶级家庭的孩子,但是我认为对于任何一个技术含量较高的行业都不应该抱着“我试着找个高薪的工作”这样的想法,而是应该一门心思扑到研究里,并尝试着发布一些非盈利性质的技术分享,待自己的技术已经强到一定程度,反而“进大厂”就不再是一个目标而是一个顺水推舟的事情,一封简历,面试时面试官看到你,来一句“哦你就是那个XXX,我看过你写的论文/分享/开源,感觉挺不错”,然后一个Offer,搞定。
那么如果你已经进入了这些号称“国内顶尖”的大厂,结果发现没有想象的那么“顶尖”,又该怎么办呢?是攒几年积蓄准备出国?还是用自己的业余时间加班加点学习专业知识?我觉得这也是一个需要考虑的问题吧。
发表于 2021-10-21 18:35 | 显示全部楼层
谢邀。
我想你应该已经看到了,菜凉了。
所以如果是为了高薪,建议换AI方向吧。(不过我不确定AI这盘菜能否坚持到你毕业)
我这里想重复一个最基本的道理。那就是如果你不能给老板带来一千万,老板为啥要发你几十万甚至百万。
有没有空子可钻?有!那就是那些“风口”,那些资本狂热的领域,是会出现倒挂的。
你现在看中的这些,都是曾经的“风口”。
但是我还是想提醒你一句,“风口”是变化无常的。在风口上猪也能上天,反过来说风口离开了摔死的也是猪。
我还是想建议你选择自己喜欢的,或者至少是比较擅长的去干。(虽然我知道很多农村娃不知道自己喜欢啥,也不知道自己擅长啥)如果是这样(都不知道),华为这种公司其实挺适合你的。
发表于 2021-10-21 18:36 | 显示全部楼层
泻药,因为主题是程序向的问题,本人也是主要了解程序向的招聘,所以回答上也是以程序为主。但是如果只是希望做游戏,策划、美术都是选择,也有专门的考核方式,这里就不做赘述。

事实上,公司招聘的技术考核方式,很大程度由其技术方向以及部门领导层的喜好决定。

-腾讯:
首先腾讯很早就在内部推动以商业引擎(其实也就Unity和UE4)为主导的开发思维,还在活跃的自研引擎只剩下上海北极光的quick silver,深圳量子的MAY/AGE已经基本没有下文(别问我是怎么知道的),且目前quick silver也是以天涯明月刀这种端游为主。
内部90%的新立项项目都是在使用Unity做手机游戏,且这个情况目前看来不会有质的改变。因为即使吃鸡让UE4的地位上升了一波,但是能驾驭UE4的团队实在太少,Unity的积累却十分的深厚,我预计2年内UE4不会在腾讯拥有绝对的优势。
所以如果是以进入腾讯为目标,那么深度掌握商业引擎并有比较高品质的项目经验(最好是arpg、moba这种级别的),是一种比较可行的模式。精准地以两年后为目标的话,那么选择unity依然比UE4稳妥得多。这个时间段,UE4应该还不能覆盖到大部分的新项目,可能会在几个拳头产品里头使用。
但是,如果你是一个对自己能力非常有信心,且对游戏又非常有爱的人,那么兼修Unity和UE4,并以专精UE4为主,是可以的。这意味着你可以深度钻研更牛逼的技术,而且有可能进入腾讯内部投资规模较大的产品:因为采用UE4的项目,基本都会是最强的项目或者团队,小团队用UE4是毫无优势的所以一般也会继续做Unity。
这里说明一下掌握Unity,是要了解底层的原理,切勿停留在会用的阶段。另外强烈建议多看Unity官方文档(对,说的就是英文的文档),外部流传的书(包括官方的书),大部分已经很落后
这里问几个问题,大家可以自测一下:
    有没有看过完整的arpg、moba游戏工程的代码,且深入理解?(网上有,不要说找不到)整天说的GC到底是什么东西,原理是什么,为什么会导致卡顿Scriptable Rendering Pipeline,听说过吗?IL2CPP呢?什么东西会吃内存,什么东西会吃cpu,什么东西会吃gpu。怎么测试吃多少,怎么优化?经常说的drawcall优化是什么,到底drawcall是怎么变多,怎么变少的Unity跟DirectX、OpenGL的关系是什么。Metal又是什么鬼?Unity、mono和C#又是什么关系?
另外推荐多看看UWA的文章,都是做过项目的人总结的关于性能和底层原理的东西,对缺乏项目经验的毕业生都是宝贵的知识:
UWA Blog - UWA
当然,也可以选择C++服务器的方向,选择这个方向的一个好处是,可以转型的方向很多。因为腾讯基本上服务器开发以C++为大头。如果选择这个方向,那么对C++、算法、网络知识的要求就高很多。

-网易:
而网易不同,网易的自研氛围是非常强大的,内部非常重视引擎的研发,目前Neox和Messiah两个引擎基本搞定整个手游的技术线。虽然不是说进去就要做引擎,但由于这种氛围也导致网易的技术面试会更加困难,这点 @杨智为  的回答里也说了很多。
以客户端开发的身份面试的话,基本上C++和图形学是跑不了的,需要比较深的了解。后台开发不是很了解,就不说了。
另外有一种说法是网易现在毕业生招人极度倾向211以上硕士,这个个人并不了解细节不做保证,但毕业生如果想去网易,建议还是打听打听相关的情况。

---------------------------------------------------------------------------------
最后跟大队一样to题主:如果真的不爱,就不建议入游戏行业,天生的996行业(but,听说互联网也没好多少:P),腾讯最早一批加班党都是做游戏的。然后因为整个行业都被腾讯网易吃掉大部分的收入,剩下的活得滋润的公司并不是很多,假如题主有一天感觉不想呆在大厂,可选择的去处也自然没有互联网来得多。
发表于 2021-10-21 18:40 | 显示全部楼层
没兴趣就别硬上了,害人害己。先找到真正热爱的方向吧。
发表于 2021-10-21 18:42 | 显示全部楼层
不是我打击题主,如果对游戏没有足够的热爱,还是不要往游戏研发这个方向走。虽然薪水真的高,但是工作时间特别长,压力非常大。一段时间之后你可能会觉得这么做不值得。
未来的发展也很不确定,虽然问题是问怎么进去大厂的游戏研发岗,但是描述中说到自己对人工智能蠢蠢欲动。如果两头抓,最后可能两个都抓不到,游戏引擎的内容本身也不少。
图形渲染算是游戏引擎的一个模块,这一块内容在国内还是很吃香的,TA的薪资一直很可观。走这个方向完全没问题。
未来国内游戏的品质还会不停上升,现在但凡好点的游戏都需要定制引擎功能,所以未来游戏引擎研发人员的需求也会上升。再加上元宇宙的出现,总之未来游戏研发类岗位有增无减。
游戏引擎的内容较多,下面大概介绍一下
双击再看,养成习惯
  电子游戏是一款软实时模拟软件。软实时模拟软件需要做到可以响应实时操作,并且即使由于某些原因没有立即响应也不会造成灾难性后果。在电子游戏这样的软实时模拟软件中的大部分数学问题没有闭合式解,因此需要进行离散的模拟才能得到一个结果。
  游戏引擎正是为了完成游戏中各种各样的模拟而整合了各种各样的模块,例如物理模块、渲染模块、逻辑模块等。早期的游戏引擎大多只能运行在特定平台,例如《雷神之锤》的引擎Quake engine、魔兽世界用的暴雪自家引擎。



Quake



魔兽世界

  后来出现了可以跨平台运行的通用游戏引擎,例如Unity、Unreal。
<a href="http://www.zhihu.com/zvideo/1429528678615625728" data-draft-node="block" data-draft-type="link-card">  一般来说,越通用的游戏引擎,在特定平台上的运行效率会越不如那些只能运行于特定游戏平台的游戏引擎。因为性能优化总是基于特定假设的,这个假设越单一,优化起来会越轻松。


  上图中,游戏专用子系统第三方软件开发包之间的内容都属于游戏引擎的内容。
硬件

  硬件是运行游戏的物理设备,例如pc、xBox Series X、PS5、ns。



PC



xBox Series X



PS5



NS

驱动

  驱动是负责和硬件进行通信的底层软件,常见的驱动有显卡驱动(Nvidia、AMD)、声卡驱动。有了这些驱动之后,开发人员就不需要为具体的硬件设备编写代码。驱动很好地隐藏了硬件设备的复杂性,使开发工作的复杂度降低。




操作系统(Operating System)

  在操作系统层面上,大致上可以分成游戏专用操作系统非游戏专用操作系统
  游戏专用操作系统有xbox的XBoxOS、ps4的Orbis OS、ns的Horizon。这些操作系统的通常知识一个轻量级的库,在游戏运行时,游戏程序几乎可以占有硬件的所有资源和控制权,所以游戏运行效率很高。
  而非游戏专用操作系统通常都会因为各种各样的原因只能占用硬件的部分资源和控制权,例如windows操作系统采用基于时间片(time-slice)的抢占式多任务(preemptive multitasking)方式来运行所有程序。
  这也是为什么同一款游戏在同样硬件性能的PC和PS3上面运行,PC上可能直接变成PPT,而PS3却可以30帧稳定运行。



xbox的XBoxOS



ps4的Orbis OS



ns的Horizon

软件开发包(software development kit, SDK)

  软件开发包一批功能良好的函数的集合,这些函数又称为称为API(application programming interface)。
  大部分游戏引擎都会接入第三方SDK以增强引擎的功能,通过接入SDK的方式给引擎增加功能可以减少引擎的研发压力,同时又能获得良好的效果表现。
  下面列举一些比较常见的第三方SDK:
  物理引擎有Havok、PhysX、Bullet等。






  动画引擎有Havok Animation、Granny等。


  Havok Animation可以在运行时给动画加上物理效果,也就是物理动画技术(Physically based animation)。
  动画的制作流程比较复杂繁琐,部分有钱的游戏厂商会通过动捕(motion cap)的方式来制作动画,钱包确实顶不住的话可以使用Endorphin来自动生成帧动画,提高生产效率。还有一种减少工作量的方法,使用Euphoria在游戏运行时生成符合物理和生物力学的动画。
平台独立层(platform independence layer)

  平台独立层会为特定模块封装各个平台的底层API,让游戏引擎可以支持在多个平台上运行。这一层算是游戏引擎和外界环境进行沟通的桥梁。
核心系统

  核心系统会为游戏引擎提供一个软件该有的底层功能,所有类型的软件都会有这一层。
  这一层的内容也不少,我们关注得比较多的是内容管理模块。因为游戏引擎往往都需要保证最多每隔32毫秒就要执行一边全体代码,对于内存的管理要求会比较高,需要实现高效地内存分配和释放,还会自定义数据结构及算法来减少或完全消除动态内存的分配。
渲染引擎

  渲染这一块内容就比较丰富了,已经被独立成一个专业学科--计算机图形学。一般游戏引擎都不会去开发自己的渲染引擎,因为投入产出比太低,而且现有的渲染引擎已经很成熟了。所以游戏引擎一般都会接入已有的渲染引擎。
常见的渲染引擎有DirectX、OpenGL、Vulkan、Edge等。这里的Edge并不是指微软的Edge浏览器,而是专门为PS3渲染设计的,拥有高效几何处理技术的渲染引擎,同时它还具有动画播放功能。






  渲染引擎一般会采用分层架构(layered architecture)来组织代码,一般会被分为低阶渲染器(low-level renderer)场景图(scene graph)/剔除优化视觉效果前端
  低阶渲染器会使用图形SDK来设置好渲染器,实现几何图元(geometric primitive)的高速渲染。
  场景图/优化剔除会为不同的游戏场景提供不同的算法来限制提交到GPU的图元数量。常用的算法有平截头体剔除(frustum cull)、空间细分(spatial subdivision)、portal、遮挡剔除技术。其中空间细分算法可以使用不同的数据结构来构建场景图以快速判别潜在可见集(potentially visible set, PVS)。
  视觉效果层专门提供丰富的视觉效果,其中包括粒子系统(particle system)、贴花系统(decal system)、光照贴图(light mapping)、环境贴图(evironment mapping)、动态阴影(dynamic shadow)、全屏后处理效果(full-screen post-processing effect)等。其中全屏后处理效果包括高动态范围(high dynamic tange, HDR)光照、敷霜效果(bloom)、全屏抗锯齿(full-screen anti-aliasing, FSAA)、颜色较正(color correction)等。其中颜色较正包括颜色偏移(color-shift)、略过漂白(bleach bypass)、饱和度(saturation)、去饱和度(desaturation)等。美术师一般会在这一层上面进行工作。
  前端是开发者、玩家与游戏进行交互的桥梁,包括了平视显示器(heads-up display, HUD)、辅助开发的工具(如内置菜单、主控台)、图形用户界面(graphical user interface, GUI)、全动视频(full-motion video, FMV)系统、游戏内置电影(in-game cinematics, IGC)系统等。
人工智能

  游戏中的传统人工智能并不是类似于深度学习的人工智能,而只是让角色看起来有智能。所有貌似拥有智能的行为都是提前硬编码好的,有限状态机和行为树是最常用的技术。现在游戏也慢慢开始加入了具有自我进化能力的人工智能,以后游戏过程中的不确定性会进一步增加。
性能分析工具

  为了提升游戏运行效率,需要在研发过程中或研发完成时对游戏进行性能分析。现在比较成熟的性能分析工具有Intel的VTune、IBM的Quantify和Purify、Compuware的Bounds Checker。有些游戏引擎会开发自己的性能分析工具,例如unty内置的Profiler。一个性能分析工具大致需要具备以下功能:
    支持在游戏源码中手动加入测量代码,为希望监测性能的代码进行计时。游戏运行期间,在屏幕上显示性能统计数据,这些数据包裹CPU占用率、GPU占用率、显存占用量、内存占用量、内存使用率、最高使用率、内存泄漏量、网络延迟、FPS等。将性能统计数据输出并保存下来,可以保存为文本文件、Excel文件等。允许在代码内使用调试用打印语句(print statement),可以切换不同的调试输出种类,并设置输出的冗长级别(verbosity level)。
物理

  游戏物理模拟是个大部头,如果项目有真实物理模拟的需求,那么一般会专门配置一位负责开发物理效果的程序员。
  游戏物理和仿真物理的侧重点并不相同。仿真物理注重模拟效果的准确性,而不关注性能。游戏物理不追求模拟百分百正确,只要最终的效果看起来合理就好,需要特别关注性能表现。因为游戏需要在配置一般的设备上运行,没有太多的算了投放到物理模拟中。只要效果看起来没太大问题,那么它就是对的。
动画

  动画同样是一个大部头,如果项目的动画很多且复杂细腻,一般也会专门配置一位专门负责开发动画效果的程序员。
  动画效果可以很简单,也可以很复杂。最简单的就是播放单个帧动画,复杂的可以搞基于物理的动画、IK效果等。
  负责游戏动画的程序员除了要做好表现效果之外,还要做好资源管理,包括动画资源和动画状态机资源。因为现在大部分项目都是使用动画状态机以及动画融合技术来制作动画效果。
  一个表现效果可能由多个动画clip融合而成。使用这种方案来做动画表现,产出的动画资源一般都不少。
  如果某个模型的动画表现比较细腻的话,它的动画状态机也会很复杂。我曾经见过一个动画状态机打开之后整个屏幕都是密密麻麻的transition连线。
人体学接口设备(human interface device, HID)引擎

  HID引擎会将游戏外设和游戏引擎对接起来。比较常见的游戏外设有键盘、鼠标、手柄。还有一些比较小众的游戏外设,例如赛车模拟设备(方向盘+踏板+挡杆+手刹)、飞行摇杆、VR控制器。



xbox手柄



ps手柄



ns手柄



健身环



赛车模拟设备

  游戏外设的输入信号会先被映射为输入代码,再映射为游戏的具体操作。
音频

  游戏的音频也同样重要,好的音频效果可以营造良好的游戏氛围。一般游戏引擎都有自己研发的音频功能,例如cocos、unity、unreal都有。但是在游戏开发过程中一般不会直接使用引擎提供的功能,而是会使用第三方SDK,例如FMOD、Wwise。因为第三方SDK功能更加完备。




网络

  游戏引擎提供基本网络通信功能并不是什么特别难的事情,但是要提供一套成熟通用的网络同步功能非常困难。不同游戏对网络同步的需求由很大的区别,所以游戏项目组一般都会开发自己的网络同步功能以匹配自己的游戏业务需求。
数字内容创作(digital content creation, DCC)应用软件及资产调节管道(asset conditioning pipeline)

  设计师会通过DCC工具将模型、材质、贴图、音频等工具生产游戏素材。团队一般都会使用市面上以由的DCC工具,例如3DMax、Maya、PhotoShop、FMOD Studio等。这些工具输出的资源格式在大部分情况下没有办法被游戏引擎直接使用,需要游戏引擎对这些资源进行一次转换,转换为游戏引擎方便使用的格式。这个转换过程有资产调节管道来完成。例如每次往unity中拖入fbx模型资源的时候都会出现一个import进度条,正是在进行资源转换。
最后

  这节只是简单带过了各种模块的知识,由于部分内容展开之后量会非常大,所以会在该系列的后续文章中单独讲,也可能会另开一个专栏。希望能帮助到想要从事游戏研发的人。
<hr/>有不少同学问我怎么从零开始学习游戏开发,难以一一回复。这里整理了一份收集多年的优质学习资料,涵盖游戏开发的方方面面


链接:https://pan.baidu.com/s/1C-9TE9ES9xrySqW7PfpjyQ  提取码:cqmd

小弟才浅,如果本篇文章有任何错误和建议,欢迎大家留言
感谢各位人才的点赞收藏,可以关注我和专栏「游戏引擎从入门到入土」
微信搜一搜「三年游戏人」收获一枚有情怀的游戏人,文章持续更新,第一时间阅读

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-10-21 18:46 | 显示全部楼层
这个问题的回答希望楼主看一下我的这几个回答,基本是我本人的经验和总结,希望对你有一些帮助:

《在顶级游戏的开发过程中需要怎样的编程实力》
https://www.zhihu.com/question/57582995/answer/429460158

《研究生毕业做游戏开发需要学什么?》
https://www.zhihu.com/question/270277938/answer/429234459
发表于 2021-10-21 18:47 | 显示全部楼层
谢邀。
每个对游戏兴趣不大的人,我都不建议为了高薪入行。
高薪的行业那么多,有选择没有爱的情况下,非要选个996的是什么心态?
发表于 2021-10-21 18:52 | 显示全部楼层
我建议你把目标修正为进入这两个公司而不是公司的游戏部门,网易和腾讯还有很多其他的技术部门。薪资待遇也不差啊。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 20:11 , Processed in 0.216323 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表