您的位置:首页 > 其它

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

2015-11-02 20:35 676 查看
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给他看?)

大家走过路过不要错过,给点建议行行好

2
条评论

分享

按投票排序按时间排序


23 个回答

赞同64
反对,不会显示你的姓名




知乎用户,Debugging
life.

赵臣又happyshine李欣蔚 等人赞同

我们公司引擎部门新员工,一般会有两个入门练习:

一是只用类似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平级。

编辑于 2014-07-28 40
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同23
反对,不会显示你的姓名




刘然,网易游戏
研发攻城狮

练习表白、知乎用户、知乎用户 等人赞同

一点一点回答

题主问的图形引擎开发:

刚好写过一个,这个你一开始可以参考ogre看看,你需要主要研究的内容主要包括但不限于以下部分

场景管理(关键中的关键)

渲染流水线结构
Shader
场景Culling算法
下层图形接口的抽象

最好的学习方法还是从利用现有引擎开发游戏做起,和其他答案说的一样,游戏引擎本来就是抽象出来的一个东西,没写过游戏就写引擎,还是算了。

涉及游戏引擎开发的公司有哪些?

一句话,如果你想做研发,建议还是来我司。

这些公司对游戏引擎开发的职位要求是什么?

招人的时候一般是研发的统一招,不会单独招做引擎的,这个是进来以后的事
一般没有新人做引擎的情况

以及将来面试时应该如何应对?(把自己写的Demo给他看?)

这个说明不了什么,研发岗位更注重的是表面上看不到的东西,我指的架构程序的能力。当然如果你有水平做这个,面试的时候可以多讲讲,水平高下自然能看出来。

基本就是这样。

发布于 2014-07-28 12
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同188
反对,不会显示你的姓名




Milo
Yip,游戏程序员、《游戏引擎架构》译者

张晨阳、知乎用户、狮子歌歌 等人赞同

Ⅰ:DirectX基础部分学好之后应该如何继续学习?直接看开源的游戏引擎?还是进一步深入学习DirectX可编程渲染流水线?还是看其他一些比如《Real Time 3D Terrain Engines Using C++ And DX9》、《Real-Time Rending》、《Game Engine Architecutre》等等相关书籍?还是自己写Demo?

《游戏引擎架构》序言:

……学习编程技能最好的方法就是写代码。在阅读本书时,强烈建议你选择一些特别感兴趣的主题付诸实践。举例来说,如果你觉得人物动画很有趣,那么可以首先安装OGRE,并测试一下它的蒙皮动画示范。接着还可以尝试用OGRE实现本书谈及的一些动画混合技巧。下一步你可能会打算用游戏手柄控制人物在平面上行走。等你能玩转一些简单的东西了,就应该以此为基础,继续前进!之后可以转移到另一个游戏技术范畴,周而复始。这些项目是什么并不重要,重要的是你在实践游戏编程的艺术,而不是纸上谈兵。
如果要回答一个学习顺序,那么这不是一个很好的答案。但学习过程很多时候并不是顺序的,而且跟个人喜好有关,建议是一边看书(不一定是一本),一边实践想要做的东西。

Ⅱ:涉及游戏引擎开发的公司有哪些?(腾讯?网易?触控科技?),这些公司对游戏引擎开发的职位要求是什么?以及将来面试时应该如何应对?(把自己写的Demo给他看?)

《游戏引擎架构》译序:

……然而,各游戏本身的性质以及平台的差异,使研发完全通用的游戏引擎变得极困难,甚至不可能。市面上出售的游戏引擎,有一些虽然已经达到很高的技术水平,但在商业应用中,很多时候还是需要因应个别游戏项目对引擎改造、整合、扩展及优化。因此,即使能使用市面上最好的商用引擎或自研引擎,我们仍需要理解当中的架构、各种机制和技术,并且分析及解决在制作中遇到的问题。这些也是译者曾任于上海两家工作室时的主要工作范畴。
我在腾讯互娱研发部引擎技术中心的工作内容之一也是引擎改造、整合、扩展及优化。拿著Demo去面试是一个加分项,如果是开源的更能检查编码习惯和软件工程的能力。我会细致地问一些技术点,例如某一部分使用了什么技术,还有那些可选方案,他们之间的优缺点是什么。

另外,「这里的游戏引擎暂时指图形模块」这种想法并不太合适,因为图形与其他模块要互相结合,高层的模块也要共用底层的模块,所以应该首先理解整体,再逐个部分深入。

看到其他答案用了这张图,质量比较差,送张高清图吧。



发布于 2014-07-28 12
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同113
反对,不会显示你的姓名




Yong
He,CS PhD student

孔中一方结界踏莎行孤荷 等人赞同

很多人并不知道游戏引擎或渲染引擎是怎么回事就开始思考如何做游戏引擎,这是不对的。

首先应该深度掌握渲染的基本原理,因此我非常同意其他答案关于先自己实现一个软件光栅化渲染器的建议,你应该按照最新的标准自己大概实现一遍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正确地与阴影、碰撞、贴花和可见性等系统交互?

此外不同平台上还有很多底层优化问题,这里就不展开了。

编辑于 2014-08-01 19
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同64
反对,不会显示你的姓名




Vinjn张静,Full-Stack
Mixed Reality Engineer

小困姜维踏莎行 等人赞同

没有必要刻意的区分游戏引擎和游戏,对于程序员而言,游戏开发得多了,自然会把可重用的部分提取成 library。而这 library 逐渐丰富起来,便成了引擎。

如果你一开始就抱着我想做的是引擎,而不是游戏的态度,那这个事情就有点扭曲了。如果你没开发过游戏,你怎么知道游戏引擎里需要哪些组件呢?是吧。

所以想开发引擎,最靠谱的方法就是,去开发游戏,各种类型的游戏。俄罗斯方块、2048、第一人称射击等等,0D、1D、2D、3D、4D 都需要试试。

以下是哗众取宠的跑题时间(居然被一名学生批评哗众取宠,不开心呀)

0D 就是说没有任何画面 RGB(0, 0, 0),可以用麦克风来控制、再用音乐来反馈。

1D 就是只有一维,比如一个点在一条线上移动。

2D、3D 大家熟悉。

4D 是 3D 配上奇怪的电子设备,比如 Kinect、Arduino、Oculus Rift、Vibrator(咳咳)等。

编辑于 2014-07-27 25
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同4
反对,不会显示你的姓名




李洋,移动游戏开发

宁磊Maoao530刘浩骅 等人赞同

自己写引擎都是坑有木有。。。

以前在某公司参与过自研引擎的开发(工作需要,本身渣水平),当然目的还是要做游戏(当时cocos2d-x才刚出来,很不成熟,也没啥人用)。当时我不是负责图形部分(游戏引擎不仅仅只是渲染引擎一个模块),因为要配合游戏开发,所以当时的引擎特性根本定不下来。接口三天两头的改,前一天编译无误的代码第二天可能就因为别人某个模块API名称或者参数个数的变化导致编译出错。更不要提各种bug了。

=========吐槽的分割线==========

好吧,言归正传。回过头来,感觉很多东西不经历一遍是很难做到完美的。引擎也是,不写上几次估计都不能算入门。初学最好的办法就是模仿。找几个出名易用的引擎,看看他的整体结构如何,怎么划分的模块。有什么特点。最好再多用用,体会一下对方为什么这么设计。然后思考一下对方的有什么缺点,自己如何改正,然后试着模仿一个出来。不过估计第一次都会痛苦嘛,以后就好了。

你看苹果发布的SpriteKit跟cocos2d有多像,几乎就是换了一个名字。cocos2d简直成了2d引擎的代名词,各种模仿也由此而来。而且cocos2d-iphone,cocos2d-x,cocos2d-js的代码也很容易获得,是个参考研究不错样例。

3D引擎在移动端基本上一家独大了,不过可惜不开源,看不到实现,不过整体思路倒是可以参考。其实还有一些开源的3d引擎,不过现在不太流行就不赘述了。真想学习的话,Irrlicht是个不错的东西。而且这东西很容易编译到移动端。

最后,游戏引擎是一个综合工程,不仅仅只是图像的堆砌,还有声音,网络,UI,物理等等模块。而且很多底层都要有坚实的高等数学和线性代数基础。

希望以上文字对你有用。

发布于 2014-07-27 3
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同4
反对,不会显示你的姓名




制杖青年朱纯,独立游戏人

踏莎行刘浩骅、知乎用户 等人赞同

基本上正如 @张静vinjn 说的那样,引擎就是从游戏里来的,所以早期的引擎就是游戏的复用部分,像QUAKE(开源),通用引擎是很后来的事情了。既然题猪提到了游戏引擎架构这本书,我就拍一页做范例加了些框框给你参考(希望没侵权=
=)。这是作者理解的游戏引擎的共通的组成部分,上层的是游戏开发者会用到的,底层的是引擎开发商提供的。题猪正在学习和深入的DX其实是底层的其中一个方面(试试找找?:)——换句话来说,世界很大,术业有专攻 :)

常用的引擎有哪些?UE(腾讯英佩),Cocos(触控), Unity比较多吧。通用引擎大同小异,学会了一个对其他也有质的帮助(咦,我没有在说C)。QUAKE、OGRE等开源引擎是很好的学习/理解材料,但是对题猪在国内找工作可能没太大帮助。

游戏/引擎的开发我觉得更像是拍电影,有很多的组成部分特别是艺术的。建议题猪把目标放在尽可能多的开发不同种类的游戏上,积累了足够的理解和经验后再着手引擎的学习,相较于学习引擎然后面试一份工作要合理一些。

Good Luck!

附图:



发布于 2014-07-26 4
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同12
反对,不会显示你的姓名




知乎用户,在职端游死程

白河唯踏莎行、知乎用户 等人赞同

想做图形引擎开发就问怎么学做图形引擎开发,别跟游戏扯上关系。图形只是游戏的一部分而已。

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

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

言归正传,想学游戏引擎开发,三个步骤:

1,用现成的引擎写个游戏。

2,自己随便找个开源的造个轮子,把之前写的游戏里用的第三方引擎替换掉。

3,各种看siggraph,隔几天就想办法把里面提的东西实现下加自己的轮子里。

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

做完这三步,题主绝壁比去虚幻啊ce啊这种国外的引擎公司去当螺丝钉的家伙不知高到哪里去了。

发布于 2014-07-27 9
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




知乎用户,程序员

知著 赞同

1,dx和gl建议学后者,移动时代更通用,虽然api基本相同。先看opengl编程指南,边看边写demo,掌握管线和熟悉api。

2,找个开源引擎看看,可先选irrlicht,简单。后续可看ogre。

3,进入shader学习,实现一些特效

4,学习3D数学

5,把以上学习的内容整合起来,写个小引擎,面试成功率很高

发布于 2014-12-14 2
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




高博远,C++

王文璐 赞同

真正写的时候会发现无比蛋疼。http://github.com/Antimoron/aMazing是我正在写的。

发布于 2015-06-28 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同41
反对,不会显示你的姓名




大萨比,SE游戏引擎工程师

杨荣杰白河唯踏莎行 等人赞同

苦心开发游戏引擎的人很少,哗众取宠的回答都被顶到了前面。

我虽然也不是什么专家,但是在这里也试着给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”之类的答案都被顶上来了。我希望这道题的答案应该都是这样的,应该给别人提出一个具体的“学习轨迹”,“学习方向”。

看了题目内容就懂了,题主只是想“谁来推荐给我一点学习资料,学习方法”。

您这样笼统的说应该各种游戏都去做一遍,话很正确,能让人一看就觉得“有道理”,但是肯定满足不了题主,也就是偏题了。

而这样的答案作为“正确答案”,“高质量答案”被摆在前面,这是知乎体系和权威影响力的弊端,我完全不该指责您。

您说的话有自己的立场,那不是“哗众取宠”,我再次为我的言行表示道歉。

编辑于 2014-07-29 29
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同5
反对,不会显示你的姓名




知乎用户,谢绝抖机灵

知乎用户、倪朝浩哈士奇 等人赞同

引擎复引擎,引擎何其多,吾生待引擎,游戏成蹉跎。

所以,还是直接做游戏的好。

不同类型的游戏做多了自然而然就会产生引擎了。

大公司一般都自己培养人,小公司基本都是抄open source。

初学者进公司不可能让你负责引擎的,没几年的业务积累,根本不知道引擎业务到底是做什么。

都是从一线业务开始,比如UI之类的比较繁杂的东西。

所以还是从最基本的做起吧。

做引擎真没啥高大上的,又不是黑科技。

为做游戏而做游戏,而不是造引擎。

游戏逻辑之类还有编辑器搞起来比引擎复杂多了。

编辑于 2014-07-26 11
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




牛大宝,如果现在还不能实现理想就从现在开始努力…

安东 赞同

首先声明我水平不高

我觉得游戏引擎开发和游戏开发需要的知识内容是一样,学游戏开发和学游戏引擎开发没有本质区别,除了现在国内普遍的快速开发门槛较低以外

鉴于有人看不懂我在说什么,补充一点

题主可以参考这篇文章,比较全面

游戏程序员养成计划 (更新2013.3.19)

其中的知识我觉得不管对游戏引擎开发还是对游戏开发来说都是必要的,随意我觉得两者没有本质区别

编辑于 2014-07-26 1
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




芦小

Daisy gao 赞同

同意 @张静vinjn 。游戏引擎作为一个整体,是从游戏中不断抽象出来的。不论是技术角度还是商业角度,引擎都不可能脱离游戏而单独存在。

但是就个人发展而言,楼主应该是对技术比较赶兴趣,而对游戏本身兴趣不大,所以才只想去做引擎(或者只是简单觉得写引擎技术含量更高)

如果没有一定的游戏开发经验,应该不大可能驾驭的了引擎整体架构这种工作。但是深入研究游戏引擎的某一个领域对于楼主可能是比较好的出路吧,比如图形,智能,网络。确实也认识不少不玩游戏,只是喜欢某个技术而入行的。

发布于 2014-07-26 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




NaNay,IT,
Graphics, Rendering, GPU, etc.

ye sun 赞同

第一步,找个你爱玩的游戏,研究其中你觉得最酷的一帧

第二步,根据自己的实力,弱化N倍,重写一个

第三步,重构代码,并尽量接近参考物的图像效果

不停重复第三步,让你的代码变的好用,易用,外加效果NB。慢慢的就是个不错的图形引擎了

发布于 2014-07-28 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




Xi
Yang,生物、计算机、数学、图像、音频全栈二把刀

知乎用户 赞同

图形模块远远称不上游戏引擎,差的部件太多了。你不可能只做一个光有图形而没有声音、AI、用户交互的游戏。

另外推荐《游戏编程精粹》系列,里面有很多非常实用的前沿技术。

发布于 2014-09-20 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




zxy

踏莎行 赞同

引擎新手题是个很好的开头,有的话尽量做。然后尽快投入到实际的研发中,选择一款商业引擎,深入的研究它,并用它做游戏。学习引擎可以从编辑器入手,了解整个美术生产的流程和工艺,研究其中的细微之处,而后可以钻研其中某个组件对应的代码,虽是管中窥豹,但可以了解的很深入。而后横向发展,多积攒几个这样深入了解的模块,这之后就可以尝试梳理整个框架的设计思路了。理解了别人的思路,不妨动手自己设计一个。完全重头编写每个引擎模块是不现实的,可以适当借用别人的组件(比如物理,UI,声音),但是整体设计思路和关键组件一定要自己写,搭出来的玩具引擎不用设很高的目标,因为本来就是为了学习。

发布于 2015-07-24 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同0
反对,不会显示你的姓名




知乎用户,Game
Programmer

《游戏引擎架构》这本书好像可以满足题主接下来的需要,虽然我也没看过。。。

发布于 2014-07-27 2
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同0
反对,不会显示你的姓名




Claire的钱包,赌徒

自己从c++开始写游戏才有用。公司自研引擎的目标都是做游戏。以做引擎为目标去做引擎,10个引擎9个都没用,没用的引擎等于没做。

同意 @芦小 的说法“如果没有一定的游戏开发经验,应该不大可能驾驭的了引擎整体架构这种工作。”,建议楼主专攻一个领域。比如图形,另外Dx不是基础,要学图形题主应该从计算机图形学基础开始。例如《Real-Time Rending》这种书应该看在Dx前面。

发布于 2014-07-27 2
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同0
反对,不会显示你的姓名


匿名用户

我说点别的。

学做游戏引擎可以,有时间的话多造轮子是好事,但是毕业后我建议不要进游戏公司。

可以的话,首选和autodesk类似的公司,也可以用上你学的计算机图形的知识。

发布于 2014-07-29 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

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给他看?)

大家走过路过不要错过,给点建议行行好

2
条评论

分享

按投票排序按时间排序


23 个回答

赞同64
反对,不会显示你的姓名




知乎用户,Debugging
life.

赵臣又happyshine李欣蔚 等人赞同

我们公司引擎部门新员工,一般会有两个入门练习:

一是只用类似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平级。

编辑于 2014-07-28 40
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同23
反对,不会显示你的姓名




刘然,网易游戏
研发攻城狮

练习表白、知乎用户、知乎用户 等人赞同

一点一点回答

题主问的图形引擎开发:

刚好写过一个,这个你一开始可以参考ogre看看,你需要主要研究的内容主要包括但不限于以下部分

场景管理(关键中的关键)

渲染流水线结构
Shader
场景Culling算法
下层图形接口的抽象

最好的学习方法还是从利用现有引擎开发游戏做起,和其他答案说的一样,游戏引擎本来就是抽象出来的一个东西,没写过游戏就写引擎,还是算了。

涉及游戏引擎开发的公司有哪些?

一句话,如果你想做研发,建议还是来我司。

这些公司对游戏引擎开发的职位要求是什么?

招人的时候一般是研发的统一招,不会单独招做引擎的,这个是进来以后的事
一般没有新人做引擎的情况

以及将来面试时应该如何应对?(把自己写的Demo给他看?)

这个说明不了什么,研发岗位更注重的是表面上看不到的东西,我指的架构程序的能力。当然如果你有水平做这个,面试的时候可以多讲讲,水平高下自然能看出来。

基本就是这样。

发布于 2014-07-28 12
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同188
反对,不会显示你的姓名




Milo
Yip,游戏程序员、《游戏引擎架构》译者

张晨阳、知乎用户、狮子歌歌 等人赞同

Ⅰ:DirectX基础部分学好之后应该如何继续学习?直接看开源的游戏引擎?还是进一步深入学习DirectX可编程渲染流水线?还是看其他一些比如《Real Time 3D Terrain Engines Using C++ And DX9》、《Real-Time Rending》、《Game Engine Architecutre》等等相关书籍?还是自己写Demo?

《游戏引擎架构》序言:

……学习编程技能最好的方法就是写代码。在阅读本书时,强烈建议你选择一些特别感兴趣的主题付诸实践。举例来说,如果你觉得人物动画很有趣,那么可以首先安装OGRE,并测试一下它的蒙皮动画示范。接着还可以尝试用OGRE实现本书谈及的一些动画混合技巧。下一步你可能会打算用游戏手柄控制人物在平面上行走。等你能玩转一些简单的东西了,就应该以此为基础,继续前进!之后可以转移到另一个游戏技术范畴,周而复始。这些项目是什么并不重要,重要的是你在实践游戏编程的艺术,而不是纸上谈兵。
如果要回答一个学习顺序,那么这不是一个很好的答案。但学习过程很多时候并不是顺序的,而且跟个人喜好有关,建议是一边看书(不一定是一本),一边实践想要做的东西。

Ⅱ:涉及游戏引擎开发的公司有哪些?(腾讯?网易?触控科技?),这些公司对游戏引擎开发的职位要求是什么?以及将来面试时应该如何应对?(把自己写的Demo给他看?)

《游戏引擎架构》译序:

……然而,各游戏本身的性质以及平台的差异,使研发完全通用的游戏引擎变得极困难,甚至不可能。市面上出售的游戏引擎,有一些虽然已经达到很高的技术水平,但在商业应用中,很多时候还是需要因应个别游戏项目对引擎改造、整合、扩展及优化。因此,即使能使用市面上最好的商用引擎或自研引擎,我们仍需要理解当中的架构、各种机制和技术,并且分析及解决在制作中遇到的问题。这些也是译者曾任于上海两家工作室时的主要工作范畴。
我在腾讯互娱研发部引擎技术中心的工作内容之一也是引擎改造、整合、扩展及优化。拿著Demo去面试是一个加分项,如果是开源的更能检查编码习惯和软件工程的能力。我会细致地问一些技术点,例如某一部分使用了什么技术,还有那些可选方案,他们之间的优缺点是什么。

另外,「这里的游戏引擎暂时指图形模块」这种想法并不太合适,因为图形与其他模块要互相结合,高层的模块也要共用底层的模块,所以应该首先理解整体,再逐个部分深入。

看到其他答案用了这张图,质量比较差,送张高清图吧。



发布于 2014-07-28 12
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同113
反对,不会显示你的姓名




Yong
He,CS PhD student

孔中一方结界踏莎行孤荷 等人赞同

很多人并不知道游戏引擎或渲染引擎是怎么回事就开始思考如何做游戏引擎,这是不对的。

首先应该深度掌握渲染的基本原理,因此我非常同意其他答案关于先自己实现一个软件光栅化渲染器的建议,你应该按照最新的标准自己大概实现一遍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正确地与阴影、碰撞、贴花和可见性等系统交互?

此外不同平台上还有很多底层优化问题,这里就不展开了。

编辑于 2014-08-01 19
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同64
反对,不会显示你的姓名




Vinjn张静,Full-Stack
Mixed Reality Engineer

小困姜维踏莎行 等人赞同

没有必要刻意的区分游戏引擎和游戏,对于程序员而言,游戏开发得多了,自然会把可重用的部分提取成 library。而这 library 逐渐丰富起来,便成了引擎。

如果你一开始就抱着我想做的是引擎,而不是游戏的态度,那这个事情就有点扭曲了。如果你没开发过游戏,你怎么知道游戏引擎里需要哪些组件呢?是吧。

所以想开发引擎,最靠谱的方法就是,去开发游戏,各种类型的游戏。俄罗斯方块、2048、第一人称射击等等,0D、1D、2D、3D、4D 都需要试试。

以下是哗众取宠的跑题时间(居然被一名学生批评哗众取宠,不开心呀)

0D 就是说没有任何画面 RGB(0, 0, 0),可以用麦克风来控制、再用音乐来反馈。

1D 就是只有一维,比如一个点在一条线上移动。

2D、3D 大家熟悉。

4D 是 3D 配上奇怪的电子设备,比如 Kinect、Arduino、Oculus Rift、Vibrator(咳咳)等。

编辑于 2014-07-27 25
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同4
反对,不会显示你的姓名




李洋,移动游戏开发

宁磊Maoao530刘浩骅 等人赞同

自己写引擎都是坑有木有。。。

以前在某公司参与过自研引擎的开发(工作需要,本身渣水平),当然目的还是要做游戏(当时cocos2d-x才刚出来,很不成熟,也没啥人用)。当时我不是负责图形部分(游戏引擎不仅仅只是渲染引擎一个模块),因为要配合游戏开发,所以当时的引擎特性根本定不下来。接口三天两头的改,前一天编译无误的代码第二天可能就因为别人某个模块API名称或者参数个数的变化导致编译出错。更不要提各种bug了。

=========吐槽的分割线==========

好吧,言归正传。回过头来,感觉很多东西不经历一遍是很难做到完美的。引擎也是,不写上几次估计都不能算入门。初学最好的办法就是模仿。找几个出名易用的引擎,看看他的整体结构如何,怎么划分的模块。有什么特点。最好再多用用,体会一下对方为什么这么设计。然后思考一下对方的有什么缺点,自己如何改正,然后试着模仿一个出来。不过估计第一次都会痛苦嘛,以后就好了。

你看苹果发布的SpriteKit跟cocos2d有多像,几乎就是换了一个名字。cocos2d简直成了2d引擎的代名词,各种模仿也由此而来。而且cocos2d-iphone,cocos2d-x,cocos2d-js的代码也很容易获得,是个参考研究不错样例。

3D引擎在移动端基本上一家独大了,不过可惜不开源,看不到实现,不过整体思路倒是可以参考。其实还有一些开源的3d引擎,不过现在不太流行就不赘述了。真想学习的话,Irrlicht是个不错的东西。而且这东西很容易编译到移动端。

最后,游戏引擎是一个综合工程,不仅仅只是图像的堆砌,还有声音,网络,UI,物理等等模块。而且很多底层都要有坚实的高等数学和线性代数基础。

希望以上文字对你有用。

发布于 2014-07-27 3
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同4
反对,不会显示你的姓名




制杖青年朱纯,独立游戏人

踏莎行刘浩骅、知乎用户 等人赞同

基本上正如 @张静vinjn 说的那样,引擎就是从游戏里来的,所以早期的引擎就是游戏的复用部分,像QUAKE(开源),通用引擎是很后来的事情了。既然题猪提到了游戏引擎架构这本书,我就拍一页做范例加了些框框给你参考(希望没侵权=
=)。这是作者理解的游戏引擎的共通的组成部分,上层的是游戏开发者会用到的,底层的是引擎开发商提供的。题猪正在学习和深入的DX其实是底层的其中一个方面(试试找找?:)——换句话来说,世界很大,术业有专攻 :)

常用的引擎有哪些?UE(腾讯英佩),Cocos(触控), Unity比较多吧。通用引擎大同小异,学会了一个对其他也有质的帮助(咦,我没有在说C)。QUAKE、OGRE等开源引擎是很好的学习/理解材料,但是对题猪在国内找工作可能没太大帮助。

游戏/引擎的开发我觉得更像是拍电影,有很多的组成部分特别是艺术的。建议题猪把目标放在尽可能多的开发不同种类的游戏上,积累了足够的理解和经验后再着手引擎的学习,相较于学习引擎然后面试一份工作要合理一些。

Good Luck!

附图:



发布于 2014-07-26 4
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同12
反对,不会显示你的姓名




知乎用户,在职端游死程

白河唯踏莎行、知乎用户 等人赞同

想做图形引擎开发就问怎么学做图形引擎开发,别跟游戏扯上关系。图形只是游戏的一部分而已。

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

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

言归正传,想学游戏引擎开发,三个步骤:

1,用现成的引擎写个游戏。

2,自己随便找个开源的造个轮子,把之前写的游戏里用的第三方引擎替换掉。

3,各种看siggraph,隔几天就想办法把里面提的东西实现下加自己的轮子里。

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

做完这三步,题主绝壁比去虚幻啊ce啊这种国外的引擎公司去当螺丝钉的家伙不知高到哪里去了。

发布于 2014-07-27 9
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




知乎用户,程序员

知著 赞同

1,dx和gl建议学后者,移动时代更通用,虽然api基本相同。先看opengl编程指南,边看边写demo,掌握管线和熟悉api。

2,找个开源引擎看看,可先选irrlicht,简单。后续可看ogre。

3,进入shader学习,实现一些特效

4,学习3D数学

5,把以上学习的内容整合起来,写个小引擎,面试成功率很高

发布于 2014-12-14 2
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




高博远,C++

王文璐 赞同

真正写的时候会发现无比蛋疼。http://github.com/Antimoron/aMazing是我正在写的。

发布于 2015-06-28 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同41
反对,不会显示你的姓名




大萨比,SE游戏引擎工程师

杨荣杰白河唯踏莎行 等人赞同

苦心开发游戏引擎的人很少,哗众取宠的回答都被顶到了前面。

我虽然也不是什么专家,但是在这里也试着给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”之类的答案都被顶上来了。我希望这道题的答案应该都是这样的,应该给别人提出一个具体的“学习轨迹”,“学习方向”。

看了题目内容就懂了,题主只是想“谁来推荐给我一点学习资料,学习方法”。

您这样笼统的说应该各种游戏都去做一遍,话很正确,能让人一看就觉得“有道理”,但是肯定满足不了题主,也就是偏题了。

而这样的答案作为“正确答案”,“高质量答案”被摆在前面,这是知乎体系和权威影响力的弊端,我完全不该指责您。

您说的话有自己的立场,那不是“哗众取宠”,我再次为我的言行表示道歉。

编辑于 2014-07-29 29
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同5
反对,不会显示你的姓名




知乎用户,谢绝抖机灵

知乎用户、倪朝浩哈士奇 等人赞同

引擎复引擎,引擎何其多,吾生待引擎,游戏成蹉跎。

所以,还是直接做游戏的好。

不同类型的游戏做多了自然而然就会产生引擎了。

大公司一般都自己培养人,小公司基本都是抄open source。

初学者进公司不可能让你负责引擎的,没几年的业务积累,根本不知道引擎业务到底是做什么。

都是从一线业务开始,比如UI之类的比较繁杂的东西。

所以还是从最基本的做起吧。

做引擎真没啥高大上的,又不是黑科技。

为做游戏而做游戏,而不是造引擎。

游戏逻辑之类还有编辑器搞起来比引擎复杂多了。

编辑于 2014-07-26 11
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




牛大宝,如果现在还不能实现理想就从现在开始努力…

安东 赞同

首先声明我水平不高

我觉得游戏引擎开发和游戏开发需要的知识内容是一样,学游戏开发和学游戏引擎开发没有本质区别,除了现在国内普遍的快速开发门槛较低以外

鉴于有人看不懂我在说什么,补充一点

题主可以参考这篇文章,比较全面

游戏程序员养成计划 (更新2013.3.19)

其中的知识我觉得不管对游戏引擎开发还是对游戏开发来说都是必要的,随意我觉得两者没有本质区别

编辑于 2014-07-26 1
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




芦小

Daisy gao 赞同

同意 @张静vinjn 。游戏引擎作为一个整体,是从游戏中不断抽象出来的。不论是技术角度还是商业角度,引擎都不可能脱离游戏而单独存在。

但是就个人发展而言,楼主应该是对技术比较赶兴趣,而对游戏本身兴趣不大,所以才只想去做引擎(或者只是简单觉得写引擎技术含量更高)

如果没有一定的游戏开发经验,应该不大可能驾驭的了引擎整体架构这种工作。但是深入研究游戏引擎的某一个领域对于楼主可能是比较好的出路吧,比如图形,智能,网络。确实也认识不少不玩游戏,只是喜欢某个技术而入行的。

发布于 2014-07-26 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




NaNay,IT,
Graphics, Rendering, GPU, etc.

ye sun 赞同

第一步,找个你爱玩的游戏,研究其中你觉得最酷的一帧

第二步,根据自己的实力,弱化N倍,重写一个

第三步,重构代码,并尽量接近参考物的图像效果

不停重复第三步,让你的代码变的好用,易用,外加效果NB。慢慢的就是个不错的图形引擎了

发布于 2014-07-28 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




Xi
Yang,生物、计算机、数学、图像、音频全栈二把刀

知乎用户 赞同

图形模块远远称不上游戏引擎,差的部件太多了。你不可能只做一个光有图形而没有声音、AI、用户交互的游戏。

另外推荐《游戏编程精粹》系列,里面有很多非常实用的前沿技术。

发布于 2014-09-20 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同1
反对,不会显示你的姓名




zxy

踏莎行 赞同

引擎新手题是个很好的开头,有的话尽量做。然后尽快投入到实际的研发中,选择一款商业引擎,深入的研究它,并用它做游戏。学习引擎可以从编辑器入手,了解整个美术生产的流程和工艺,研究其中的细微之处,而后可以钻研其中某个组件对应的代码,虽是管中窥豹,但可以了解的很深入。而后横向发展,多积攒几个这样深入了解的模块,这之后就可以尝试梳理整个框架的设计思路了。理解了别人的思路,不妨动手自己设计一个。完全重头编写每个引擎模块是不现实的,可以适当借用别人的组件(比如物理,UI,声音),但是整体设计思路和关键组件一定要自己写,搭出来的玩具引擎不用设很高的目标,因为本来就是为了学习。

发布于 2015-07-24 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同0
反对,不会显示你的姓名




知乎用户,Game
Programmer

《游戏引擎架构》这本书好像可以满足题主接下来的需要,虽然我也没看过。。。

发布于 2014-07-27 2
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同0
反对,不会显示你的姓名




Claire的钱包,赌徒

自己从c++开始写游戏才有用。公司自研引擎的目标都是做游戏。以做引擎为目标去做引擎,10个引擎9个都没用,没用的引擎等于没做。

同意 @芦小 的说法“如果没有一定的游戏开发经验,应该不大可能驾驭的了引擎整体架构这种工作。”,建议楼主专攻一个领域。比如图形,另外Dx不是基础,要学图形题主应该从计算机图形学基础开始。例如《Real-Time Rending》这种书应该看在Dx前面。

发布于 2014-07-27 2
条评论 感谢

分享

收藏没有帮助

举报

作者保留权利

赞同0
反对,不会显示你的姓名


匿名用户

我说点别的。

学做游戏引擎可以,有时间的话多造轮子是好事,但是毕业后我建议不要进游戏公司。

可以的话,首选和autodesk类似的公司,也可以用上你学的计算机图形的知识。

发布于 2014-07-29 添加评论 感谢

分享

收藏没有帮助

举报

作者保留权利
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: