找回密码
 立即注册
楼主: zifa2003293

如何自学游戏引擎的开发?

[复制链接]
发表于 2021-11-16 07:01 | 显示全部楼层
部分反对上面的回答
首先说一下我的个人情况,大三狗一只,大一开始接触编程,接触编程3年,接触游戏编程3年,接触游戏引擎编程3年。目前正在和一个同学合作写一个引擎。所以论经验论资历我大概都不如上面的大佬们,我所说的可能也没有什么可取的意见,不过也可能因为我现在属于游戏引擎开发初学者,反而和题主的要求相符。
那么说一下我的想法。首先,做游戏引擎和做游戏完全是两码事,看清,做游戏引擎和做游戏完全是两码事。开发一个游戏引擎和开发一个游戏用到的技术,思路可能是完全不一样的。上面很多回答都提到先去做游戏开发,开发时间长了就知道哪些东西该抽象成一个引擎了。从结论上说我不能否认,因为最初游戏引擎就是这样出现的。但是我认为这么说是一种很不负责任的说法。这样去说的人,自己去亲自撸过一个完整的引擎吗?自己从main或者winmain开始,从游戏主循环,那个while(1)开始撸过一个完整的引擎吗?如果自己撸过一个这样的引擎,应该很清楚在开发引擎和开发游戏从本质上有很多区别的吧。这里我想再说一下之前有很多人提烂的观点,游戏引擎不是单纯的图形引擎。不可否认的是,对于现在的游戏引擎,重中之重的应该还是对图形图像处理,我觉得说一个游戏引擎三分之二的重点都在它对图形上的处理也不算过分,但是如果看过游戏引擎架构这本书,就会发现,这本书里实际去讲图形引擎的部分实际只有三分之一左右。剩下的三分之二都是不被很看重的游戏引擎框架的讲解。也就是说,如果真正从main函数开始撸过一个游戏引擎,那么应该会知道一个游戏引擎除了一些图形的处理,还需要什么样复杂的系统和架构去支持。举个例子,我相信很多用游戏引擎开发游戏的人,不论用的是什么引擎,只要去拥抱过代码,绝对躲不开一个叫gameobject,或者叫object的类,一个游戏引擎要不要去设计一个object类或者gameobject类?设计的话这个类会产生一个什么样的继承树?这个类中应该实现一些什么功能?要不要留出一些虚函数让别人去重写?这就是一个游戏引擎开发者要考虑的问题。类似的,对于游戏中的游戏对象,要不要提供一个统一的方法去管理所有游戏对象?如果引擎提供一个管理器,这个管理器应该提供什么样的功能?应该如何实现?对于一个游戏对象,如何去管理它的内存?引擎提供一个方便的内存管理方案还是让游戏开发者自己去管理内存?对于一些游戏资源,可能有图片资源,声音资源,脚本资源等等,这些资源在游戏开发过程中如何方便的引入,如何方便的让游戏开发者使用已经引入的资源?如何在合适的时候释放资源以减少内存占用?这都是游戏引擎开发者需要考虑的问题。然后接下来,有了这么多的系统,如何让他们能够整合到一起去工作?这有时一个很大的问题。根据我亲自经历过的情况来说,对于一个游戏引擎开发的初学者,如何去处理那个游戏主循环while(1)可能都是一个要失眠几天的大问题。即使之前开发过很多小游戏,坦克大战超级玛丽随手就能撸出来,写好一个能在游戏引擎中用的游戏循环可能也不是很容易的事。那些说图形引擎好好写,引擎框架随便抄一个的,我觉得这样做还不如老老实实去学一些图形学的东西,去钻研一下图形引擎如何处理比较好。
然后关于题主的“如何自学引擎开发”的问题,我个人就算是在自学引擎开发吧,可能多少能说一点经验。首先模仿是学习的好方式,这点我不会否认,而且我也认为这是一条可取的方案,但是请问,模仿别人引擎,大体框架不动,自己写一点小功能加上去,或者干脆把别人引擎拿来抄一遍,中间稍微改几行代码,然后拿来就说这是自己写的引擎,这样的写出来的引擎自己会认可吗?中国现在也有几款上市的,据说的完全自主研发的引擎,然后明眼人一眼就看出来是拿什么什么引擎改的,这样的引擎好意思自称是自主研发的引擎吗?所以我个人很不建议很多人说的拿来一个开源引擎抄一下,如果真的想自己去写引擎的话,那就自己去写,从别人哪里借鉴一些好的东西是有必要的,但是本末倒置了就只是单纯的抄作业。
我以我的个人经历来说一下如何开始学习引擎开发吧
首先一些基础的必须的知识是必要的。c++数据结构这样太过基础的就不说了,这里需要了解的是引擎到底是一个什么样的软件,《游戏引擎架构》这本书其实挺不错的,但是可能对初学者来说还是稍微难了点。对于初学者(我初学那会儿)可以先接触一些市面上成熟的引擎,比如我就接触过一些u3d,虽然没有深入学,但是大概知道那是个什么样的软件就够了。
接下来,大概了解了引擎是个什么样的软件,就可以翻一翻游戏引擎架构这本书了。可以不仔细的去看,700页的书当成70页去看也没什么问题,因为太细看大概也看不懂。我还想跑题一句,对于这种技术类的书我觉得很不值得推荐的一种看法是看小说试的看法,就是从第一页开始一直看到最后一页。我觉得推荐的看法应该是想要去看那些技术就去翻一下专门讲那个技术的章节去看一下。如果有什么前置知识再去看前置的东西。如果前置的东西不是必须要懂,那么先放置到一边也可以。大致翻一下整个书的目的是大概了解一下引擎要做哪些方面的工作。其实前面有人放过图了,我就不重复放了。
接下来就可以动手开始写自己的引擎了,因为从无到有去开发一个引擎,前置根本没有那么多框架啥的限制,直接自由发挥就能写出一些引擎的功能。如果是一个成熟的架构师,可能在开始写代码前脑子里就有一个大体架构,那就更好了,后期需要修改的东西可能就少一些。这个阶段基本上就是写一些引擎的组件功能,熟悉一下引擎编程的风格。如果之前写过很多游戏,这里可能就能感受的到引擎开发和游戏开发的不同了。顺便说下我的经历正好相反,之前虽然我也做过一些小游戏,但是开发引擎的时候并没有什么不舒服的感觉。反而是在做引擎后我用我的引擎再去开发游戏时,我才发现引擎开发和游戏开发相差那么多。
然后在自己做引擎的时候,可能会发现自己在某一些方面有一些欠缺,这很正常,可以去看一些书,这个时候根据自己的需求去看一下游戏引擎架构里面相关部分的章节是很有帮助的,然后除此之外还可以网上查查有没有相关的资料可以看看(估计没有,因为我当时在网上就找不到,全靠自己想)。然后这个阶段可以尽量接触一些设计模式的东西,这东西对引擎开发有用。
然后接下来就可以接触一些开源引擎的源代码了。自己去做引擎做到一定程度,基本上可以做到看到其他引擎实现的一些功能,然后自己就能想象到他是怎么取实现的。这时候可以模仿一下别人引擎的好的处理。我就在处理人机交互的管理中模仿了一下u3d的输入控制的做法,内部实现一不一样不知道,多半不一样,但是函数调用方式是很类似的。这个阶段可以去看一看别人引擎的源代码,自己处理不好的功能别人是怎么处理的?别人的框架是怎么建的?有一些别人的做法能给自己带来一定的启发。在这之前看别人代码的意义其实不大,大概也看不懂。
我现在实际也就走到这一步,现在在看cocos2d的源代码。可能接下来我要模仿一下cocos2d的垃圾回收机制,把这个加到我的引擎上,也可能不会加。实际上,我认为到了能看懂别人代码的程度,也不算是完全的新手了,接下来该怎么做,大概自己也就知道了。其实我写这些还是因为看到上面好回答,感觉他们都没有从头开发过一款游戏引擎,所以才想写出这些吐槽一下。现在我和一个同学两个人在合作开发一个小的游戏引擎,然后开发完还要接着用这个引擎开发一个rpg游戏。因为对方对计算机图形的东西很熟悉,所以我在引擎里处理图形的东西不是很多,主要处理一些框架的问题。所以对引擎开发中一些不引人注目的东西反而了解的比较多。总的来说我觉得游戏引擎开发是一个挺枯燥的事,但是某一个模块完成了,运行正常的那一瞬间成就感是绝对爆棚的。虽然这个在所有软件开发中都是一样的。题主所说的图形引擎真的只是在游戏引擎中的一小块。如果只是专注开发图形引擎的话,可以不去关注游戏引擎的其他部分也可以。
发表于 2021-11-16 07:01 | 显示全部楼层
苦心开发游戏引擎的人很少,哗众取宠的回答都被顶到了前面。
我虽然也不是什么专家,但是在这里也试着给LZ一点自己学习的心得。我假设LZ的目标是去Crytek,Epic之类一流公司做引擎开发的有志青年。
首先推荐给LZ一个论坛,www.opengpu.com
这上面有不少和LZ一样正在学引擎开发的小伙伴。不要去gameres,那里的东西都是过期的,看了没好处。
你提到的那几本书是要看的,没错,都看。
其他需要的书知乎上蛮多人都讨论过了(我觉得已经被问烂了),你可以看看Milo Yip在知乎上答过的问题。clayman推荐的一些书你也可以看看,clayman - 博客园
我的个人建议是推荐LZ去学DirectX11,实时图形学的历史本来就不长,你还抓着10年前的API不放真是说不过去。
关于DEMO,我觉得十分必要,亲自写了才知道自己还缺什么需要学,另外写DEMO很有成就感。

至于招聘的情况不容乐观,国内做3D引擎研发的非常少,腾讯招人,但开出的条件都是AAA工作室的要求,尤其是要工作经历的比较多。(忍不住吐槽:本来还很期待天刀,现在横看竖看都不是AAA,糟蹋人才)
你看看其他的答主就能理解其他厂商都在做什么了。投钱搞研发不如直接做游戏挣钱,“钱”要越快越好。
据说国内大批的游戏人都通过育碧走向了全世界,capcom在国内也招人。
顺便YY一下游戏机进来了国内也会有一定缺口。

最后我说的都是空话,如果你没能力下苦功钻研几年。

------------------------------------------------------------------------------------------------------
7.20补充

看了回复我发现不少人对我的回答存在误解,我觉得要再码点字。
题主加了个PS,说主要是问图形引擎,即便不加,题主问的也是图形引擎。
正如大家都说的,游戏引擎不过就是把游戏重用的部分提取出来,所以研究价值不高,但是各位可以看看大型游戏公司发表的论文,公布的技术,几乎全是实时图形学的研究,无论是siggraph,GDC。有谁见过游戏公司出席物理学会议的么?
如果题主只是在问游戏引擎的话,也就是说图形引擎也用中间件,那么纯粹是个组装拼凑的熟练活,“做一个完整的游戏”更能练手。
关于AAA,有人一看到这个词就像打了鸡血一样跳出来骂我,大可不必,这个回答又不是在教你“如何混进AAA工作室”
我只是个在校的学生而已,知乎上只会摆资历不讲实在话的人不少,我们天朝人的浮躁就在此暴露无遗。
我不想被人说是在“装b”,所以贴一个自己的博客。
fangsunjian 的个人博客
一来题主可以和我交流,我也是从头开始一点点自学的。二来喷我的那些“工作经历x年”的人们,你们大学时代在做什么?你们进公司当螺丝钉都是高抬了。
另外我进的公司还真不是BAT那样的大公司,引擎开发今年只进了我一个。

------------------------------------------------------------------------------------------------------
7.29补充

好像开嘴炮惹人不开心了,我在这里向 @张静vinjn 道歉。对别人的观点都该尊敬,该换位思考,乱骂人是我不对,向你道个歉。
不过现在容我解释两句。
“仲唐”,“Milo Yip”之类的答案都被顶上来了。我希望这道题的答案应该都是这样的,应该给别人提出一个具体的“学习轨迹”,“学习方向”。
看了题目内容就懂了,题主只是想“谁来推荐给我一点学习资料,学习方法”。
您这样笼统的说应该各种游戏都去做一遍,话很正确,能让人一看就觉得“有道理”,但是肯定满足不了题主,也就是偏题了。
而这样的答案作为“正确答案”,“高质量答案”被摆在前面,这是知乎体系和权威影响力的弊端,我完全不该指责您。
您说的话有自己的立场,那不是“哗众取宠”,我再次为我的言行表示道歉。
发表于 2021-11-16 07:08 | 显示全部楼层
图形模块远远称不上游戏引擎,差的部件太多了。你不可能只做一个光有图形而没有声音、AI、用户交互的游戏。
另外推荐《游戏编程精粹》系列,里面有很多非常实用的前沿技术。
发表于 2021-11-16 07:12 | 显示全部楼层
自己写引擎都是坑有木有。。。
以前在某公司参与过自研引擎的开发(工作需要,本身渣水平),当然目的还是要做游戏(当时cocos2d-x才刚出来,很不成熟,也没啥人用)。当时我不是负责图形部分(游戏引擎不仅仅只是渲染引擎一个模块),因为要配合游戏开发,所以当时的引擎特性根本定不下来。接口三天两头的改,前一天编译无误的代码第二天可能就因为别人某个模块API名称或者参数个数的变化导致编译出错。更不要提各种bug了。
=========吐槽的分割线==========
好吧,言归正传。回过头来,感觉很多东西不经历一遍是很难做到完美的。引擎也是,不写上几次估计都不能算入门。初学最好的办法就是模仿。找几个出名易用的引擎,看看他的整体结构如何,怎么划分的模块。有什么特点。最好再多用用,体会一下对方为什么这么设计。然后思考一下对方的有什么缺点,自己如何改正,然后试着模仿一个出来。不过估计第一次都会痛苦嘛,以后就好了。
你看苹果发布的SpriteKit跟cocos2d有多像,几乎就是换了一个名字。cocos2d简直成了2d引擎的代名词,各种模仿也由此而来。而且cocos2d-iphone,cocos2d-x,cocos2d-js的代码也很容易获得,是个参考研究不错样例。
3D引擎在移动端基本上一家独大了,不过可惜不开源,看不到实现,不过整体思路倒是可以参考。其实还有一些开源的3d引擎,不过现在不太流行就不赘述了。真想学习的话,Irrlicht是个不错的东西。而且这东西很容易编译到移动端。

最后,游戏引擎是一个综合工程,不仅仅只是图像的堆砌,还有声音,网络,UI,物理等等模块。而且很多底层都要有坚实的高等数学和线性代数基础。
希望以上文字对你有用。
发表于 2021-11-16 07:21 | 显示全部楼层
你错过了一个时代

一个引擎纷争的时代

你现在自己写引擎,就是死路一条

我不相信在你确信这件事之后,还能安安心心地写自己的引擎

然而

如果你没自己写过引擎(百万行代码级别的)

就不可能完完全全地掌握UE4的代码,Unity3d的代码(如果你能弄到)

仅仅是使用引擎,不管你有几年的经验,你绝对是用得稀里糊涂

仅仅是拿Direct3D写几句Shader,陪你玩的就永远是那个茶壶

所以无论怎样,我给不出你好的建议

另外,你说你能分清游戏和游戏引擎,那就请你再区分一下游戏引擎和图形引擎

某易某讯的游戏开发团队,解散之前不太可能去升级他们的游戏引擎了,你去了也没用武之地

图形引擎在游戏之外的应用,才是你最应该关注的
发表于 2021-11-16 07:25 | 显示全部楼层
基本上正如 @张静vinjn 说的那样,引擎就是从游戏里来的,所以早期的引擎就是游戏的复用部分,像QUAKE(开源),通用引擎是很后来的事情了。既然题猪提到了游戏引擎架构这本书,我就拍一页做范例加了些框框给你参考(希望没侵权= =)。这是作者理解的游戏引擎的共通的组成部分,上层的是游戏开发者会用到的,底层的是引擎开发商提供的。题猪正在学习和深入的DX其实是底层的其中一个方面(试试找找?:)——换句话来说,世界很大,术业有专攻 :)
常用的引擎有哪些?UE(腾讯英佩),Cocos(触控), Unity比较多吧。通用引擎大同小异,学会了一个对其他也有质的帮助(咦,我没有在说C)。QUAKE、OGRE等开源引擎是很好的学习/理解材料,但是对题猪在国内找工作可能没太大帮助。
游戏/引擎的开发我觉得更像是拍电影,有很多的组成部分特别是艺术的。建议题猪把目标放在尽可能多的开发不同种类的游戏上,积累了足够的理解和经验后再着手引擎的学习,相较于学习引擎然后面试一份工作要合理一些。
Good Luck!

附图:

本帖子中包含更多资源

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

×
发表于 2021-11-16 07:34 | 显示全部楼层
想做图形引擎开发就问怎么学做图形引擎开发,别跟游戏扯上关系。图形只是游戏的一部分而已。

觉得图形引擎技术含量高?AR,CV这种简直笑蛤蛤。

一说游戏必提3A的,不是门外汉就是干了几年还摸不到门道的主儿。

言归正传,想学游戏引擎开发,三个步骤:
1,用现成的引擎写个游戏。
2,自己随便找个开源的造个轮子,把之前写的游戏里用的第三方引擎替换掉。
3,各种看siggraph,隔几天就想办法把里面提的东西实现下加自己的轮子里。

当然其中最难的是第一步,最枯燥的是第二步,最顺理成章的是第三步。

做完这三步,题主绝壁比去虚幻啊ce啊这种国外的引擎公司去当螺丝钉的家伙不知高到哪里去了。
发表于 2021-11-16 07:38 | 显示全部楼层
同学们好,我是妙蛙老师,其实想写这篇文章已经很久了,很多同学也在催这篇文章,但是我迟迟没有动笔。没有动笔的原因有以下三点:
1. 无论是首次就业还是在职跳槽,过程中虽然有很多共性问题,但是更多的还是需要基于同学们的个人情况去做指导,无法用一篇帖子就能解决所有学员的求职问题。
2. 害怕大家误以为只要看了这篇帖子,就一定达到自己的目标。事实上,妙蛙老师的所有求职指导是建立在我们的课程体系上的。如果只知道要达到什么能力,而自身缺乏有效且针对性的学习训练途径,也是没有用的。
3. 这篇帖子篇幅一定很长很长,妙蛙老师对自己写的文章要求比较高,通常会对标研究生论文的质量,所以这篇帖子需要花费大量的时间去撰写。由于平时很忙,所以就一拖再拖(请原谅我为自己的懒惰找了个借口,哈哈)
那么有同学可能要问了,为什么现在又写这篇帖子了?这次下定决心动笔原因如下:
1. 上周助教帮一个同学约了一对一就业咨询,这位同学是在职的,想通过付费方式获取求职指导,个人认为求职指导收费实在没有必要,教育还是要有一定普惠性和情怀的。
2. 每周都会有同学问很多求职方面的问题,其中很多问题是共性问题,我希望通过这篇帖子一劳永逸地去回答这些反复重复回答的问题(其实还是想偷懒,哈哈)。
3. 很多同学其实是因为不了解行业,不了解U3D游戏开发工程师的职业发展导致自己求职失利或者不理想。本蛙希望这篇帖子能够帮助广大学员们提高行业及职业的认知水平,从而让同学们少走弯路。




好了,废话说完,上硬菜,希望大家耐心看完这篇文章,我相信对你一定有一些帮助!文章中出现的各种资料,由于文章尺寸的问题,有可能会看不清,大家可以添加助理小姐姐的微信进行领取!
这篇文章的大纲如下:
1. 游戏行业现在有多卷?
2. 游戏行业数据反推用人需求
3. 大厂招聘逻辑解析
4. 简历自测评分表
5. Unity职级技能体系
6. 高薪入行最短学习路径
7. 最后的寄语



(一) 游戏行业现在有多卷?

过去20年的中国游戏行业可以说是被渠道垄断的游戏行业,但是这个格局正在被一点点打破。
近5年内崛起的去中心化的短视频平台、新兴的游戏宣发平台TAPTAP以及国外平台Steam都让传统游戏渠道的力量一点点减弱,更何况现在国内很多游戏公司已经逐步掌握了海外发行游戏的秘诀。



另外,中国主力游戏玩家正从80、90后转变为以95、00后为代表的新生力量,相比80、90这一代的玩家,95、00的新生代玩家更注重游戏的创新性、品质以及个性化。这导致了中国游戏已经从一个以渠道为王的时代逐步转变为一个以内容为王的时代。
游戏不断换皮靠推广赚钱、端游IP随便改成手游就能躺赚的时代即将一去不复返。这就要求从业者需要做出具备创新性且高品质的游戏才能获得玩家青睐。高品质的游戏需要靠高水准的从业者才能研发得出来,所以近年来游戏公司对于应聘者的要求也理所应当地在不断提高。
妙蛙老师近三年有个很强烈的感受,在我们这学习游戏开发的年轻人年纪越来越小,有的高中就开始学习C#、Unity。有些大一、大二就开始在我们这学习的同学,还未毕业,战斗系统都会开发了,有些对框架设计已经有了自己的理解,有些甚至还在学习渲染技术。这要放在5年前都是不敢想象的,这也是为什么行业老兵觉得新人怎么一届比一届厉害,自己开始产生很强烈危机感的原因。
但是,我觉得这是一件好事。用户要求变高了,行业新人越来越厉害了,才是一个行业在发展的表现。
虽然入行要求变高了,但是招聘的基本要求却在降低。各大游戏公司为了抢夺人才,纷纷降低了对于求职者学历方面的要求。五年前,很多顶级游戏公司还是非211、985不可。但是近年来,很多大厂只需要普通本科就能进入,甚至都不一定是要一本学历。
原因也很简单,学历不能代表一切,技术这条路还是要用技术说话,哪怕你是个博士,如果啥都不会也是白搭。



(二) 游戏行业数据反推用人需求





2-1 中国游戏市场实际收入趋势图




2-2 中国移动游戏市场实际收入趋势图
从2-1、2-2两张图可以看出,2018年开始游戏行业从版号限制的冬天恢复了过来,行业增长率在2020年又恢复到20%以上,这主要得益于以下五点
1. 国内游戏版号恢复申请
2. 国内游戏宣发渠道多元化(抖音、TapTap、B站、Steam等 )
3. 海外市场开拓成绩斐然
4. 国内手游开始进入精品化手游时代
5. 自创IP开始主导游戏行业市场(图2-3)



2-3 收入前100手游产品中IP类型数量占比
在此我们不难看出,游戏行业再次进入到一个快速发展的阶段,这个阶段的关键词是品质和创新。而上一个快速发展的阶段是2012年左右,得益于智能手机出货量快速上升,导致手游崛起。
在此我们可以得出第一个结论:
行业很缺人,但是缺优秀的人,粗犷式发展的年代已经过去了,中国游戏开始进入全球化、工业化时代。(注:这里的优秀不存在职级划分,指的是每个职级都缺优秀的人,优秀的人永远是稀缺的)。
另外,众所周知,游戏公司招聘的时候非常看重应聘者是否有相关游戏类型研发经验。那么,哪些游戏类型的研发经验可以在求职过程中加分呢?我们可以从以下2-4与 2-5两张数据图中得到答案。




2-4 收入前100手游产品中游戏类型占比




2-5中国自主研发手游出海收入前 100中的游戏类型占比
从上面的数据不难得出第二个结论:RPG类和SLG类项目研发经验可以在求职中有很大加分。
而MOBA及射击类游戏虽然占比也不小,但是这两种游戏类型几乎被头部几个IP垄断(大家都知道我在说哪几个),所以大部分公司在立项的时候会避开这两种游戏类型(射击类还有一定空间,MOBA市场已经被完全垄断,除非出现很大的创新及配合很强的运营能力才可能有那么一点点机会)。
(三) 大厂招聘逻辑解析





3-1 大厂招聘逻辑
接下来,我们谈一下大家都关心的话题 —“大厂到底想要什么样的人?”,我们通过上面这张图进行讲解。
1. 第一关:决定你是否会被大厂录用,大厂通过笔试及多轮面试无非在考察以下三点。
a) 当前的技术能力(业务能力)
笔试及面试中的技术层面的问题都是用来考察你当前的技术能力的,而技术能力又可以拆分成计算机基础能力和游戏技术应用能力。
计算机基础能力没啥好说的,刷面试题、刷算法、啃书、看面经,集中性突击半个月到一个月基本能满足绝大部分大厂的要求。
技术应用能力的考察主要是围绕你简历中的项目以及面试官关心的一些技术问题展开。所以,你不难得出一个结论:如果你简历中的个人项目作品应用到的技术不仅有广度且有深度的话,其实整个技术面试过程是被你所主导的。相反的,如果你的个人项目作品比较一般,那面试官就会问很多他所关心的技术问题,万一这些技术问题你压根就没研究过,那这场面试大概率下会失败。




b) 技术追求(内驱力)
说到底,技术这条路是没有尽头的,任何一家大厂都希望它招聘进来的每一个人(无论是初级、高级还是主程)都还有很大的成长空间。因此,大厂会围绕你内心中对技术的追求态度展开探索。你是只把技术当成是谋生的工具?还是会把技术当成终生探索的事业?这一点,对于大厂来说至关重要。
所以,面试过程中,你会经常被问及此类问题,如:“最近或者接下来会研究什么技术?怎么研究?”、“平时喜欢看书吗?看什么类型的书 ?”、“平时的学习方式是什么样的?能简单说说吗?”等等。
c) 克服困难的能力(解决问题的能力)
工作中,无论你技术有多牛,能够解决问题才是真的牛。大厂的逻辑是,我要招的人,是能够帮助公司解决问题,创造价值的,而不是来制造问题的。因此,大厂格外关注求职者解决问题的思路和具体实施的方式。项目中遇到的任何一个能够被称为“困难”的问题,都是一个综合性的问题,需要当事人具备解决问题的底层逻辑。
所以,在面试过程中,我们往往会被问类似于这样的问题 —“在你做过的项目中,你遇到的最大的问题(困难)是什么?你当时是怎么解决的?”。这类问题,往往需要面试者清晰地描述出当时的困难是什么?我们解决的步骤是什么?为什么是选择这样的路径解决的?其实,任何解决方案最终评估它是否合理的重要指标是性价比。在项目研发中,我们往往选择性价比最高的方案而不是“最好”的方案,当然我们有时候也要考虑解决方案所带来的技术负债(技术负债比喻由漫无计划的软件架构,或者匆忙的软件开发引起的后果。又称为设计负债。),最终做一个权衡。
2. 第二关:决定你是否能过试用期,主要由以下两点作为依据。
a) 又猛又持久(别想歪了)



又猛又持久意思是,在工作中,作为新人的你是否足够拼,并且是否能够持久地去拼搏。这里的拼并不是指你要去997、007那样工作。我经常和我的学生讲一个道理,年轻人相比于行业老兵拥有的优势就是时间多,精力旺盛。那我们就应该发挥我们这个优势,在工作中尽量释放我们的精力,加倍速的成长。这样,日复一日,年复一年,你就能在更小的年纪达到老人的技术实力。相反的,如果你入行后,在你专业上花的时间和行业老兵一样,那么理论上,你永远无法超越那个老人。
有个简单的公式可以参考下,假设我们每天进步1%,那么一年后,理论上你的能力就能增长1.01的365次方倍,也就是37.8倍,多么恐怖的成长速度啊!行业里很多大佬,其实就是这样指数级成长起来的,这也是独立游戏圈一些六边形大佬养成的秘诀。
b) 心态开放
心态开放意思是,在面对新技术、面对别人更好的解决方案的时候是否能够做到心态平和地去学习。在职场中,“空杯心态”是尤为重要的。我们经常发现某个人很长一段时间没有成长,往往是因为这个人没法做到“空杯心态”,听不进别人的建议或者内心中排斥外界先进的思想,这是件非常可怕也非常可惜的现象,希望同学们警醒。
做到以上两点,同学们哪怕身处大厂周围环绕各种大牛,也可以放心自己不会被淘汰,甚至可能会被重点培养。因为即便在大厂里,能完全做到以上两点的人也是少之又少。绝大部分人进入职场后成长速度会一年不如一年,最后开始凭借自己的履历混日子,最终被年轻人淘汰。
3. 第三关比较依靠个人特质以及个人的综合能力,比较玄学,这里就不展开来详细说明了。



(四) 简历自测评分表(入行)

看到这里,肯定有同学想问:“老师我知道大厂的要求了,但什么样的简历能敲动名企的大门呢?”为了回答这个问题,妙蛙老师制作了一个简历自测评分表(针对初入行的同学),大家可以通过添加我助理的V信进行领取,自己打分就行。



4-1 简历自测评分表(初入行)
这里,我简单介绍下入行即进入大厂的VipSkill学员的普遍条件。你只需要满足以下几点即可(在职跳槽进入大厂的不在本次讨论范围内)。
1. 当前状态 :应届生(校招)或次级应届生(实习)
2. 学历:本科及以上(我们进入大厂的学员90%都是双非本科,所以并非211、985不可)
3. 专业:计算机相关或数字媒体专业
4. 个人作品:MMORPG项目作品 + 热更新项目作品
5. 比赛经历:少数有省级名次,95%以上没有比赛经历
6. 实习经历:极个别有,98%以上无相关实习经验
以上的条件已经足够敲动市面上几乎所有大厂的敲门砖了,只要达到以上条件,你会发现你的笔试和面试都安排不过来。
(五) Unity职级技能体系

关于Unity游戏开发工程师不同职级对应要掌握的技术点,妙蛙老师制作了专门的5-1职级架构图5-2技能列表给到大家作参考,大家可以对应资料检查自己目前在哪一个职级范围内,所有自测图表可以在下面领取哦。




5-1 初级U3D工程师技能架构图




5-2 U3D职级体系技能列表

这里,我重点讲解下高配版初级U3D工程师需要掌握的知识技能树,看看你点亮了多少。
1. 数学基础
1) 初等数学:重点掌握坐标系的表示与应用,平面解析几何和三角函数
2) 高等数学:熟悉微积分基础和空间解析几何的应用
3) 线性代数:掌握向量和矩阵的概念和应用,重点掌握空间变换的表示和推导

2. 物理学基础
1) 学习过高中物理
2) 推荐阅读O’Reilly的《游戏开发物理学》

3. 计算机基础
1) 计算机组成原理
2) 操作系统:了解基本概念,包括进程、存储、设备管理、死锁、系统调用等知识
3) 计算机网络:了解TCP、UDP基本概念,了解Socket编程
4) 多媒体技术:了解颜色在计算机中的表示、颜色空间、动画基础和音视频处理
5) 并发编程:了解多线程并发编程的基本概念

4. 开发语言
1) C#:掌握C#语言基础及核心库的使用
2) Lua:掌握Lua语言基础,Lua与C#的交互

5. Unity基础
1) Unity脚本基础
2) 编辑器
3) UGUI、物理、动画、音频等各类模块功能

6. 资源管理和热更新
1) AB打包和加载
2) 基于AB的热更新
3) 热更新插件,如xlua插件

7. 程序与架构设计
1) 编码规范及BUG调试
2) 掌握面向对象编程
3) 掌握常用设计模式
4) 掌握常用数据结构
5) 掌握游戏系统设计方法论

8. 算法
1) 排序
2) 查找
3) 动态规划
4) 搜索与回溯
5) 分治
(六) 高薪入行最短学习路径

看到这里,也许有很多同学脑子里会出现这么一句话“天呐,要学那么多东西,这不得学个一两年才行,游戏行业果然卷”。的确,如果你四处找资料学习,会发现学习效率极低,资料七零八散不说,很多都是只有广度没有深度。
我们历经三年时间,终于打造出了一套最短的学习路径,并且经过了全国各地上千名学员的验证(学员中还有来自海外9个国家的留学生),目前取得了非常不错的就业数据,并且凭借这个成绩荣获了腾讯课程TSCI金牌机构认证。




6-1 VipSkill U3D学员分布及就业数据
这里,我分享下VipSkill的高薪入行最短学习路径,如下图



6-2 VipSkill高薪入行最短学习路径


领取Unity入门学习路线规划、大厂简历自测表、免费训练营等众多福利

1. 30天学习C#及U3D基础
2. 7天做1-2个小游戏案例
3. 60天学习MMORPG常规系统及社交系统开发
4. 3天学习lua语法
5. 15天学习热更新技术
在做个人项目案例的时候要严格遵守规范的研发流程,如下图



6-3 规范的研发流程
市面上绝大部分教程是带着你直接一行行敲代码,把前置的需求分析、架构及框架设计、系统设计等过程部分忽略了。这样的学习方式会导致很多同学学了很久也并不具备从0到1做游戏的能力。当自己想做一些功能或者做一款新的游戏的时候,会束手无策,脑子里形成不了方案,这样的学习结果是满足不了游戏公司的用人需求的。
大家需要谨记一点:程序员的根本是设计能力和基础能力,当你有了设计思路并且有较为扎实的基础时,代码就呼之欲出了。
(七) 最后的寄语

技术这一条路是没有止境的,天花板可以非常高,目前行业里厉害的主程年薪可以达到百万以上。厉害的主程,一定是靠一个个项目积累出来的,并且在做项目的同时不断地精进自己的技术。入行只是个起点,它并不是终点,希望大家能够持续不断地学习从而提升自己的能力。
想要孜孜不倦地不断学习,需要毅力,更需要你对游戏开发本身有比较大的兴趣。所以,妙蛙老师建议大家如果有想进入游戏开发的想法的话,不妨先参加一些我们开设的免费训练营,通过跟着老师做案例去确认自己对游戏开发到底是极富热情还是三分钟热度。这一点非常重要,所有的大牛都是热爱自己所从事的行业以及自己所做的事情的。
目前我们已经开设了,如《ARPG》、《元气骑士》、《FPS》等训练营,我们还在不断研发新的训练营案例,想要参加训练营的小伙伴可以添加助教的V信,可以第一时间获取训练营开营通知~
<a data-draft-node="block" data-draft-type="ad-link-card" data-ad-id="Plugin_30a00b4bc07d43995270bd4954c7b6fb">

本帖子中包含更多资源

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

×
发表于 2021-11-16 07:45 | 显示全部楼层
《游戏引擎架构》这本书好像可以满足题主接下来的需要,虽然我也没看过。。。
发表于 2021-11-16 07:46 | 显示全部楼层
第一步,找个你爱玩的游戏,研究其中你觉得最酷的一帧
第二步,根据自己的实力,弱化N倍,重写一个
第三步,重构代码,并尽量接近参考物的图像效果

不停重复第三步,让你的代码变的好用,易用,外加效果NB。慢慢的就是个不错的图形引擎了
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-25 05:44 , Processed in 0.151002 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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