非科班转游戏客户端经验分享

一、前言

本文适用对象为非科班同学,科班大佬理解想必比我深刻,欢迎各位大佬指正!

在今年秋招的过程中,经常逛牛客,刷各位大佬的面经,得到了不小的帮助,因此也想写一些东西回馈一下社区。刚好目前各平台对于非科班转游戏客户端的经验贴也较少,因此写下自己转游戏客户端的一些经历和经验,希望能够给到一些类似背景的同学一点参考。

首先介绍一下本人背景,2本9硕,非科班通信工程专业,技术栈是cpp+UE,简历上一个TPS游戏项目+一段游戏客户端实习,秋招两个offer,一个大厂一个小厂。研二开学前的时候开始转码,确定往游戏方向发展,刚开始学习的时候相比科班基本可以说是啥也不会,CPP只是了解过基础语法的程度,STL是啥都不知道,408更不用说了,只在本科选修过计算机网络,其他的都没学过。

接下来大致总结一下我认为比较好的学习经验,分成算法、八股以及游戏相关技术三个部分进行介绍。

二、算法

首先这肯定是优先考虑的部分,笔试都过不去,面试更别谈了。一提到算法,都知道要刷leetcode,但是对于非科班的同学来说,啥都不知道直接开始刷题肯定是不行的,效率极其低下,也许能看懂答案,但是不知道为什么要这么写,为什么要用这种数据结构来写,刷了和没刷差别不大。因此,在刷题之前首先要有一定的基础,这个一定的基础大概就是CPP基础语法+STL中各种数据结构的特性和区别。各种数据结构的底层实现在刷题前有一个基础的了解就可以,不必过于深入,但是在刷题的过程中一定要对其进行更进一步深入的学习和理解(通常题库是按照各数据结构进行分类的),数据结构的底层实现在面试时也算是八股的一部分,有的面试官会考察的十分深入。

接下来是刷题的内容,刷哪些题,大概要刷到什么程度。首先,在开始刷题前,你已经有了数据结构方面的知识,但是还缺少算法方面的知识啊,有的题在不知道算法基础的情况下是很难靠自己想出来的。因此,首先需要了解各类算法,这方面直接跟着代码随想录刷就行,刷完了代码随想录,基本上百分之6、70的题目都是能够写出来的,接下来就是刷其他题库提高熟练度。我最开始也是刷的leetcode的hot100,之后在找实习的时候发现笔试基本都是采用的ACM模式,因此后续改成了刷牛客的在线题库,有一个面试的题库和一个笔试的题库。这三个题库之间重合度不小,但也有互相补充的部分,最开始刷leetcode,相对来说leetcode刷起来更简单,也不必处理输入输出,能够更加专注于算法。刷完一遍之后就可以刷牛客的两个题库了,面试的题库比较简单,建议直接刷笔试的题库,面试题库到快面试的时候刷刷,保持一下手感就行。刷完代码随想录+hot100+牛客笔面试题库之后,过笔试基本都没问题,最多有一道题写不出来。

虽然通常来说面试的手撕环节会比笔试的题目简单,但是也有可能面试手撕会是场景题,比如写子弹的飞行轨迹和碰撞检测这类的,这部分知识我觉得不算基础算法,应该算是游戏相关知识部分的内容。

注意:上面的题库不是只刷一遍就行,需要针对自己不擅长的部分反复刷,尽量保持每天刷题的习惯,刷多少看个人习惯就好。

三、八股

游戏客户端方向的八股基本都是CPP八股+操作系统八股,涉及一点点计算机网络,主要是TCP/UDP这部分,更多的还是结合具体场景进行提问。同时在笔试时,有的公司也会有选择题,涉及的基本也都是上面的内容。

八股我一般在阿秀的校招笔记这个网站看,面试前看一看加深一下印象。不建议死背八股,最好是自己看一遍书自己理解一遍,再去网站上看八股,结合自己的理解总结,用自己的语言描述答案。在CPP八股这方面,很多需要自己多写写代码运行看看结果,这样理解的会更深刻。

其他的计算机组成原理、编译原理相关的知识,考察到的概率低但并非没有,时间充裕的情况下也可以学一学。

四、游戏相关知识

4.1 图形学

都说GAMES101是必学课程,这当然是没错的,但是对于不同方向来说,学到什么程度是有区别的。对于游戏客户端方向,就没必要说必须要写一个软光栅渲染器之类的项目了,在我的秋招经历里,图形学的问题都是一些比较简单、基础的问题,比如点乘、叉乘的意义以及不同的应用场景之类的。

但不管怎么说,GAMES101我建议是必学的,重点不在于完全掌握所有知识,而是对渲染流程有一个整体的理解和把握,对里面涉及的一些算法的思想有个基本了解,说不定啥时候就能用上。课是肯定要看的,作业也可以做做,都挺有意思的。

4.2 游戏引擎

不管你技术栈UE、Unity还是其他啥,不同引擎虽然有不同的区别,但也有许多公有的部分。了解一个游戏引擎是怎么搭建的、包含哪些模块、不同模块的实现方法也是十分必要的。这部分内容直接看GAMES104就行,当然如果是直接开始看GAMES104,可能会觉得比较抽象,不好下手,建议是先用一个游戏引擎写一个项目之后结合着看,这样会更容易的将理论和实践结合起来,更好理解。整体我建议的顺序是:GAMES101-->项目-->GAMES104。

对于游戏客户端方向,也没必要实现一个小的游戏引擎,理解104里的各类算法就足够了,当然,受限于课时,104里面有些内容没有特别深入,因此还需要自己根据项目里面涉及的内容进行更深一步的学习,比如你项目里对碰撞检测、网络同步这方面涉及较多,那么就需要再去深入学习一下这方面的知识。

整体来说,面试时很多的场景题都能在GAMES104里找到答案,但可能不是最优的答案,因此需要自己深入的探索,多问问AI。

最后是关于引擎使用方面,整体来说大厂不太关心你引擎用得孰不熟练,更关心你是否了解引擎的底层实现也就是GAMES104里面的内容,因此,没必要花时间刻意去熟练使用引擎的各项功能。在做项目的时候用到什么记一下就行。

4.3 项目

对于我们这类游戏小白来说,第一个项目直接自己手搓是比较耗时、性价比较低的,因此可以直接找一个教程跟着做,最好是相对复杂一点的。秋招的时候一个项目也是够用的,就比如我的项目就是跟着教程做的射击游戏项目。

大厂的核心考察逻辑还是在于你的基础,也就是对项目里涉及的内容的理解够不够深刻,而不是调用了什么API,比如我的项目主要涉及碰撞检测、网络同步和延迟补偿,因此我的场景题基本都是围绕着三个反面展开和深入的,用什么算法实现的?为什么用这个算法?与其他算法对比优劣如何?还可以怎么优化?只要在场景题环节体现出你的思考,基本都没有的问题。

4.4 实习

实习这方面没啥好说的,找到实习后做了啥写啥就行,表达清楚自己做的内容,为什么这么做。同时也要多了解不同的实现方法,比如GC优化,就要多了解不同的GC原理以及GC优化方法,基本上实习和项目在面试的时候占比一半一半,只要有能聊的内容就行。

4.5 其他

其他的内容还有什么设计模式之类的,考察较多的就是单例模式,这部分内容在遇到的时候学习就行,比较简单。此外,很多游戏都是CPP+脚本语言开发的流程,比如CPP+lua,CPP+python等,因此有脚本语言基础会更好,没有也问题不大,这部分内容很容易掌握,一般面试官也不会太在意,但是必须要知道为什么需要用脚本语言进行游戏开发,这个问题在实习面试经常被问到。

五、总结

上面提到的内容,只要做到了拿白菜offer应该问题不大,至于sp、ssp要做到什么程度我就不知道了,毕竟贴主也只是一个拿白菜的菜鸟。也许多做一些项目或者多参加一些GameJam之类的比赛?可惜本人当时没机会参加

总之,以上只是一些粗浅的建议,尽早准备,图形学和游戏引擎课的作业能做就做,收获绝对对得上付出。只可惜自己起步太晚,没时间做了,可惜可惜。

全部评论
写的超级好
点赞 回复 分享
发布于 昨天 08:43 广东

相关推荐

昨天 01:39
南昌大学 Java
点赞 评论 收藏
分享
02-06 20:53
已编辑
广东工业大学 引擎开发
面试官大约30岁吧…人挺和善,而且专业认真,之前是做游戏的。上来先是自我介绍然后就是拷打项目环节:游戏引擎感觉挖的不深,问了个反射宏,我说了.generated和UHT感觉还不错,然后我就随便说说unity和ue项目,介绍一下然后也没挖细节。图形学项目挖的深:深入的问了我项目上的技术点,技术点的大概我都说出来了但是还挖更深层次的优化,这方面没学那么深,不懂就是不懂我也诚实说了。然后他说我看你是计算机系的,那我就问问基础的计算机。一开始我以为要问操作系统和计网吓得我脸都白了,因为这俩课下学期才学。结果问八股去了,心情好了很多。八股这块放了个寒假爽玩了几天忘了好多,面试官问到了我用了c++11什么新特性。我说auto,lambda,移动语义。他接着说用auto有什么弊病,就像在给我讲课一样,我也接着说可能能去怎么做。然后还问了多态,虚函数表,这块我复习过结果当时忘了有点卡壳,感觉说的不清楚,他就直接问虚函数表的和虚表指针的产生时机,前面我说了编译器后面我说了创建对象时,后面说完他说对,我感觉前面的是不是错了?下次一定要完整的过一遍再面,不要像我一样友友们!问问实习计划,能来几天。没有手撕代码环节。然后就是问问职业规划,我说我一开始想搞游戏引擎开发,后面看形势不对就想转客户端和ta,他也是真心地和我聊聊劝劝。问问cg和游开方向我有什么想法。我说都可以,我都感兴趣。他也给我讲讲这俩的区别和内容,我也接着讲讲我的拙见。感觉他还挺认可的。最后反问环节,我就问问游戏业务,我以前都不知道ks有游戏业务,这一问直接给他整笑了,耐心和我解释。感觉像是气笑了,我接着问了部门业务,他也很贴心地给我讲解。整个面试大约40min,总体而言,面试官非常认真,我说的很多技术点估计他也做过,都会像老师一样和我讲解,可惜我对图形学没那么上心了…面试官真的很耐心地给我讲解,啥都讲,感觉像交流会一样,给人受到重视的感觉这一点我很感激,我本来以为没人重视我们这些大二小💡。总之人生第一次公司面试,体验真的很不错,就是感觉我的发挥拉了,紧张了。
查看10道真题和解析
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
6
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务