怎么学习游戏引擎开发

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给他看?)大家走过路过不要错过,给点建议行行好
Ⅰ:DirectX基础部分学好之后应该如何继续学习?直接看开源的游戏引擎?还是进一步深入学习DirectX可编程渲染流水线?还是看其他一些比如《Real Time 3D Terrain Engines Using C++ And DX9》、《Real-Time Rending》、《Game Engine Architecutre》等等相关书籍?还是自己写Demo?《游戏引擎架构》序言:……学习编程技能最好的方法就是写代码。在阅读本书时,强烈建议你选择一些特别感兴趣的主题付诸实践。举例来说,如果你觉得人物动画很有趣,那么可以首先安装,并测试一下它的蒙皮动画示范。接着还可以尝试用OGRE实现本书谈及的一些动画混合技巧。下一步你可能会打算用游戏手柄控制人物在平面上行走。等你能玩转一些简单的东西了,就应该以此为基础,继续前进!之后可以转移到另一个游戏技术范畴,周而复始。这些项目是什么并不重要,重要的是你在实践游戏编程的艺术,而不是纸上谈兵。如果要回答一个学习顺序,那么这不是一个很好的答案。但学习过程很多时候并不是顺序的,而且跟个人喜好有关,建议是一边看书(不一定是一本),一边实践想要做的东西。Ⅱ:涉及游戏引擎开发的公司有哪些?(腾讯?网易?触控科技?),这些公司对游戏引擎开发的职位要求是什么?以及将来面试时应该如何应对?(把自己写的Demo给他看?)《游戏引擎架构》译序:……然而,各游戏本身的性质以及平台的差异,使研发完全通用的游戏引擎变得极困难,甚至不可能。市面上出售的游戏引擎,有一些虽然已经达到很高的技术水平,但在商业应用中,很多时候还是需要因应个别游戏项目对引擎改造、整合、扩展及优化。因此,即使能使用市面上最好的商用引擎或自研引擎,我们仍需要理解当中的架构、各种机制和技术,并且分析及解决在制作中遇到的问题。这些也是译者曾任于上海两家工作室时的主要工作范畴。我在腾讯互娱研发部引擎技术中心的工作内容之一也是引擎改造、整合、扩展及优化。拿著Demo去面试是一个加分项,如果是开源的更能检查编码习惯和软件工程的能力。我会细致地问一些技术点,例如某一部分使用了什么技术,还有那些可选方案,他们之间的优缺点是什么。另外,「这里的游戏引擎暂时指图形模块」这种想法并不太合适,因为图形与其他模块要互相结合,高层的模块也要共用底层的模块,所以应该首先理解整体,再逐个部分深入。看到其他答案用了这张图,质量比较差,送张高清图吧。
很多人并不知道游戏引擎或渲染引擎是怎么回事就开始思考如何做游戏引擎,这是不对的。&br&首先应该深度掌握渲染的基本原理,因此我非常同意其他答案关于先自己实现一个软件光栅化渲染器的建议,你应该按照最新的标准自己大概实现一遍DirectX(例如要支持tessellation, shader, MSAA, blending, anisotropic filtering, 正确处理各种corner case如退化三角形等情况)。实现的过程中请参考DirectX的specification以学习相关细节。这个文档可能是只对硬件vendor公开,不过还是很容易获得的。实现软件光栅化还能极大地锻炼你的底层C++编码能力,并行程序设计能力和优化技巧,顺便还能把主流的GPU架构搞熟。&br&&br&一旦搞清楚光栅化渲染的本质,你就能理解各种所谓“高级渲染技术”的精髓,基本上看paper只需几秒钟扫一扫图就能看懂了。这样一来短时间内就能理解大量算法和渲染架构(例如各种shadow map, AO, volumetric scattering, deferred lighting, forward+等等)。&br&&br&当你对图形管线的本质以及各种可能的应用都了然于胸的时候,剩下的就是高层架构设计问题了。这个属于软件工程的范畴,没有捷径,只能通过大量试错来获得经验了(不停地重写)。&br&&br&其实当你知道了这些所谓的技术之后,你会发现大部分都是肤浅的hack而已。现在引擎的重要课题不在于谁掌握了更牛逼的渲染技术,而在于谁能设计出更好的开发流水线,内容制作以及美工反馈才是最大的难题。前段时间和bungie的图形总管聊destiny的engine,他们表示任何新的技术他们都可以在两天内实现出来,但最大的难题是1)如何使这些新技术在各种情况下都能鲁棒地工作;而大部分时候都很好,偶尔会挂掉的技术都是不可取的;2)如何构建好的工具让美工能够控制各种情况。举个例子,tessellation是个很酷的技术,但是应用到游戏中并不容易,因为1)创建好的displacement map很困难; 2)一旦引入LOD,则牵动全身:如何保持场景在各个视角的一致性?如何让displacement geometry正确地与阴影、碰撞、贴花和可见性等系统交互?&br&&br&此外不同平台上还有很多底层优化问题,这里就不展开了。
很多人并不知道游戏引擎或渲染引擎是怎么回事就开始思考如何做游戏引擎,这是不对的。 首先应该深度掌握渲染的基本原理,因此我非常同意其他答案关于先自己实现一个软件光栅化渲染器的建议,你应该按照最新的标准自己大概实现一遍DirectX(例如要支持tessell…
我们公司引擎部门新员工,一般会有两个入门练习:&br&一是只用类似DrawPixel的函数,实现一个软件光栅化。&br&二是使用自家引擎做一个完整游戏。可以比较简单,但必须完整。&br&一个去鹅厂的小伙伴也做过类似跑酷类手游作为练手。&br&&br&所以我觉得,从学习的角度,一边做游戏,一边做个玩具引擎,并不冲突。&br&做一个自己的引擎出来,满足技术好奇心,也能试验想法;&br&用一个开源图形引擎做一个类型的游戏,能了解组成部分和主要需求。了解&br&&br&楼上有好多关于做游戏还是做引擎的讨论,都是有道理的。&br&如&a data-hash=&0effe9e423faad125fa9c6a& href=&///people/0effe9e423faad125fa9c6a& class=&member_mention& data-editable=&true& data-title=&@张静vinjn& data-tip=&p$b$0effe9e423faad125fa9c6a& data-hovercard=&p$b$0effe9e423faad125fa9c6a&&@张静vinjn&/a& 等所说,如果没做过一个完整的游戏,直接只做引擎,学习的效率和引擎的质量都不会太高。&br&但在很多人心里,会把引擎开发的这个工作神话。这种时候自己做一个引擎,对提高自己的信心会有帮助。大部分贬低引擎开发工作的人,至少都是有能撸一个的底气的(且不说质量)。&br&&br&-------------------------------------------------------------------------------------------------------------&br&所以对两个方面,我都推荐一些自己感觉不错的资料:&br&&br&游戏逻辑方面:推荐一个网站, &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Game Programming Patterns&i class=&icon-external&&&/i&&/a&,作者把自己的书放github上,供读者提意见。&br&&br&引擎架构方面:Game Engine Architecture,这本得看中文翻译的。&br&图形引擎方面,主要是算法和API,引擎架构抄一套别人的。&br&图形基础算法书籍:在lz的基础上,推荐一个3D Game Engine Design,里面的3D算法和原理讲解很详细,可惜有点老。&br&高级图形技术:除了Real Time Rendering 3和GPU Pro系列以外,可以跟KlayGE和OpenGPU。这个方向量力而行,国内现在的行情是转手游的多,一些复杂的效果研究太深入也可能发挥不了。&br&&br&update:&br&下面评论有问,我贴一下。&br&软件光栅化可以简单理解为,只给你一个画点的函数,你需要用C++实现一个三维物体显示的过程。一般这个工作是由Direct3D/OpenGL的驱动实现来做的。&br&这个工作可以做的很难,也可以很简单。我们公司貌似所有客户端程序都会做这个,但要求跟老大有关。&br&最基本就是实现一个固定管线,包括顶点坐标的矩阵变化,画线,三角形填充光栅化算法,裁剪,Gouround光照,纹理坐标插值,ZBuffer等等。&br&要做好点,就可以把一个引擎Renderer部分的借口都实现了,用C++写个VS/PS,跟D3D/OpenGL平级。
我们公司引擎部门新员工,一般会有两个入门练习: 一是只用类似DrawPixel的函数,实现一个软件光栅化。 二是使用自家引擎做一个完整游戏。可以比较简单,但必须完整。 一个去鹅厂的小伙伴也做过类似跑酷类手游作为练手。 所以我觉得,从学习的角度,一边做…
已有帐号?
无法登录?
社交帐号登录
游戏程序员、《游戏引擎架构》译者给我们留言
地址:福建省晋江市青阳街道洪山路国际工业设计园纳金网
电话: 400-067-3919
(周一到周五, 周六周日休息)
查看: 32248|回复: 6
最后登录注册时间阅读权限100积分71274
纳金币59326 精华20
虚幻4与Unity: 哪个游戏引擎是开发者的最爱?
虚幻4 (UE4) 和Unity是目前市场上最热门的游戏引擎,也各自拥有为数众多的开发者,虽然一些大型的游戏公司仍然运用自家开发的引擎来制作游戏,但是在巨大的市场需求下,独立开发者与游戏工作室依然需要一款优秀的引擎来支持项目的开发。
那么,如何选择一款适合自己的引擎是最主要的工作,以下的介绍将有助于我们对这个艰难的选择题做出判断。
了解游戏的开发类型
首先需要了解的是,我们打算用游戏引擎来做什么,还有就是开发哪一类型的游戏,是2D还是3D形态? 是跑酷还是射击类?是准备将游戏做出来发布在浏览器还是手机? 对游戏如何获利是否已经有想法或是计划? 是通过哪种方式收费? 置入还是道具购买?
明确以上的这些问题后才能让我们决定使用虚幻4还是Unity,而这两个引擎一定都可满足我们的需求,差别就在于哪一个引擎在我们开发过程中所带来的效益最高。
以国内目前的市场来看,采用Unity来开发手机游戏似乎是很理想的选择,不论是3D或是2D类型的游戏,Unity提供的功能已经能帮助开发者快速的制作出一款精美的手游。而虚幻4最近开始强化的2D图像与手机发布功能,似乎也让不少的开发者跃跃欲试。
如果我们想要创建的是一款3D游戏,那么使用Unity是不错的选择,在图像的呈现上面,Unity与虚幻4本来就不是同一个等级,如果在我们的游戏中并不需要表现出次时代画质的效果,那么Unity确实已经能符合我们的需求。
另外就是对于虚拟现实与导览项目的应用,现在国内外已经有不少的设计院采用游戏引擎来制作交互形态的展示,例如在iPad上面使用触控方式来表现建筑景观,或是在科博馆里面以互动效果来达到教育与各种视觉模拟。
03:03 上传
制作游戏的类型将决定了使用哪一款游戏引擎,另外就是发布平台的选择也是一个决定的因素,而准备投入的预算则是牵动了最终的决定。
如果你现在是很有理想,有抱负的一个开发者,手上并没有太多的预算,那么游戏引擎的授权费就是一个考虑的重点了,尤其是在游戏正式面向市场时,版权的费用一定是要列入计算的。
Unity 提供了免费版让我们使用,不过与Pro版本比较起来,免费版更适合刚接触游戏开发的用户,也就是我们所说的入门版本,如果要直接使用Unity Pro的版本,代价是1500美元,或是支付每个月75美元,即可获得完整的软件授权。
而虚幻4没有 Pro 或免费版的区分,只要月付19美元即可获得这个游戏引擎的所有东西,这个价格看起来是比Unity Pro有更大的优势,但是有一个前提,就是虚化的开发商将在我们的获利中抽取5%的费用,不管这个游戏是用何种方式来跟用户收费,所以这个地方也是开发者需要特别注意的。
那么有人问到,如果停止支付19美元的后果是什么?这个就简单了,停止支付的结果就是无法升级到最新的版本,而我们也注意到了,从虚幻4.0发布以来,更新的脚本非常的快速,目前已经到了4.5的版本,而Unity从2012年底发布了4.0之后,目前还停留在4.5.x的版本。
虚幻4还有一个优势,在大学或是学术单位是可以免费使用虚幻4来做课业还是毕展,学生也可以用来制作与发布自己的游戏,当然了,开发商还是需要收取这5%的费用,相对之下,虚幻4似乎更容易在校园内推广。
以现在资讯发达的程度来看,开发游戏已经不是什么惊天的技术或是啥秘密了,除了引擎价格与开发项目类型的考量,游戏引擎采用的编程方式也影响了我们的最终决定。
虚幻4采用C++的开发语言,而Unity使用C#与JavaScript,我们可以依照个人的能力与喜好来决定采用虚幻4或是Unity,虽然说有的人觉得C++已经过时了,但还是有不少的开发者偏好使用此一编程技术,如果我们擅长的语言是C#,那么投入Unity的怀抱是毋庸置疑的选择。
虚幻4现在提供一个可视化的脚本功能与Unity插件Playmaker、uScripts非常的相似,这种可视化工具的好处就是让美术人员可以在不用编写代码的情况下来完成游戏,只不过在国内市场对这类型的开发方式并不是有太高的认同度,大多数的情况下是将可视化工具用在虚拟现实的项目演示上面多些。
03:02 上传
而虚幻4的可视化脚本有先天上的条件限制,如果是初学者来使用就很适合,或是用来做建筑导览,虚幻4的图像表现绝对是高于Unity,而实际上现在已经有许多高品质的室内外效果展示皆出自虚幻4。
虚幻4与Unity都有专属的资源商店,我们可以在商店里面付费下载各种游戏开发用的资源,例如角色模型,场景,道具,GUI,特效与个类型的音效,而Unity提供的资源类型种类齐全,也是目前国内开发者经常去“淘资源”的地方,也有许多开发者制作插件与模型在商店进行销售,所以在资源提供的部分,Unity明显的要优于虚幻4。
03:02 上传
在图像的表现上面,虚幻4的确已经建立一个超高的标准,也符合大家对3A级游戏的定义,从复杂的粒子模拟效果与先进的动态照明技术,虚幻4带给开发者一个全新的开发平台,当然,对于即将发布的Unity 5.0版本,诸多开发者也是翘首以盼,希望Unity的新版本在某些效果的呈现上能与虚幻4并驾齐驱。
03:02 上传
图像的能力虽然不能代表一切,毕竟以现在的游戏市场来说,有创意性的游戏往往更能吸引用户的关注,尤其是以手游市场的整体效益来看,小而精致的游戏确实比起一些游戏大作更受到玩家的喜爱。
哪一个更容易上手?
在一些论坛里面多数人讨论的一个话题是,到底是虚幻4好上手还是Unity更利于开发? 其实讨论这个主题的意义不大,Unity在国内的使用人口与学习资源皆高于虚幻引擎,市场上招聘的开发人员也多以Unity为主,所以我们认为讨论这个主题必须根据区域的情况来做为前提,例如有人学了虚幻后,发现市场的需求与机会不是很多,那是不是意味着必须放弃虚幻来学习Unity?
如果不考虑太多的前提,只是想知道哪一个引擎更适合自己的话,最简单的方法就是直接拿一个项目来做练习,分别将项目导入虚幻4与Unity,在实施过程中就会发现到许多的问题,这时就能根据自己的解决能力与手上的资源来判断哪一个引擎更适合自己。
最后登录注册时间阅读权限70积分3547
中级设计师, 积分 3547, 距离下一级还需 1453 积分
纳金币-108 精华0
虚幻性能和效果还是比unity强大的
最后登录注册时间阅读权限90积分25604
资深设计师, 积分 25604, 距离下一级还需 24396 积分
纳金币377 精华0
我其实试过很多次了,都想尝试尝试UE4,不过每次都是被U5多强多强给打扰了。到现在U5也是beta版,一直不喜欢beta版本,所以就一直没尝试,也把UE4耽误了。
网上看到做楼体展示的UE4,效果真是很惊天了,总感觉那也是个团队做的,U5现在很多人都在尝试,但是感觉做出来的也没啥好东西。
看来有时间真得看看UE4,看看好的效果怎么表现出来,目前U5做的不错的基本都是官方的人自己弄的,开发着弄的话感觉还是太吃力了。
最后登录注册时间阅读权限50积分1488
助理设计师, 积分 1488, 距离下一级还需 512 积分
纳金币685 精华0
如果UE4的画面是*****
那么U5顶多也就是***
差距是不言而喻的
但是Unity上手的速度和投入的学习成本还有开发效率又可以甩UE4几条街
最后登录注册时间阅读权限90积分11323
资深设计师, 积分 11323, 距离下一级还需 38677 积分
纳金币5 精华0
国内还是Unity一桶天下方便面
最后登录注册时间阅读权限90积分6667
高级设计师, 积分 6667, 距离下一级还需 3333 积分
纳金币2715 精华0
ahhhh Unity ~!!
最后登录注册时间阅读权限50积分1018
助理设计师, 积分 1018, 距离下一级还需 982 积分
纳金币19 精华0
谢谢提供的好资源支持
活跃且尽责职守的版主
站长推荐 /1
纳金名模第123期花3d模型:数量100个,大小为777MB。完全免费下载哦!这样的福利我和我的小伙伴们都惊呆了!!下载地址:
400-067-3919
Powered by - X2.5
Narkii Inc.如何自学游戏引擎的开发?
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给他看?)大家走过路过不要错过,给点建议行行好
Ⅰ:DirectX基础部分学好之后应该如何继续学习?直接看开源的游戏引擎?还是进一步深入学习DirectX可编程渲染流水线?还是看其他一些比如《Real Time 3D Terrain Engines Using C++ And DX9》、《Real-Time Rending》、《Game Engine Architecutre》等等相关书籍?还是自己写Demo?《游戏引擎架构》序言:……学习编程技能最好的方法就是写代码。在阅读本书时,强烈建议你选择一些特别感兴趣的主题付诸实践。举例来说,如果你觉得人物动画很有趣,那么可以首先安装,并测试一下它的蒙皮动画示范。接着还可以尝试用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正确地与阴影、碰撞、贴花和可见性等系统交互?此外不同平台上还有很多底层优化问题,这里就不展开了。
我们公司引擎部门新员工,一般会有两个入门练习:一是只用类似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平级。
一点一点回答题主问的图形引擎开发:刚好写过一个,这个你一开始可以参考ogre看看,你需要主要研究的内容主要包括但不限于以下部分场景管理(关键中的关键)渲染流水线结构Shader场景Culling算法下层图形接口的抽象最好的学习方法还是从利用现有引擎开发游戏做起,和其他答案说的一样,游戏引擎本来就是抽象出来的一个东西,没写过游戏就写引擎,还是算了。涉及游戏引擎开发的公司有哪些?一句话,如果你想做研发,建议还是来我司。这些公司对游戏引擎开发的职位要求是什么?招人的时候一般是研发的统一招,不会单独招做引擎的,这个是进来以后的事一般没有新人做引擎的情况以及将来面试时应该如何应对?(把自己写的Demo给他看?)这个说明不了什么,研发岗位更注重的是表面上看不到的东西,我指的架构程序的能力。当然如果你有水平做这个,面试的时候可以多讲讲,水平高下自然能看出来。基本就是这样。
没有必要刻意的区分游戏引擎和游戏,对于程序员而言,游戏开发得多了,自然会把可重用的部分提取成 library。而这 library 逐渐丰富起来,便成了引擎。如果你一开始就抱着我想做的是引擎,而不是游戏的态度,那这个事情就有点扭曲了。如果你没开发过游戏,你怎么知道游戏引擎里需要哪些组件呢?是吧。所以想开发引擎,最靠谱的方法就是,去开发游戏,各种类型的游戏。俄罗斯方块、2048、第一人称射击等等,0D、1D、2D、3D、4D 都需要试试。以下是哗众取宠的跑题时间(居然被一名学生批评哗众取宠,不开心呀)0D 就是说没有任何画面 RGB(0, 0, 0),可以用麦克风来控制、再用音乐来反馈。1D 就是只有一维,比如一个点在一条线上移动。2D、3D 大家熟悉。4D 是 3D 配上奇怪的电子设备,比如 Kinect、Arduino、Oculus Rift、Vibrator(咳咳)等。
图形模块远远称不上游戏引擎,差的部件太多了。你不可能只做一个光有图形而没有声音、AI、用户交互的游戏。另外推荐《游戏编程精粹》系列,里面有很多非常实用的前沿技术。
基本上正如
说的那样,引擎就是从游戏里来的,所以早期的引擎就是游戏的复用部分,像QUAKE(开源),通用引擎是很后来的事情了。既然题猪提到了游戏引擎架构这本书,我就拍一页做范例加了些框框给你参考(希望没侵权= =)。这是作者理解的游戏引擎的共通的组成部分,上层的是游戏开发者会用到的,底层的是引擎开发商提供的。题猪正在学习和深入的DX其实是底层的其中一个方面(试试找找?:)——换句话来说,世界很大,术业有专攻 :) 常用的引擎有哪些?UE(腾讯英佩),Cocos(触控), Unity比较多吧。通用引擎大同小异,学会了一个对其他也有质的帮助(咦,我没有在说C)。QUAKE、OGRE等开源引擎是很好的学习/理解材料,但是对题猪在国内找工作可能没太大帮助。游戏/引擎的开发我觉得更像是拍电影,有很多的组成部分特别是艺术的。建议题猪把目标放在尽可能多的开发不同种类的游戏上,积累了足够的理解和经验后再着手引擎的学习,相较于学习引擎然后面试一份工作要合理一些。Good Luck!附图:
自己写引擎都是坑有木有。。。以前在某公司参与过自研引擎的开发(工作需要,本身渣水平),当然目的还是要做游戏(当时cocos2d-x才刚出来,很不成熟,也没啥人用)。当时我不是负责图形部分(游戏引擎不仅仅只是渲染引擎一个模块),因为要配合游戏开发,所以当时的引擎特性根本定不下来。接口三天两头的改,前一天编译无误的代码第二天可能就因为别人某个模块API名称或者参数个数的变化导致编译出错。更不要提各种bug了。=========吐槽的分割线==========好吧,言归正传。回过头来,感觉很多东西不经历一遍是很难做到完美的。引擎也是,不写上几次估计都不能算入门。初学最好的办法就是模仿。找几个出名易用的引擎,看看他的整体结构如何,怎么划分的模块。有什么特点。最好再多用用,体会一下对方为什么这么设计。然后思考一下对方的有什么缺点,自己如何改正,然后试着模仿一个出来。不过估计第一次都会痛苦嘛,以后就好了。你看苹果发布的SpriteKit跟cocos2d有多像,几乎就是换了一个名字。cocos2d简直成了2d引擎的代名词,各种模仿也由此而来。而且cocos2d-iphone,cocos2d-x,cocos2d-js的代码也很容易获得,是个参考研究不错样例。3D引擎在移动端基本上一家独大了,不过可惜不开源,看不到实现,不过整体思路倒是可以参考。其实还有一些开源的3d引擎,不过现在不太流行就不赘述了。真想学习的话,Irrlicht是个不错的东西。而且这东西很容易编译到移动端。最后,游戏引擎是一个综合工程,不仅仅只是图像的堆砌,还有声音,网络,UI,物理等等模块。而且很多底层都要有坚实的高等数学和线性代数基础。希望以上文字对你有用。
真正写的时候会发现无比蛋疼。是我正在写的。
想做图形引擎开发就问怎么学做图形引擎开发,别跟游戏扯上关系。图形只是游戏的一部分而已。觉得图形引擎技术含量高?AR,CV这种简直笑蛤蛤。一说游戏必提3A的,不是门外汉就是干了几年还摸不到门道的主儿。言归正传,想学游戏引擎开发,三个步骤:1,用现成的引擎写个游戏。2,自己随便找个开源的造个轮子,把之前写的游戏里用的第三方引擎替换掉。3,各种看siggraph,隔几天就想办法把里面提的东西实现下加自己的轮子里。当然其中最难的是第一步,最枯燥的是第二步,最顺理成章的是第三步。做完这三步,题主绝壁比去虚幻啊ce啊这种国外的引擎公司去当螺丝钉的家伙不知高到哪里去了。
已有帐号?
无法登录?
社交帐号登录

我要回帖

 

随机推荐