如何自学游戏引擎的开发
PS:题猪分得清游戏和游戏引擎的区别,所以各位答主不需要劳神解释两者的区别关系什么的了
PS:这里的游戏引擎暂时指图形模块,其他的声音,物理,网络,UI等等模块暂时不考虑
题猪一直自学编程,有c++、数据结构与算法 基础,现在正在自学DirectX9.0,(自然是看红龙书了),想着以后能从事游戏引擎开发相关的职业,敢问各位路过的大神提些宝贵的意见
Ⅰ:DirectX基础部分学好之后应该如何继续学习?直接看开源的游戏引擎?还是进一步深入学习DirectX可编程渲染流水线?还是看其他一些比如《Real Time 3D Terrain Engines Using C++ And DX9》、《Real-Time Rending》、《Game Engine Architecutre》等等相关书籍?还是自己写Demo?
Ⅱ:涉及游戏引擎开发的公司有哪些?(腾讯?网易?触控科技?),这些公司对游戏引擎开发的职位要求是什么?以及将来面试时应该如何应对?(把自己写的Demo给他看?)
大家走过路过不要错过,给点建议行行好
PS:这里的游戏引擎暂时指图形模块,其他的声音,物理,网络,UI等等模块暂时不考虑
题猪一直自学编程,有c++、数据结构与算法 基础,现在正在自学DirectX9.0,(自然是看红龙书了),想着以后能从事游戏引擎开发相关的职业,敢问各位路过的大神提些宝贵的意见
Ⅰ:DirectX基础部分学好之后应该如何继续学习?直接看开源的游戏引擎?还是进一步深入学习DirectX可编程渲染流水线?还是看其他一些比如《Real Time 3D Terrain Engines Using C++ And DX9》、《Real-Time Rending》、《Game Engine Architecutre》等等相关书籍?还是自己写Demo?
Ⅱ:涉及游戏引擎开发的公司有哪些?(腾讯?网易?触控科技?),这些公司对游戏引擎开发的职位要求是什么?以及将来面试时应该如何应对?(把自己写的Demo给他看?)
大家走过路过不要错过,给点建议行行好
2
条评论
按投票排序按时间排序
23 个回答
我们公司引擎部门新员工,一般会有两个入门练习:
一是只用类似DrawPixel的函数,实现一个软件光栅化。
二是使用自家引擎做一个完整游戏。可以比较简单,但必须完整。
一个去鹅厂的小伙伴也做过类似跑酷类手游作为练手。
所以我觉得,从学习的角度,一边做游戏,一边做个玩具引擎,并不冲突。
做一个自己的引擎出来,满足技术好奇心,也能试验想法;
用一个开源图形引擎做一个类型的游戏,能了解组成部分和主要需求。了解
楼上有好多关于做游戏还是做引擎的讨论,都是有道理的。
如@张静vinjn 等所说,如果没做过一个完整的游戏,直接只做引擎,学习的效率和引擎的质量都不会太高。
但在很多人心里,会把引擎开发的这个工作神话。这种时候自己做一个引擎,对提高自己的信心会有帮助。大部分贬低引擎开发工作的人,至少都是有能撸一个的底气的(且不说质量)。
-------------------------------------------------------------------------------------------------------------
所以对两个方面,我都推荐一些自己感觉不错的资料:
游戏逻辑方面:推荐一个网站, Game Programming Patterns,作者把自己的书放github上,供读者提意见。
引擎架构方面:Game Engine Architecture,这本得看中文翻译的。
图形引擎方面,主要是算法和API,引擎架构抄一套别人的。
图形基础算法书籍:在lz的基础上,推荐一个3D Game Engine Design,里面的3D算法和原理讲解很详细,可惜有点老。
高级图形技术:除了Real Time Rendering 3和GPU Pro系列以外,可以跟KlayGE和OpenGPU。这个方向量力而行,国内现在的行情是转手游的多,一些复杂的效果研究太深入也可能发挥不了。
update:
下面评论有问,我贴一下。
软件光栅化可以简单理解为,只给你一个画点的函数,你需要用C++实现一个三维物体显示的过程。一般这个工作是由Direct3D/OpenGL的驱动实现来做的。
这个工作可以做的很难,也可以很简单。我们公司貌似所有客户端程序都会做这个,但要求跟老大有关。
最基本就是实现一个固定管线,包括顶点坐标的矩阵变化,画线,三角形填充光栅化算法,裁剪,Gouround光照,纹理坐标插值,ZBuffer等等。
要做好点,就可以把一个引擎Renderer部分的借口都实现了,用C++写个VS/PS,跟D3D/OpenGL平级。
一是只用类似DrawPixel的函数,实现一个软件光栅化。
二是使用自家引擎做一个完整游戏。可以比较简单,但必须完整。
一个去鹅厂的小伙伴也做过类似跑酷类手游作为练手。
所以我觉得,从学习的角度,一边做游戏,一边做个玩具引擎,并不冲突。
做一个自己的引擎出来,满足技术好奇心,也能试验想法;
用一个开源图形引擎做一个类型的游戏,能了解组成部分和主要需求。了解
楼上有好多关于做游戏还是做引擎的讨论,都是有道理的。
如@张静vinjn 等所说,如果没做过一个完整的游戏,直接只做引擎,学习的效率和引擎的质量都不会太高。
但在很多人心里,会把引擎开发的这个工作神话。这种时候自己做一个引擎,对提高自己的信心会有帮助。大部分贬低引擎开发工作的人,至少都是有能撸一个的底气的(且不说质量)。
-------------------------------------------------------------------------------------------------------------
所以对两个方面,我都推荐一些自己感觉不错的资料:
游戏逻辑方面:推荐一个网站, Game Programming Patterns,作者把自己的书放github上,供读者提意见。
引擎架构方面:Game Engine Architecture,这本得看中文翻译的。
图形引擎方面,主要是算法和API,引擎架构抄一套别人的。
图形基础算法书籍:在lz的基础上,推荐一个3D Game Engine Design,里面的3D算法和原理讲解很详细,可惜有点老。
高级图形技术:除了Real Time Rendering 3和GPU Pro系列以外,可以跟KlayGE和OpenGPU。这个方向量力而行,国内现在的行情是转手游的多,一些复杂的效果研究太深入也可能发挥不了。
update:
下面评论有问,我贴一下。
软件光栅化可以简单理解为,只给你一个画点的函数,你需要用C++实现一个三维物体显示的过程。一般这个工作是由Direct3D/OpenGL的驱动实现来做的。
这个工作可以做的很难,也可以很简单。我们公司貌似所有客户端程序都会做这个,但要求跟老大有关。
最基本就是实现一个固定管线,包括顶点坐标的矩阵变化,画线,三角形填充光栅化算法,裁剪,Gouround光照,纹理坐标插值,ZBuffer等等。
要做好点,就可以把一个引擎Renderer部分的借口都实现了,用C++写个VS/PS,跟D3D/OpenGL平级。
一点一点回答
题主问的图形引擎开发:
刚好写过一个,这个你一开始可以参考ogre看看,你需要主要研究的内容主要包括但不限于以下部分
涉及游戏引擎开发的公司有哪些?
一句话,如果你想做研发,建议还是来我司。
这些公司对游戏引擎开发的职位要求是什么?
这个说明不了什么,研发岗位更注重的是表面上看不到的东西,我指的架构程序的能力。当然如果你有水平做这个,面试的时候可以多讲讲,水平高下自然能看出来。
基本就是这样。
题主问的图形引擎开发:
刚好写过一个,这个你一开始可以参考ogre看看,你需要主要研究的内容主要包括但不限于以下部分
- 场景管理(关键中的关键)
- 渲染流水线结构
- Shader
- 场景Culling算法
- 下层图形接口的抽象
涉及游戏引擎开发的公司有哪些?
一句话,如果你想做研发,建议还是来我司。
这些公司对游戏引擎开发的职位要求是什么?
- 招人的时候一般是研发的统一招,不会单独招做引擎的,这个是进来以后的事
- 一般没有新人做引擎的情况
这个说明不了什么,研发岗位更注重的是表面上看不到的东西,我指的架构程序的能力。当然如果你有水平做这个,面试的时候可以多讲讲,水平高下自然能看出来。
基本就是这样。
Ⅰ:DirectX基础部分学好之后应该如何继续学习?直接看开源的游戏引擎?还是进一步深入学习DirectX可编程渲染流水线?还是看其他一些比如《Real Time 3D Terrain Engines Using C++ And DX9》、《Real-Time Rending》、《Game Engine Architecutre》等等相关书籍?还是自己写Demo?
《游戏引擎架构》序言:
Ⅱ:涉及游戏引擎开发的公司有哪些?(腾讯?网易?触控科技?),这些公司对游戏引擎开发的职位要求是什么?以及将来面试时应该如何应对?(把自己写的Demo给他看?)
《游戏引擎架构》译序:
另外,「这里的游戏引擎暂时指图形模块」这种想法并不太合适,因为图形与其他模块要互相结合,高层的模块也要共用底层的模块,所以应该首先理解整体,再逐个部分深入。
看到其他答案用了这张图,质量比较差,送张高清图吧。
《游戏引擎架构》序言:
……学习编程技能最好的方法就是写代码。在阅读本书时,强烈建议你选择一些特别感兴趣的主题付诸实践。举例来说,如果你觉得人物动画很有趣,那么可以首先安装OGRE,并测试一下它的蒙皮动画示范。接着还可以尝试用OGRE实现本书谈及的一些动画混合技巧。下一步你可能会打算用游戏手柄控制人物在平面上行走。等你能玩转一些简单的东西了,就应该以此为基础,继续前进!之后可以转移到另一个游戏技术范畴,周而复始。这些项目是什么并不重要,重要的是你在实践游戏编程的艺术,而不是纸上谈兵。如果要回答一个学习顺序,那么这不是一个很好的答案。但学习过程很多时候并不是顺序的,而且跟个人喜好有关,建议是一边看书(不一定是一本),一边实践想要做的东西。
Ⅱ:涉及游戏引擎开发的公司有哪些?(腾讯?网易?触控科技?),这些公司对游戏引擎开发的职位要求是什么?以及将来面试时应该如何应对?(把自己写的Demo给他看?)
《游戏引擎架构》译序:
……然而,各游戏本身的性质以及平台的差异,使研发完全通用的游戏引擎变得极困难,甚至不可能。市面上出售的游戏引擎,有一些虽然已经达到很高的技术水平,但在商业应用中,很多时候还是需要因应个别游戏项目对引擎改造、整合、扩展及优化。因此,即使能使用市面上最好的商用引擎或自研引擎,我们仍需要理解当中的架构、各种机制和技术,并且分析及解决在制作中遇到的问题。这些也是译者曾任于上海两家工作室时的主要工作范畴。我在腾讯互娱研发部引擎技术中心的工作内容之一也是引擎改造、整合、扩展及优化。拿著Demo去面试是一个加分项,如果是开源的更能检查编码习惯和软件工程的能力。我会细致地问一些技术点,例如某一部分使用了什么技术,还有那些可选方案,他们之间的优缺点是什么。
另外,「这里的游戏引擎暂时指图形模块」这种想法并不太合适,因为图形与其他模块要互相结合,高层的模块也要共用底层的模块,所以应该首先理解整体,再逐个部分深入。
看到其他答案用了这张图,质量比较差,送张高清图吧。
很多人并不知道游戏引擎或渲染引擎是怎么回事就开始思考如何做游戏引擎,这是不对的。
首先应该深度掌握渲染的基本原理,因此我非常同意其他答案关于先自己实现一个软件光栅化渲染器的建议,你应该按照最新的标准自己大概实现一遍DirectX(例如要支持tessellation, shader, MSAA, blending, anisotropic filtering, 正确处理各种corner case如退化三角形等情况)。实现的过程中请参考DirectX的specification以学习相关细节。这个文档可能是只对硬件vendor公开,不过还是很容易获得的。实现软件光栅化还能极大地锻炼你的底层C++编码能力,并行程序设计能力和优化技巧,顺便还能把主流的GPU架构搞熟。
一旦搞清楚光栅化渲染的本质,你就能理解各种所谓“高级渲染技术”的精髓,基本上看paper只需几秒钟扫一扫图就能看懂了。这样一来短时间内就能理解大量算法和渲染架构(例如各种shadow map, AO, volumetric scattering, deferred lighting, forward+等等)。
当你对图形管线的本质以及各种可能的应用都了然于胸的时候,剩下的就是高层架构设计问题了。这个属于软件工程的范畴,没有捷径,只能通过大量试错来获得经验了(不停地重写)。
其实当你知道了这些所谓的技术之后,你会发现大部分都是肤浅的hack而已。现在引擎的重要课题不在于谁掌握了更牛逼的渲染技术,而在于谁能设计出更好的开发流水线,内容制作以及美工反馈才是最大的难题。前段时间和bungie的图形总管聊destiny的engine,他们表示任何新的技术他们都可以在两天内实现出来,但最大的难题是1)如何使这些新技术在各种情况下都能鲁棒地工作;而大部分时候都很好,偶尔会挂掉的技术都是不可取的;2)如何构建好的工具让美工能够控制各种情况。举个例子,tessellation是个很酷的技术,但是应用到游戏中并不容易,因为1)创建好的displacement map很困难; 2)一旦引入LOD,则牵动全身:如何保持场景在各个视角的一致性?如何让displacement geometry正确地与阴影、碰撞、贴花和可见性等系统交互?
此外不同平台上还有很多底层优化问题,这里就不展开了。
首先应该深度掌握渲染的基本原理,因此我非常同意其他答案关于先自己实现一个软件光栅化渲染器的建议,你应该按照最新的标准自己大概实现一遍DirectX(例如要支持tessellation, shader, MSAA, blending, anisotropic filtering, 正确处理各种corner case如退化三角形等情况)。实现的过程中请参考DirectX的specification以学习相关细节。这个文档可能是只对硬件vendor公开,不过还是很容易获得的。实现软件光栅化还能极大地锻炼你的底层C++编码能力,并行程序设计能力和优化技巧,顺便还能把主流的GPU架构搞熟。
一旦搞清楚光栅化渲染的本质,你就能理解各种所谓“高级渲染技术”的精髓,基本上看paper只需几秒钟扫一扫图就能看懂了。这样一来短时间内就能理解大量算法和渲染架构(例如各种shadow map, AO, volumetric scattering, deferred lighting, forward+等等)。
当你对图形管线的本质以及各种可能的应用都了然于胸的时候,剩下的就是高层架构设计问题了。这个属于软件工程的范畴,没有捷径,只能通过大量试错来获得经验了(不停地重写)。
其实当你知道了这些所谓的技术之后,你会发现大部分都是肤浅的hack而已。现在引擎的重要课题不在于谁掌握了更牛逼的渲染技术,而在于谁能设计出更好的开发流水线,内容制作以及美工反馈才是最大的难题。前段时间和bungie的图形总管聊destiny的engine,他们表示任何新的技术他们都可以在两天内实现出来,但最大的难题是1)如何使这些新技术在各种情况下都能鲁棒地工作;而大部分时候都很好,偶尔会挂掉的技术都是不可取的;2)如何构建好的工具让美工能够控制各种情况。举个例子,tessellation是个很酷的技术,但是应用到游戏中并不容易,因为1)创建好的displacement map很困难; 2)一旦引入LOD,则牵动全身:如何保持场景在各个视角的一致性?如何让displacement geometry正确地与阴影、碰撞、贴花和可见性等系统交互?
此外不同平台上还有很多底层优化问题,这里就不展开了。
没有必要刻意的区分游戏引擎和游戏,对于程序员而言,游戏开发得多了,自然会把可重用的部分提取成 library。而这 library 逐渐丰富起来,便成了引擎。
如果你一开始就抱着我想做的是引擎,而不是游戏的态度,那这个事情就有点扭曲了。如果你没开发过游戏,你怎么知道游戏引擎里需要哪些组件呢?是吧。
所以想开发引擎,最靠谱的方法就是,去开发游戏,各种类型的游戏。俄罗斯方块、2048、第一人称射击等等,0D、1D、2D、3D、4D 都需要试试。
以下是哗众取宠的跑题时间(居然被一名学生批评哗众取宠,不开心呀)
0D 就是说没有任何画面 RGB(0, 0, 0),可以用麦克风来控制、再用音乐来反馈。
1D 就是只有一维,比如一个点在一条线上移动。
2D、3D 大家熟悉。
4D 是 3D 配上奇怪的电子设备,比如 Kinect、Arduino、Oculus Rift、Vibrator(咳咳)等。
如果你一开始就抱着我想做的是引擎,而不是游戏的态度,那这个事情就有点扭曲了。如果你没开发过游戏,你怎么知道游戏引擎里需要哪些组件呢?是吧。
所以想开发引擎,最靠谱的方法就是,去开发游戏,各种类型的游戏。俄罗斯方块、2048、第一人称射击等等,0D、1D、2D、3D、4D 都需要试试。
以下是哗众取宠的跑题时间(居然被一名学生批评哗众取宠,不开心呀)
0D 就是说没有任何画面 RGB(0, 0, 0),可以用麦克风来控制、再用音乐来反馈。
1D 就是只有一维,比如一个点在一条线上移动。
2D、3D 大家熟悉。
4D 是 3D 配上奇怪的电子设备,比如 Kinect、Arduino、Oculus Rift、Vibrator(咳咳)等。
自己写引擎都是坑有木有。。。
以前在某公司参与过自研引擎的开发(工作需要,本身渣水平),当然目的还是要做游戏(当时cocos2d-x才刚出来,很不成熟,也没啥人用)。当时我不是负责图形部分(游戏引擎不仅仅只是渲染引擎一个模块),因为要配合游戏开发,所以当时的引擎特性根本定不下来。接口三天两头的改,前一天编译无误的代码第二天可能就因为别人某个模块API名称或者参数个数的变化导致编译出错。更不要提各种bug了。
=========吐槽的分割线==========
好吧,言归正传。回过头来,感觉很多东西不经历一遍是很难做到完美的。引擎也是,不写上几次估计都不能算入门。初学最好的办法就是模仿。找几个出名易用的引擎,看看他的整体结构如何,怎么划分的模块。有什么特点。最好再多用用,体会一下对方为什么这么设计。然后思考一下对方的有什么缺点,自己如何改正,然后试着模仿一个出来。不过估计第一次都会痛苦嘛,以后就好了。
你看苹果发布的SpriteKit跟cocos2d有多像,几乎就是换了一个名字。cocos2d简直成了2d引擎的代名词,各种模仿也由此而来。而且cocos2d-iphone,cocos2d-x,cocos2d-js的代码也很容易获得,是个参考研究不错样例。
3D引擎在移动端基本上一家独大了,不过可惜不开源,看不到实现,不过整体思路倒是可以参考。其实还有一些开源的3d引擎,不过现在不太流行就不赘述了。真想学习的话,Irrlicht是个不错的东西。而且这东西很容易编译到移动端。
最后,游戏引擎是一个综合工程,不仅仅只是图像的堆砌,还有声音,网络,UI,物理等等模块。而且很多底层都要有坚实的高等数学和线性代数基础。
希望以上文字对你有用。
以前在某公司参与过自研引擎的开发(工作需要,本身渣水平),当然目的还是要做游戏(当时cocos2d-x才刚出来,很不成熟,也没啥人用)。当时我不是负责图形部分(游戏引擎不仅仅只是渲染引擎一个模块),因为要配合游戏开发,所以当时的引擎特性根本定不下来。接口三天两头的改,前一天编译无误的代码第二天可能就因为别人某个模块API名称或者参数个数的变化导致编译出错。更不要提各种bug了。
=========吐槽的分割线==========
好吧,言归正传。回过头来,感觉很多东西不经历一遍是很难做到完美的。引擎也是,不写上几次估计都不能算入门。初学最好的办法就是模仿。找几个出名易用的引擎,看看他的整体结构如何,怎么划分的模块。有什么特点。最好再多用用,体会一下对方为什么这么设计。然后思考一下对方的有什么缺点,自己如何改正,然后试着模仿一个出来。不过估计第一次都会痛苦嘛,以后就好了。
你看苹果发布的SpriteKit跟cocos2d有多像,几乎就是换了一个名字。cocos2d简直成了2d引擎的代名词,各种模仿也由此而来。而且cocos2d-iphone,cocos2d-x,cocos2d-js的代码也很容易获得,是个参考研究不错样例。
3D引擎在移动端基本上一家独大了,不过可惜不开源,看不到实现,不过整体思路倒是可以参考。其实还有一些开源的3d引擎,不过现在不太流行就不赘述了。真想学习的话,Irrlicht是个不错的东西。而且这东西很容易编译到移动端。
最后,游戏引擎是一个综合工程,不仅仅只是图像的堆砌,还有声音,网络,UI,物理等等模块。而且很多底层都要有坚实的高等数学和线性代数基础。
希望以上文字对你有用。
基本上正如 @张静vinjn 说的那样,引擎就是从游戏里来的,所以早期的引擎就是游戏的复用部分,像QUAKE(开源),通用引擎是很后来的事情了。既然题猪提到了游戏引擎架构这本书,我就拍一页做范例加了些框框给你参考(希望没侵权=
=)。这是作者理解的游戏引擎的共通的组成部分,上层的是游戏开发者会用到的,底层的是引擎开发商提供的。题猪正在学习和深入的DX其实是底层的其中一个方面(试试找找?:)——换句话来说,世界很大,术业有专攻 :)
常用的引擎有哪些?UE(腾讯英佩),Cocos(触控), Unity比较多吧。通用引擎大同小异,学会了一个对其他也有质的帮助(咦,我没有在说C)。QUAKE、OGRE等开源引擎是很好的学习/理解材料,但是对题猪在国内找工作可能没太大帮助。
游戏/引擎的开发我觉得更像是拍电影,有很多的组成部分特别是艺术的。建议题猪把目标放在尽可能多的开发不同种类的游戏上,积累了足够的理解和经验后再着手引擎的学习,相较于学习引擎然后面试一份工作要合理一些。
Good Luck!
附图:
常用的引擎有哪些?UE(腾讯英佩),Cocos(触控), Unity比较多吧。通用引擎大同小异,学会了一个对其他也有质的帮助(咦,我没有在说C)。QUAKE、OGRE等开源引擎是很好的学习/理解材料,但是对题猪在国内找工作可能没太大帮助。
游戏/引擎的开发我觉得更像是拍电影,有很多的组成部分特别是艺术的。建议题猪把目标放在尽可能多的开发不同种类的游戏上,积累了足够的理解和经验后再着手引擎的学习,相较于学习引擎然后面试一份工作要合理一些。
Good Luck!
附图:
想做图形引擎开发就问怎么学做图形引擎开发,别跟游戏扯上关系。图形只是游戏的一部分而已。
觉得图形引擎技术含量高?AR,CV这种简直笑蛤蛤。
一说游戏必提3A的,不是门外汉就是干了几年还摸不到门道的主儿。
言归正传,想学游戏引擎开发,三个步骤:
1,用现成的引擎写个游戏。
2,自己随便找个开源的造个轮子,把之前写的游戏里用的第三方引擎替换掉。
3,各种看siggraph,隔几天就想办法把里面提的东西实现下加自己的轮子里。
当然其中最难的是第一步,最枯燥的是第二步,最顺理成章的是第三步。
做完这三步,题主绝壁比去虚幻啊ce啊这种国外的引擎公司去当螺丝钉的家伙不知高到哪里去了。
觉得图形引擎技术含量高?AR,CV这种简直笑蛤蛤。
一说游戏必提3A的,不是门外汉就是干了几年还摸不到门道的主儿。
言归正传,想学游戏引擎开发,三个步骤:
1,用现成的引擎写个游戏。
2,自己随便找个开源的造个轮子,把之前写的游戏里用的第三方引擎替换掉。
3,各种看siggraph,隔几天就想办法把里面提的东西实现下加自己的轮子里。
当然其中最难的是第一步,最枯燥的是第二步,最顺理成章的是第三步。
做完这三步,题主绝壁比去虚幻啊ce啊这种国外的引擎公司去当螺丝钉的家伙不知高到哪里去了。
知著 赞同
1,dx和gl建议学后者,移动时代更通用,虽然api基本相同。先看opengl编程指南,边看边写demo,掌握管线和熟悉api。
2,找个开源引擎看看,可先选irrlicht,简单。后续可看ogre。
3,进入shader学习,实现一些特效
4,学习3D数学
5,把以上学习的内容整合起来,写个小引擎,面试成功率很高
2,找个开源引擎看看,可先选irrlicht,简单。后续可看ogre。
3,进入shader学习,实现一些特效
4,学习3D数学
5,把以上学习的内容整合起来,写个小引擎,面试成功率很高
苦心开发游戏引擎的人很少,哗众取宠的回答都被顶到了前面。
我虽然也不是什么专家,但是在这里也试着给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”之类的答案都被顶上来了。我希望这道题的答案应该都是这样的,应该给别人提出一个具体的“学习轨迹”,“学习方向”。
看了题目内容就懂了,题主只是想“谁来推荐给我一点学习资料,学习方法”。
您这样笼统的说应该各种游戏都去做一遍,话很正确,能让人一看就觉得“有道理”,但是肯定满足不了题主,也就是偏题了。
而这样的答案作为“正确答案”,“高质量答案”被摆在前面,这是知乎体系和权威影响力的弊端,我完全不该指责您。
您说的话有自己的立场,那不是“哗众取宠”,我再次为我的言行表示道歉。
我虽然也不是什么专家,但是在这里也试着给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”之类的答案都被顶上来了。我希望这道题的答案应该都是这样的,应该给别人提出一个具体的“学习轨迹”,“学习方向”。
看了题目内容就懂了,题主只是想“谁来推荐给我一点学习资料,学习方法”。
您这样笼统的说应该各种游戏都去做一遍,话很正确,能让人一看就觉得“有道理”,但是肯定满足不了题主,也就是偏题了。
而这样的答案作为“正确答案”,“高质量答案”被摆在前面,这是知乎体系和权威影响力的弊端,我完全不该指责您。
您说的话有自己的立场,那不是“哗众取宠”,我再次为我的言行表示道歉。
引擎复引擎,引擎何其多,吾生待引擎,游戏成蹉跎。
所以,还是直接做游戏的好。
不同类型的游戏做多了自然而然就会产生引擎了。
大公司一般都自己培养人,小公司基本都是抄open source。
初学者进公司不可能让你负责引擎的,没几年的业务积累,根本不知道引擎业务到底是做什么。
都是从一线业务开始,比如UI之类的比较繁杂的东西。
所以还是从最基本的做起吧。
做引擎真没啥高大上的,又不是黑科技。
为做游戏而做游戏,而不是造引擎。
游戏逻辑之类还有编辑器搞起来比引擎复杂多了。
所以,还是直接做游戏的好。
不同类型的游戏做多了自然而然就会产生引擎了。
大公司一般都自己培养人,小公司基本都是抄open source。
初学者进公司不可能让你负责引擎的,没几年的业务积累,根本不知道引擎业务到底是做什么。
都是从一线业务开始,比如UI之类的比较繁杂的东西。
所以还是从最基本的做起吧。
做引擎真没啥高大上的,又不是黑科技。
为做游戏而做游戏,而不是造引擎。
游戏逻辑之类还有编辑器搞起来比引擎复杂多了。
首先声明我水平不高
我觉得游戏引擎开发和游戏开发需要的知识内容是一样,学游戏开发和学游戏引擎开发没有本质区别,除了现在国内普遍的快速开发门槛较低以外
鉴于有人看不懂我在说什么,补充一点
题主可以参考这篇文章,比较全面
其中的知识我觉得不管对游戏引擎开发还是对游戏开发来说都是必要的,随意我觉得两者没有本质区别
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow