想清楚自己想做游戏,还必须想清楚自己具体去做哪个岗位,并且调研清楚各个岗位的具体要求。游戏行业的几个岗之间可迁移性并不非常高,做客户端的,做引擎内容生产的,做渲染的,做服务端的,做工具和做TA的,学的技术差异较大;
从结果来看,这篇文章中的学习路径是有偏差的,仅仅做一个春招实习的总结;所有这些求职没有冲破一面的,因此能提供的题也很有限
2022年1月到2022年9月我陆续参加了好多种类千差万别的笔面,最大的问题就是一会投图形一会投客户端一会投引擎,因此23年起我想清楚自己的方向,打算做渲染,并且学了小半年,从23年3月开始投递简历,准备冲23暑期实习;
我决定这样准备的起因是22年8月看到了21年秋招的两篇网易互娱图形工程师入职面经,我发现图形岗的知识和我目前已经学的东西较为重合,我对图形学知识比较感兴趣,而且图形岗不需要刷C++算法题。
21秋招网易互娱图形工程师 20秋招网易互娱图形工程师
当然事后证明,这个规划是非常糟糕的。原因如下:
22年初学了一段时间DX12,搞来了经典的D3D12红龙书,但是代码深介绍短,最后弃了,因此后来在面试的时候这部分=0 22年5月-6月在研究Unity,重点搞了一段时间Unity动画,但是只是做了一个前进跑步跳跃的人物动作的demo,不足以写上简历,也没找到很好的进一步钻研的方向
22年8月-9月听说骨骼动画很重要,总是在面经里面看到IK解算算法什么的,又学了两个多月3dsMax动画,并且做了3dsMax的一个导入导出,能导给自己games101的作业项目,最后能在unity,3ds和自己的项目之间三段互传
22年8月-9月与此同时还写完了Games101的作业,中途有很多自己的想法,也尝试性做了一些拓展,比如从3dsMax输出的obj文件里面读取模型load到我的101作业场景里 (吐槽一下:现在回顾,感觉101的作业其实做的也不是特别合适,因为101的作业系统是一个虚拟机下的C++软渲框架,好处是避免了配环境,坏处是助教自己写的关键逻辑一大堆,经常在这堆原创代码里翻来翻去找关键逻辑最后晕眩,与其这样还不如直接去配个openGL环境,openGL项目是GPU运行的,当初的小奶牛项目在CPU上已经开始卡了;使用openGL还可以加深学生对于渲染管线的理解)
22年9月-22年12月 因为学校的事情很忙,分身乏术,但是也是此时接触了一些openGL,感觉可以学但没怎么学,但还是把101的作业整理了一下,做了一个自己的C++软渲染光栅器程序 22年9月-22年12月 同时我意识到了求职功夫在平时,三个月间坚持刷掉了一遍代码随想录,同时9月里的腾讯面试让我意识到自己的问题,我的C++根本就是0分水平,所以开始认真看C++ Primer,到22年底我看了除去16章以后的所有内容,整理出了自己的C++面经本子
学完了learn openGL, 一直学到pbr;因此会写shader,知道图形渲染管线的过程,但依然说不上熟悉和精通。learnopenGL是一个很好的资料,远胜于红龙书对DX的介绍,虽然红龙书在深度上略胜一筹,但是初学难度太大,并不适合仅仅学习了图形学基础知识的选手作为第一款图形API入门。
用了一款图形Debug软件RenderDoc,是一个很了不起的生产力工具,对于渲染管线进一步加深了理解
正好是chatgpt热潮,这是一个更了不起的生产力工具, 最关键的倒不是能帮我在游戏开发上做什么,关键在于他能帮我查文献 + 秒面经,很多时候刷到一个没见过的面经,只要问chatgpt非常有帮助
因为学完了learn openGL,我得到了一个勉强能写进简历的图形项目:一个实现了PCSS、环境贴图和PBR等效果的简单场景,这个项目看着比较唬人,实际上根据我的时间管理软件,一直到不含IBL的PBR学完,我大约在openGL上花了不到100个小时,其实如果拿出点强度来,这些工作是可以在三周时间内高强度工作做完的,而我花了三个月……
我开始高度关注自己时间管理软件上的统计结果,工作日的平均专注时间来到了六个多小时,我逐渐感觉到高强度的实干让我心里的焦虑有所缓解,尽管面对面试还是很紧张,但是我心里有种开始做实事的踏实感。
一年多的游戏开发自学之路,走过了漫长的学习,经历了很多折磨。我是一个研究生专业不太好的跨专业自学者,211本+普985硕,本以为硕士身份在求职者的海洋中位列前茅,谁知道实际上今年的行情,清北亦有不少折戟沉沙,更不要说我了。
我22年下半年其实学的不太好,而且有用的都没学。当时在导师厂里打工,做的是传统web项目,厂里有点怪,需求一天一个样,前期做了两三个月APP突然就转头让做小程序,想要东西的时候急匆匆催着要,但是常常你上去跟进的时候对面又嫌烦。最后12月的时候因为宿舍问题我就离开公司居家办公了,结果一从公司离开对接的人直接开始不理我了,最终整个项目不了了之,开发了一套微信小程序项目就此流产,我为此浪费了将近四个月的时间。这让我23年3月陷入了血崩:我一面要准备暑期实习、一面要搞毕业课题,一面还要上课,本来也是水课,可以混一混交齐作业就过的,但是不同往年,今年学校突然让我们所有人必须去学校线下上课,课多老师事儿还多,这样一来我的压力一下子顶上来了。
一边三线程,早上上课晚上参加笔面夜里补每周汇报,这就是我的暑期实习求职实况。
2023年春天,无论是打开b站还是招聘群,到处都弥漫着一种焦虑而绝望的气息。一些视频和文章说23年是最坏就业年,大学毕业应届生来到10M,而且疫情宅家延后就业的往届生也会加入招聘大潮。另一方面,牛客热搜《笑话》这样说:暑期实习是个笑话,研究生工作是个笑话,读研是个笑话,我是个笑话,也有看到同方向oc的同学,但是更多的是被挂,挂笔试挂一面甚至挂简历的同学,大家在各个招聘信息团体里传播着这种绝望。
我倾向于认为今年确实是寒气确实波及到游戏行业了,我的几个证据如下:
我是fw
背景:22年7月,此时学了两个多月杂学,没有系统看C++;看了一些图形学网课,但是很多细节没有深入去想,比如shadowmap的过程,我在101网课里跟着刷妙啊,觉得自己会了,但是因为没有上手实践,面试官问到如何用深度纹理与实际shading point形成映射我就答不出了
经典八股 C++和C#的区别? C#没有指针,如何管理内存? 讲讲看List容器和Vector容器的差别? new 的用法,一个new的对象内存如果不回收会怎样? 智能指针了解如何? public,private,protected各自的权限范围,有没有例外(友元) map的底层? 红黑树? 虚函数、虚表? 32位浮点数的结构? struct 和 class的区别? 用过哪些设计模式?
图形学 有无实时渲染项目经历 Unity Shader里面顶点着色器和像素着色器的输入输出分别是? 像素着色器的输出除了颜色还有什么? z值的作用? shadowmap的过程?如何用UV计算光源出发形成的深度对应哪个实际点?
学的太差了,基本属于是没有参加选拔的资格,项目是现凑的,简历是吹牛的,面试是爆炸的 但是勇敢地去参加面试确实让我学到了很多东西,我抓紧机会问技术面老师我的问题在哪,我后面应该怎么调整,她建议我把一些基础搞搞清楚,然后做一些实时渲染项目
投的所有公司里完美是回复最快的,3.10写了申请,发过去半个小时就发来了笔试邀请,当天就考 我选的这个方向看起来是引擎向,但是我做了一下笔试认为和我想做的方向是比较接近的,并没有问引擎架构、unity/ue使用这些知识,当中60%都是图形学和渲染知识,剩下30%是和图形编程密切相关的C++基础,并没有铺天盖地乱问八股,我认为试卷考察的知识点和我所学的非常匹配,因此重燃了一段时间的自信
笔试内容只能凭回忆说一下了,题型是选择题+问答题,重点聊一下问答题把,六道题60分
考完试第一反应是不错,终于有一张试卷和自己知识比较匹配了,之前面了一些岗都是没搞清楚游戏岗位的侧重点,重点问系统原理和C++;但是总体上答得还是不太行,两道大题明确没写出来,其他题也有一些细节没说好,就,这个试卷真的很简单,如果这些东西都答不好真就有点说不过去了,比较自责
笔试完了感觉还行,我等,等到第三周感觉自己已经寄了,结果3/30接到北京电话(求职季真的不敢不接电话),果然是完美,你还记得我啊完美,约了第二天一面 一面非常短:
到这里面试大概也就问了四五个问题,这个时候如果是腾讯的一面还没开始问项目呢,结果面试官这个时候来了这样一段对话: 面试官:行,我知道了,你做过UE吗 我:UE自己玩过,说不上会用,Unity接触更多一点 面试官,哦,我们这主要是做一些UE源码的更改工作啊 我:啊,这, 面试官:行吧,我了解完了,那你回去等HR通知吧
回来以后我对这番对话反反复复地揣摩,老师到底是什么意思?他是说我的技术栈和岗位不匹配,HR会发感谢信的,还是说虽然你技术栈不行,但是我看你还行,你等HR通知你二面或者HR面吧
百思不得其解,其实完美这个岗位的招聘要求是没有写引擎经历需求的,只是说了工作内容是搞引擎,这也正是我所看中的,所以才来投递,因为引擎学起来又多又杂,跟着网课看内容太长且缺乏动手反馈,自己琢磨又难以形成体系知识,我更希望能让图形学知识和写过shader的经历发挥作用。
4.10 通知没有过一面 完美全程的流程并不慢,HR老师比较尽责,回答了很多问题,我也很满意其在流程上和笔试命题上的安排;
但是完美的技术面也是给我造成最大心理阴影的。我在等一面结果期间看到了问的很简单的完美客户端oc帖子,也碰到了oc腾讯引擎岗的同学,这些分享让我看到了希望的曙光,我觉得自己学的东西也很多,也许找到暑期实习是有指望的。然而最后还是通知我一面挂了,我心有不甘,请HR帮我联系一下面试官,给我一些问题和建议,面试官的回复是:“距离能实现渲染全过程有一定差距”。
这个回复再一次对我造成了巨大的打击。我觉得如果是“缺乏UE实践经历”,我或许还能比较坦然地接受,并且在接下来五个月努力学习UE来弥补自身差距,而这里认为我不能实践渲染全过程,是让我很失望的一个评价。也许是面试官问我软渲器项目时,我没听懂他的问题,他问能不能通过修改着色器代码改变显示效果,我说我的软渲器里着色器是C++语言的函数,并不是编译shader。软渲器经历的时间也有点久了,并没有展示出其亮点,甚至没能成功把话题引导到渲染管线上。
不知道为什么鹅收到申请之后立马给我回了个综合素质测评的链接,我做了一下,大多数都是职场价值选择,逻辑思辨和智力题,做的头晕,据说是随便写,不太考察得分(可能主要用于为海投增加一些成本) 3/10投简历,之后到3/21收到电话面试通知,约了3/24电话面
这里电话面碰到一个状况,我投的是游戏引擎开发方向实习生,发来的面试邀请是客户端开发实习生,我碰到这个情况是很紧张的,立刻想起了许多剧本(看的面经多了,哭惨的确实很多),害怕遭遇kpi面,一直很紧张
我并不是第一次参加腾讯的面试,22年暑假的时候有一个腾讯研究性实习生的面试,我当时答得简直是烂穿了全程拷打,但是我也因此能稍微知道腾讯会问一些什么,一般会用多一轮面试来考察一些基础,把C++,数据结构这方面的经典bg考一考
3/24参加了电话一面,感觉还是比较基础的,有一些问题没回答好;
总结: 老师比较不满的主要是有几次我在用库和工具回避问题,比如view和projection是怎么算的我说glm::lookAt + glm::perspective、然后mipmap我说是openGL做好了的不用我们做,其实老师是想要考察原理而不想听我说这个,我完全可以说一下虽然可以调库但我可以说一下原理 有几个问题有瑕疵,混叠其实没学到所以寄了,然后光栅化过程说的很烂,绕的面试官感觉有点丢失耐心
随后又接到腾讯的通知,让我去补一个笔试,我是初筛-行测-一面-笔试,腾讯的笔试题目很不错,见我在经验贴里订正的内容:github我的笔试订正
这次笔试A2/5,加之后来回忆起来面试有几个问题也不好,感觉寄了
一面和笔试后又陷入了等待,我隐约觉得自己要寄了,腾讯的面试回答答了几个缺陷,而且我在群里看到有人一面结束立刻接电话说接着二面,第二天又通知隔日三面,而我等了十来天还是没有后续的通知。
挂在一面/笔试之后,我反思了一下,自己项目最亮点的是用openGL实现了IBL,但是IBL的细节居然没讲清楚,只是抱着IBL specular项当中的cos-roughness预计算贴图大讲特讲,这非常糟糕。前面答的漂亮的C++面经,其实在项目经历面前没什么含金量,而我没答好IBL,这直接杀死了我的一面。
加之我投腾讯投的有点迟,我参加笔试的时候一轮的oc都已经拿到一周了,总结为寄
3/7 投递,3/22回复说进了笔试,但是笔试时间另行通知;3/31通知4/2晚上笔试,不接受时间调整,至此过了快一个月了。
这里聊一下笔试内容,笔试做的我有点不开心,简单是确实简单,但是完全是计算机基础知识+智力题,做到选择题最后几题甚至开始甲乙丙是山东策划福建程序湖北测试的逻辑推理题,又花时间分又少;填空题后面也是巨长无比的代码,一段代码里面四五个函数,每个函数三四个参数,堆在一起看得人想吐,而且点名批评第五题程序阅读题,命题人似乎生怕不能在一道题里把C++的所有运算符全用上,各种下标符套函数套位运算,非常浪费时间,别跟我说这是阅读代码的能力,这很显然是一个没有实际意义的教学代码,我本科C语言期末考试老师出这种题也被大家骂惨了
其实也不该抱怨,毕竟这个考试可能就想筛选计算机基础知识学得不错的本科生,但是题量又大、时间又短,20条选择6个程序阅读2个编程只给90分钟,这就非常难受了,心理上知道这个试卷很rz但是自己又做不了多好
感觉吉比特的笔试和其他家确实有比较大的差异,不是说今年巨卷吗,不是海笔海筛吗,同为海笔,我宁愿是四道编码题A0条技不如人输给acm金牌哥啊。回想起来感觉自己还能做得更好,心态上怎样从来不会左右最终的结果,反思一下整个春招实习求职已经过半,还是没有一家比较有希望,不禁一阵凄凉
3/13投递,今天4/11,还是没有回复,官网进度也是等待筛选结果;但是发现4月1号起雷火又更新了一些实习岗位,我又补充投了雷火的客户端岗。面到这个时候,手头的机会基本全都凋零了 4/13 发邮件约了客户端的 4/22笔试 4/22 笔试也不理想,当初为了逃避刷算法跑来学渲染,果然遭报应了 笔试里面算亵渎给我整吐了,当初刷视频刷到过某老师讲算亵渎,刷到过戴佳伟对的对的对的不对不对不对,当一个梗开始攻击你,你会发现你只会玩梗
在之前的半年里,除了学校毕业课题、实验室任务、开题等不得不花很长时间应对的挑战,我剩余的能够支配的约四个月时间全部用来学习了图形开发,用了将近100小时系统学习了Learn OpenGL这个专业性与学习难度都非常适合的教程,做了一些自己当时很满意的效果。虽然也在刷C++算法,但是现在大厂的原创题确实很难,还有很长的路要走 总结几个心得:
某某岗进去现学都行,啥都不用之类
。点击就送的神话在2023年还是听听笑笑罢了。我没有思考过我进厂做什么,做这件事需要的核心技能是什么。推荐一个TA职业规划经验:技术美术职业概述及入坑指南Kerry佬。一句话:任何时候,如果你觉得自己这个岗位这个方向已经找不到东西学了,那么很可能你已经陷入了重大的错误中了。 我之前过于迷信互娱图形面经,觉得自己学完了openGL,又看了一批图形面经,和这个面经作者比相差无几,甚至他是秋招我是实习,那我已经无敌了。这种想法真的很搞笑。