游戏开发秋招回顾和反思(给明年秋招的同学)

秋招Timeline

25届秋招从7月末开始投递面试集中在8月,9月基本已经在hr面和等offer阶段,泡池子可能会很久泡到10月底

截止今天,拿意向书的有腾讯天美、米哈游,还在泡池子的有字节,转正挂的有雷火(没消息应该是挂了)。

准备过程

2022.09-2023.03

这一段时间主要在上课、给导师做横向(和游戏毫无关联的前端项目)、科研。研究方向是图形学-物理模拟,这段时间,经常看知乎大佬的科研产出,各种炫酷吊炸天的demo,在Disney、Pixel、WetaFx里的特效应用,也想认真搞科研,说不定未来能去国外读博。但是无奈基础太烂,所以这个阶段基本是补基础-焦虑痛苦的过程。先后大概看了这些课程/书籍:games101(渲染入门)、games102(实时渲染)、games103(物理模拟入门)、games104(游戏引擎)、LearnOpengl、RayTracing in One Weekend、连续介质力学的网课(川大)、RobertBridson 《Fluid Simulation for computer graphics》、蒋尘凡夫siggraph course《mpm tutorial》、taichi图形公开课(刘天天)、games201(胡渊明)。也看/做了些项目:参考了Fluid-Engine-dev写了个小的流体解算器、写了个mpm解算器、玩了一下Houdini的脚本/插件/渲染(连连看)、学了一下稀疏空间数据结构(OpenVDB、SPGrid包括他们的论文)、渲染方面写了个简单的软光栅、简单的path tracing、opengl写的一些实时阴影算法。

然后就是跟导师确定要做mpm,看相关的论文,主要以蒋尘凡夫实验室的为主,用的也是他们组的框架,在这一段过程中,深入的学习了一下这个框架,里面的各种无锁多线程染色方法、模版元技巧、各种设计模式、几何算法都写的引人入胜。

也是在这个过程中,发现自己的数理基础很薄弱,没有认真系统学过数值计算、物理方面的计算力学,也没有特别的高性能计算的功底(SIMD、Cuda),我的能力对于搞图形模拟的科研来说显得捉襟见肘,也大概了解了一下行情,做图形科研如果没有若干篇siggraph和博士学位的话是很难进入工业界的,于是开始转型去实习。

2023.04-2023.05

学/复习了这些内容:C++面向对象基础(侯捷)、实际项目中的C++技巧与设计模式(b站小彭)、图形八股、简单学了一点Unity和C#参与了一个unity横向(至今基本不会)、编译连接原理(程序员的自我修养那本书)、复习408(操作系统、网络、组成原理、数据结构)、随缘略微刷题

2023.06-2023.08

实习:去了家医疗行业的小公司、做虚拟手术的物理引擎,老板人很好,交大毕业40多岁,每天亲力亲为推公式写代码、还给我们讲论文。实习中做了一点几何剖分方面的工作,看论文复现为主,但是最后出于性能、稳定性方面的原因,没能搞出来集成进系统有点愧对老板。值得吐槽的是,传统行业C++版本很落后,用的还是98,多线程用的pthread。

2023.09-2024.04

实习:腾讯-ieg-游戏前沿技术,做美术工具,c++ sdk、DCC和引擎插件(maya/motionbuilder/3dsMax/unreal)。做的工作有点偏动画TA,mentor是育碧出身的TA、leader是nvidia、autodesk出身的引擎程序,半年时间除了些许杂活,做了两项很有意思的工作,一个是pose space deformation,另一个是伪物理的动态骨骼(类似于kawaii physics和magica cloth,但是做在maya端)。这个过程,还是比较符合我的理想中的工作内容的,一些线性代数(各种坐标空间转换、各种形式的线性方程组的最优解法)、一些调研(看一些GDC上的内容、一些paper)。Leader、mentor人都很好,中途被分了个活,我觉得对自己提升不大,主动找leader让换个活,他很爽快的同意了并且让我积极的去做一些预研的工作。最后离职的时候还是很不舍,但还是想去项目组体验一下真实的游戏开发流程。

2024.05-2024.06

为了完成毕业要求,在家赶论文,赶在6月投了篇工作。这一过程,主要在写modern c++和houdini插件。然后也带着看了些八股,拿了网易雷火项目组的暑期实习offer

2024.06-2024.09

实习:网易雷火在研unreal项目。做了1个月编辑器工具,2个月gameplay和ui,了解了一下游戏项目组真正的运作过程,日常996写单子。项目组有很多知乎上活跃的大佬,跟他们学习了很多。这三个月还是比较辛苦的,每天9点半到11点随机回家,跟对象打会儿游戏,然后准备秋招。这一阶段因为在做realtime的gameplay,所以更多的是在学引擎源码,包括动画系统(动画蓝图的执行过程、自定义节点)、引擎数据结构(无锁队列、FTaskGraph)、物理系统(chaos)。在雷火的共享文档中也学习了不少内容,包括ue的gc、反射、合批、性能优化技巧(只看过没实操过)。

在 8月份,开始秋招面试,基本是约会议室面试,每次面完都要赶回来跟策划、ux同学沟通业务,赶单子进度。

面试总结

因为我没有投很多家,面试也比较少,可能存在一些以偏概全的主观论断。

大部分面试都是以聊项目、聊实习、聊论文为主,穿插简单八股和算法题/数学题/智力题。当然也有些面试会着重考察计算机基本功,给的题比较公式化,猜测面试官会开个文档,从c++、数据结构、操作系统、组成原理、编译原理、渲染、几何、动画、引擎一条一条的问过去然后记录。还有些面试会着重考察c++和数据结构基本功,会让我完整的实现一个功能完善的数据结构,自己给出测试用例并自检,然后还会提出新的功能要求。

经验教训

  1. 算法科研不死磕,如果自己不是这块料,立刻换方向all in工程
  2. 要有突出的“点”来吸引面试官。如果一个项目/实习/论文能和面试官聊15分钟以上,并且被他不断追问的情况下也能侃侃而谈,那基本稳了。这个“点”,对于游戏开发而言,要么是对引擎某一个子模块/子领域深入调研、断点调试;要么是实践中的对性能优化了百分之多少;要么是搭建了一个很成熟完善的战斗系统之类,并证明他的可拓展性。当然其他的还有很多,只要有大量调研、技术深度、自己的思考......
  3. 基础要扎实(八股)、代码水平(多写、多用高级技巧和设计模式、多参考开源项目重构自己的项目)
  4. 暑期实习要优先选未来想去的城市/工作/岗位,这样秋招时就多一个转正的选择。如果确定要转正了,要向leader要核心的活,否则答辩会被argue
  5. 时间线规划:现在秋招越开越早,提前批一般7月就开了,所以最好4-6月暑期实习,总结整理实习内容之后参加秋招。
  6. 刷题不重要,题刷的多不如业务匹配度高,他想要你的话不会给很难的题,hot100 is all your need。(我到秋招结束只刷了30道题,友塔给了一道hard,明摆着不想要我,我直接说不会,其他公司的每一题都A了)

最后也想问问牛友们offer怎么选

#晒一晒我的offer##你觉得今年秋招难吗##牛客创作赏金赛##你都收到了哪些公司的感谢信?##投票#
全部评论
天呐这就是大佬吗,这样对比一看我读研期间简直荒废了两年指导今年五月份才想起来找实习,着急忙慌的各种基础都没有打牢
10 回复 分享
发布于 10-24 20:47 浙江
太牛了…看的我啧啧称奇啊,本来刚开始看还有点酸,后面就释怀了,感觉该你拿offer啊
4 回复 分享
发布于 10-24 18:43 瑞典
哥们啥学校啊,比起你来我太菜了,但是你简历挂的很多我都过了,但是我太菜了那几个都是笔试完无回应
2 回复 分享
发布于 10-25 12:01 湖北
感觉米家和鹅挑个喜欢的base就好了
1 回复 分享
发布于 10-24 18:19 广东
不是哥们,你做科研的工作时间用了多久啊😂
1 回复 分享
发布于 10-24 18:35 浙江
太吊了,大佬
1 回复 分享
发布于 10-24 22:44 湖北
米吧,听说米往鹅跳槽涨薪幅度很大
1 回复 分享
发布于 10-25 23:45 广东
鹅吧,米好像下坡路了
1 回复 分享
发布于 10-30 23:47 浙江
非常好的分享
点赞 回复 分享
发布于 10-25 00:19 辽宁
图形/引擎这边真的不需要刷题。。。我面了30场+就撕过两次题,一次反转链表一次统计二进制1个数。。白刷了400道题。
点赞 回复 分享
发布于 10-25 02:45 湖北
大佬tql
点赞 回复 分享
发布于 10-26 11:54 北京
厉害厉害
点赞 回复 分享
发布于 10-26 12:24 辽宁
牛的兄弟,游开榜样了!
点赞 回复 分享
发布于 10-26 22:39 北京
该你拿offer
点赞 回复 分享
发布于 10-28 19:05 湖北
建议米
点赞 回复 分享
发布于 10-31 19:37 广东
佬是超人吗
点赞 回复 分享
发布于 11-02 12:11 北京
与佬相比差距真大啊
点赞 回复 分享
发布于 11-10 02:15 安徽

相关推荐

不愿透露姓名的神秘牛友
11-08 13:17
已编辑
网易雷火 游戏引擎 n*16 其他
点赞 评论 收藏
分享
11-06 12:10
已编辑
中南大学 Unity3D客户端
图形开发时间线TimeLine:9.21投-10.17笔试-10.24一面-11.1二面-11.5hr面已经是还在流程的几家里唯一的大厂了,球球收了孩子叭,牛客许愿会灵吗,会的吧?总之,先发个一面面经涨涨人品,后续秋招结束会发总结篇,里面有鼠鼠为数不多的十来场面试的面经,以及一堆的笔经(总之就是非常惨)(83min)- 自我介绍- 平时怎么学习图形学?看过Unity,UE源码没有?- 说说C++的共享指针?- weak_ptr是怎么工作的?- shared_ptr是线程安全的吗?- 构造函数可以是虚函数吗?- 虚函数机制?- 虚函数表什么时候构建的?存在哪?- 虚函数表怎么构建的?内存空间连续吗?- 虚函数表除了虚函数地址还存了别的其他什么东西吗?- 如果一个基类函数不标明为virtual,子类重写了这个函数,那指向子类对象的基类指针调用该函数会发生什么?- 只有纯虚函数的类有虚函数表吗?- 子类不实现纯虚函数会怎么样?在什么时候会报错?会报什么错?- 说说vector的扩容机制?- 说说list的实现?- 如何高效的查找有序的list里的元素?- list二分查找的复杂度是多少?(O(n),我当时没想出来)- 如果考虑空间换时间,时间复杂度可以是多少?(这里脑子抽了,我说分别存储每一次list二分之后的结果,存储在vector里,然后二分的时候只需要比较尾节点,然后转移到对应的list里进行下一步查询, 事后感觉应该是想引导我说,把list用vector存一遍,然后在vector上做二分)- 说说优先队列的实现?- 堆是怎么实现的?插入数据的时间复杂度是多少?- 插入的逻辑是怎样的?- 你的渲染引擎是怎么考虑跨平台的?- 你写的shader是怎样在目标平台运作的?- shader里你是怎样采样贴图的?讲讲API的使用?- textureLod怎么用?- 如果不提供level,GPU怎么知道要采样哪一层的Mipmap呢?(通过贴图uv在屏幕上的变化率决定)- 你刚刚说的u对x,v对y的偏导里的x和y是什么坐标?- 除了这个坐标空间还有哪些坐标空间?- 三线性插值是怎么做的?- 讲讲OpenGL的一个渲染管线?- 顶点的裁剪坐标空间坐标怎么得到的?- 后续会被怎样处理?- NDC标准空间的xyz取值是多少?- 锯齿是怎么形成的?在哪个阶段生成的?- 有哪些抗锯齿手段?- MSAA和FXAA有什么区别?- MSAA的硬件实现是怎么做的?- FXAA怎么做的?- 实时阴影你怎么做的?- 点光源的阴影要怎么实现?- 只能是生成CubeMap吗?不能生成Texture2D吗?(傻了,忘记CubeMap可以展开在一个Texture2D上或者干脆用柱状投影图了,我说你非要搞那就整一个Texture2DArray)- 你实现BVH的目的是什么?- 视锥剔除有必要吗?不是裁剪阶段也会做剔除?- 平时渲染方面怎么Debug?- 如何优化shader的效率?- 为什么尽量不要写if/else语句?那什么时候能用呢?- 减少采样操作?怎么减少?哪些采样操作可以移到CPU做?- 如果必须要采样呢?怎样做优化?以PCSS为例?- 为什么尽量少做那些复杂的数学运算?反三角函数,矩阵的逆什么的?- 线程和协程的区别?(太久没看真忘了,支支吾吾嗯是说不出啊,早知道直接说不知道了)- 那线程和进程的区别呢?- 反问?  - 图形开发工程师隶属于什么部门?引擎部?中台?(统一校招,进去之后再细分,可能进项目组可能进中台)  - 这个职位入职的培训和游戏开发那边的培训有什么区别?(差不多也是miniGame,内容上可能区别比较大)  - 可以知道具体的工作室吗?(进去之后双选)  - 如果我想胜任图形开发工程师这个岗位,需要再巩固加强哪些方面?(被说计算机基础不牢固了,奶奶滴,我就那个协程没说好嘛!(ㄒoㄒ)) #网易# #网易互娱# #游戏开发# #许愿# #时间线# #一面#
查看55道真题和解析
点赞 评论 收藏
分享
46 101 评论
分享
牛客网
牛客企业服务