北京汇众中关村动漫游戏学院
怎么学习游戏引擎开发
, 游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。我们可以把游戏的引擎比作赛车的引擎,大家知道,引擎是赛车的心脏,决定着赛车的性能和稳定性,赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的。简单地说,引擎就是“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。游戏引擎在游戏中的运用是 可见,引擎并不是什么玄乎的东西,无论是2D游戏还是3D游戏,无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样一段起控制作用的代码。
学习游戏引擎要怎么做:
1、首先是语言方面,这个问题没有太多的选择的余地,基本上是用C和C++;VB的也有,但是很少;C#因为微软的力挺,在游戏开发中也逐渐多了示例。了解基本语义和语法就可以下一步了。如果想C++学精通了在往下学,估计就没有机会往下学了,因为你的热情可能在这都耗费了。这个的学习是要不断重复的,想一遍学好是不可能的。
2、数据结构的知识。这是基本的,而且对于算法的优化,速度的提升,在游戏开发中也是极为讲究的。教程很多,关键还是自己的思考和把握。
3、Visual Studio 环境的使用。这个比较简单但是却十分重要,如果连筷子都不会用,想吃面条,那是比较费劲的,呵呵。看MSDN中相关帮助部分。
4、Win32编程。想全面就看《Windows 程序设计》就可以。网上有电子版,中英文都有,自己搜。想粗略了解就看《Windows游戏编程大师技巧》第一部分。
5、COM接口的使用。想粗略了解就看《Windows游戏编程大师技巧》第二部分。
6、图形学。这个是理论部分的内容,我认为可以先看DirectX或者OpenGL,然后再翻回头看这个。其实我是看了DirectX之后,又看了两遍图形学,才对图形学有了切实的感觉。
7、图形软件开发包。主要是DirectX和OpenGL。任选一个深入地学,学好之后,再学另一个,否则就会白白地浪费很多精力,因为他们相通或者相同的东西是主要的,不同的地方是次要的。
8、软件工程。任何一个大型软件的开发,都离不开软件工程的支持。引擎开发就是一个大的工程。所以应该对软件工程有个大概了解。
9、设计模式。有不少引擎大量地应用设计模式提高软件的性能,比如Ogre。
,建议是在有计算机语言基础的情况下学习,如果自己没有基础,又想从事这方面工作可以到相关的游戏培训机构学习,是国内最早从事游戏开发培训的教育机构。汇众教育成立以来一直自主研发课程体系,课程根据现在的游戏行业的发展断的新发展,保障学生学习到最新的游戏开发技能,汇众教育在12年6月再次进行课程升级,本次课程升级在游戏程序中的课程,引入最新商业游戏引擎----Unity 3D,目前先进的游戏引擎开发课程。
开班信息Class Information
就业指导Employment
学校详细地址:北京市海淀区中关村大街18号中关村互联网教育创新中心17层
全国服务咨询***
京ICP备号北京汇众益智科技有限公司 地址:北京市海淀区上地东路35号颐泉汇3层 ***:010-推荐这篇日记的豆列如何自学游戏引擎的开发? |
我的图书馆
如何自学游戏引擎的开发? |
【张静vinjn的回答(29票)】:没有必要刻意的区分和游戏,对于而言,得多了,自然会把可重用的部分提取成 library。而这 library 逐渐丰富起来,便成了引擎。如果你一开始就抱着我想做的是引擎,而不是游戏的态度,那这个事情就有点扭曲了。如果你没开发过游戏,你怎么知道游戏引擎里需要哪些组件呢?是吧。所以想开发引擎,最靠谱的方法就是,去开发游戏,各种类型的游戏。俄罗斯方块、2048、第一人称射击等等,0D、1D、2D、3D、4D 都需要试试。以下是哗众取宠的跑题时间(居然被一名学生批评哗众取宠,不开心呀)0D 就是说没有任何画面 RGB(0, 0, 0),可以用麦克风来控制、再用音乐来反馈。1D 就是只有一维,比如一个点在一条线上移动。2D、3D 大家熟悉。4D 是 3D 配上奇怪的电子设备,比如 Kinect、Arduino、Oculus Rift、Vibrator(咳咳)等。【知乎用户的回答(8票)】:我们公司引擎部门新员工,一般会有两个入门练习:一是只用类似DrawPixel的函数,实现一个软件光栅化。二是使用自家引擎做一个完整游戏。可以比较简单,但必须完整。一个去鹅厂的小伙伴也做过类似跑酷类手游作为练手。所以我觉得,从学习的角度,其实两个项目一起做,并不冲突。做一个自己的引擎出来,满足技术好奇心,也能试验想法;用开源引擎做一个类型的游戏,能了解组成部分和主要需求。楼上有好多关于做游戏还是做引擎的讨论,都是有道理的。如 等所说,如果没做过一个完整的游戏,直接只做引擎,学习的效率和引擎的质量都不会太高。但在很多人心里,会把引擎开发的这个工作神话。这种时候自己做一个引擎,对提高自己的信心会有帮助。大部分贬低引擎开发工作的人,至少都是有能撸一个的底气的(且不说质量)。-------------------------------------------------------------------------------------------------------------所以对两个方面,我都推荐一些自己感觉不错的资料:游戏逻辑方面:推荐一个网站, ,作者把自己的书放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平级。【刘然的回答(6票)】:一点一点回答题主问的图形引擎开发:刚好写过一个,这个你一开始可以参考ogre看看,你需要主要研究的内容主要包括但不限于以下部分场景管理(关键中的关键)渲染流水线结构Shader场景Culling算法下层图形接口的抽象最好的学习方法还是从利用现有引擎开发游戏做起,和其他***说的一样,游戏引擎本来就是抽象出来的一个东西,没写过游戏就写引擎,还是算了。涉及游戏引擎开发的公司有哪些?一句话,如果你想做研发,建议还是来我司。这些公司对游戏引擎开发的职位要求是什么?招人的时候一般是研发的统一招,不会单独招做引擎的,这个是进来以后的事一般没有新人做引擎的情况以及将来面试时应该如何应对?(把自己写的Demo给他看?)这个说明不了什么,研发岗位更注重的是表面上看不到的东西,我指的架构程序的能力。当然如果你有水平做这个,面试的时候可以多讲讲,水平高下自然能看出来。基本就是这样。【知乎用户的回答(7票)】:想做图形引擎开发就问怎么学做图形引擎开发,别跟游戏扯上关系。图形只是游戏的一部分而已。觉得图形引擎技术含量高?AR,CV这种简直笑蛤蛤。一说游戏必提3A的,不是门外汉就是干了几年还摸不到门道的主儿。言归正传,想学游戏引擎开发,三个步骤:1,用现成的引擎写个游戏。2,自己随便找个开源的造个轮子,把之前写的游戏里用的第三方引擎替换掉。3,各种看siggraph,隔几天就想办法把里面提的东西实现下加自己的轮子里。当然其中最难的是第一步,最枯燥的是第二步,最顺理成章的是第三步。做完这三步,题主绝壁比去虚幻啊ce啊这种国外的引擎公司去当螺丝钉的家伙不知高到哪里去了。【大萨比的回答(7票)】:苦心开发游戏引擎的人很少,哗众取宠的回答都被顶到了前面。我虽然也不是什么专家,但是在这里也试着给LZ一点自己学习的心得。我假设LZ的目标是去Crytek,Epic之类一流公司做引擎开发的有志青年。首先推荐给LZ一个论坛,这上面有不少和LZ一样正在学引擎开发的小伙伴。不要去gameres,那里的东西都是过期的,看了没好处。你提到的那几本书是要看的,没错,都看。其他需要的书知乎上蛮多人都讨论过了(我觉得已经被问烂了),你可以看看Milo Yip在知乎上答过的问题。clayman推荐的一些书你也可以看看,我的个人建议是推荐LZ去学11,实时图形学的历史本来就不长,你还抓着10年前的API不放真是说不过去。关于DEMO,我觉得十分必要,亲自写了才知道自己还缺什么需要学,另外写DEMO很有成就感。至于招聘的情况不容乐观,国内做3D引擎研发的非常少,腾讯招人,但开出的条件都是AAA工作室的要求,尤其是要工作经历的比较多。(忍不住吐槽:本来还很期待天刀,现在横看竖看都不是AAA,糟蹋人才)你看看其他的答主就能理解其他厂商都在做什么了。投钱搞研发不如直接做游戏挣钱,“钱”要越快越好。据说国内大批的游戏人都通过育碧走向了全世界,capcom在国内也招人。顺便YY一下游戏机进来了国内也会有一定缺口。最后我说的都是空话,如果你没能力下苦功钻研几年。------------------------------------------------------------------------------------------------------7.20补充看了回复我发现不少人对我的回答存在误解,我觉得要再码点字。题主加了个PS,说主要是问图形引擎,即便不加,题主问的也是图形引擎。正如大家都说的,游戏引擎不过就是把游戏重用的部分提取出来,所以研究价值不高,但是各位可以看看大型游戏公司发表的论文,公布的技术,几乎全是实时图形学的研究,无论是siggraph,GDC。有谁见过游戏公司出席物理学会议的么?如果题主只是在问游戏引擎的话,也就是说图形引擎也用中间件,那么纯粹是个组装拼凑的熟练活,“做一个完整的游戏”更能练手。关于AAA,有人一看到这个词就像打了鸡血一样跳出来骂我,大可不必,这个回答又不是在教你“如何混进AAA工作室”我只是个在校的学生而已,知乎上只会摆资历不讲实在话的人不少,我们天朝人的浮躁就在此暴露无遗。我不想被人说是在“装b”,所以贴一个自己的博客。一来题主可以和我交流,我也是从头开始一点点自学的。二来喷我的那些“工作经历x年”的人们,你们大学时代在做什么?你们进公司当螺丝钉都是高抬了。另外我进的公司还真不是BAT那样的大公司,引擎开发今年只进了我一个。【李洋的回答(4票)】:自己写引擎都是坑有木有。。。以前在某公司参与过自研引擎的开发(工作需要,本身渣水平),当然目的还是要做游戏(当时cocos2d-x才刚出来,很不成熟,也没啥人用)。当时我不是负责图形部分(游戏引擎不仅仅只是渲染引擎一个模块),因为要配合游戏开发,所以当时的引擎特性根本定不下来。接口三天两头的改,前一天编译无误的代码第二天可能就因为别人某个模块API名称或者参数个数的变化导致编译出错。更不要提各种bug了。=========吐槽的分割线==========好吧,言归正传。回过头来,感觉很多东西不经历一遍是很难做到完美的。引擎也是,不写上几次估计都不能算入门。初学最好的办法就是模仿。找几个出名易用的引擎,看看他的整体结构如何,怎么划分的模块。有什么特点。最好再多用用,体会一下对方为什么这么设计。然后思考一下对方的有什么缺点,自己如何改正,然后试着模仿一个出来。不过估计第一次都会痛苦嘛,以后就好了。你看苹果发布的SpriteKit跟cocos2d有多像,几乎就是换了一个名字。cocos2d简直成了2d引擎的代名词,各种模仿也由此而来。而且cocos2d-iphone,cocos2d-x,cocos2d-js的代码也很容易获得,是个参考研究不错样例。3D引擎在移动端基本上一家独大了,不过可惜不开源,看不到实现,不过整体思路倒是可以参考。其实还有一些开源的3d引擎,不过现在不太流行就不赘述了。真想学习的话,Irrlicht是个不错的东西。而且这东西很容易编译到移动端。最后,游戏引擎是一个综合工程,不仅仅只是图像的堆砌,还有声音,网络,UI,物理等等模块。而且很多底层都要有坚实的高等数学和线性代数基础。希望以上文字对你有用。【AlexZhu的回答(3票)】:基本上正如
说的那样,引擎就是从游戏里来的,所以早期的引擎就是游戏的复用部分,像QUAKE(开源),通用引擎是很后来的事情了。既然题猪提到了游戏引擎架构这本书,我就拍一页做范例加了些框框给你参考(希望没侵权= =)。这是作者理解的游戏引擎的共通的组成部分,上层的是游戏开发者会用到的,底层的是引擎开发商提供的。题猪正在学习和深入的DX其实是底层的其中一个方面(试试找找?:)----换句话来说,世界很大,术业有专攻 :)常用的引擎有哪些?UE(腾讯英佩),Cocos(触控), Unity比较多吧。通用引擎大同小异,学会了一个对其他也有质的帮助(咦,我没有在说C)。QUAKE、OGRE等开源引擎是很好的学习/理解材料,但是对题猪在国内找工作可能没太大帮助。游戏/引擎的开发我觉得更像是拍电影,有很多的组成部分特别是艺术的。建议题猪把目标放在尽可能多的开发不同种类的游戏上,积累了足够的理解和经验后再着手引擎的学习,相较于学习引擎然后面试一份工作要合理一些。Good Luck!附图:【知乎用户的回答(5票)】:引擎复引擎,引擎何其多,吾生待引擎,游戏成蹉跎。所以,还是直接做游戏的好。不同类型的游戏做多了自然而然就会产生引擎了。大公司一般都自己培养人,小公司基本都是抄open source。初学者进公司不可能让你负责引擎的,没几年的业务积累,根本不知道引擎业务到底是做什么。都是从一线业务开始,比如UI之类的比较繁杂的东西。所以还是从最基本的做起吧。做引擎真没啥高大上的,又不是黑科技。为做游戏而做游戏,而不是造引擎。游戏逻辑之类还有编辑器搞起来比引擎复杂多了。【牛大宝的回答(1票)】:首先声明我水平不高我觉得游戏引擎开发和游戏开发需要的知识内容是一样,学游戏开发和学游戏引擎开发没有本质区别,除了现在国内普遍的快速开发门槛较低以外鉴于有人看不懂我在说什么,补充一点题主可以参考这篇文章,比较全面其中的知识我觉得不管对游戏引擎开发还是对游戏开发来说都是必要的,随意我觉得两者没有本质区别【芦小的回答(0票)】:同意
。游戏引擎作为一个整体,是从游戏中不断抽象出来的。不论是技术角度还是商业角度,引擎都不可能脱离游戏而单独存在。但是就个人发展而言,楼主应该是对技术比较赶兴趣,而对游戏本身兴趣不大,所以才只想去做引擎(或者只是简单觉得写引擎技术含量更高)如果没有一定的游戏开发经验,应该不大可能驾驭的了引擎整体架构这种工作。但是深入研究游戏引擎的某一个领域对于楼主可能是比较好的出路吧,比如图形,智能,网络。确实也认识不少不玩游戏,只是喜欢某个技术而入行的。【知乎用户的回答(0票)】:《游戏引擎架构》这本书好像可以满足题主接下来的需要,虽然我也没看过。。。【乌不归的回答(0票)】:自己从c++开始写游戏才有用。公司自研引擎的目标都是做游戏。以做引擎为目标去做引擎,10个引擎9个都没用,没用的引擎等于没做。同意
的说法“如果没有一定的游戏开发经验,应该不大可能驾驭的了引擎整体架构这种工作。”,建议楼主专攻一个领域。比如图形,另外Dx不是基础,要学图形题主应该从基础开始。例如《Real-Time Rending》这种书应该看在Dx前面。【逍遥剑客的回答(0票)】:自己写游戏【GameOrange的回答(0票)】:先研究下开源游戏引擎是怎么回事,先学会用游戏引擎开发游戏,再研究游戏引擎。 推荐学习研究下开源的OGEngine,也可以加入OGEngine开发者讨论群和开发者讨论【Huangzhidu的回答(0票)】:先把c++玩熟,再把图形学要用到的数学和物理基础吃透(这部分涉及的可不少),再看图形接口的书,顺便向底层拓展一下。之后就可以一边练小程序,一边攻克渲染方面的难题了……(我也不是学图形学的,一直在摸索前进,所以***仅供题主参考,共同努力吧)
发表评论:
馆藏&57968
TA的推荐TA的最新馆藏