【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论

上传人:宝路 文档编号:6872963 上传时间:2017-09-14 格式:DOC 页数:16 大小:723.73KB
返回 下载 相关 举报
【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论_第1页
第1页 / 共16页
【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论_第2页
第2页 / 共16页
【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论_第3页
第3页 / 共16页
【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论_第4页
第4页 / 共16页
【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论》由会员分享,可在线阅读,更多相关《【VisualC】游戏开发笔记三十五站在巨人的肩膀上:游戏引擎导论(16页珍藏版)》请在金锄头文库上搜索。

1、【Visual C+】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论本系列文章由 zhmxy555(毛星云)编写,转载请注明出处。 文章链接: http:/ 邮箱: 看到在留言中很多朋友提到不太清楚 DirectX 与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们Visual C+游戏开发专栏的游戏引擎导论,也希望能通过这篇文章,能让大家有所启发,对游戏引擎,对渲染流水线的概念有更深刻的认识。文章首先分析了学习游戏引擎的必要性,然后介绍了游戏引擎的概念和相关知识,接着介绍了几款最具人气的开源游戏引擎,然后对市面上存在的所有游戏引擎进行了列举,并为所

2、有列出的游戏引擎都给出了官方网站的链接。文章末尾回归了我们 Direct3D 的主题,为后续内容的讲解进行了铺垫。一、学完 DirectX,我们该干什么?浅墨觉得,历代 DirectX 龙书的作者 Frank Luna 在龙书中忽视了非常重要的一方面内容的讲解,那就是就是学完了DirectX 我们接着该做什么。这大概是很多怀揣游戏开发梦想的热血青年们曾经思考过的问题。浅墨也曾经在这问题上迷茫过,也因为没人指明前路而走了不少弯路。不过后来在黑暗中不断地摸索,将荆棘变成坦途之后,终于摸索出了一条正确的道路。也就是看完龙书DIRECTX.9.0.3D 游戏开发编程基础之后,我们需要如何学习,来把学到

3、的知识立体化,最终转化为开发游戏的实际能力。首先我们需要再看一本书, Real-Time Rendering ,也就是(RTR)实时渲染技术,目前出到第三版了。 (这本书并没有中文版,大家如果要走游戏开发的道路,读完龙书之后,剩下基本上都要靠读英文书了。 )学完龙书,也可以选择自己喜欢的游戏引擎来接触并掌握了。看完龙书后浅墨首推学习 Irrlicht,然后进阶推荐Ogre。两者都是开源游戏引擎,都有着源代码提供下载学习,而且网上对这两种引擎的研究热情很高,资料丰富,引擎代码字里行间都是哲思,掌握其中的代码并纳为己用,自己写出像样的游戏 demo 来是不成任何问题的。下面,就开始看看我们这篇文章

4、的主角 游戏引擎二、站在巨人的肩膀上:游戏引擎导论1.游戏引擎的起源和意义上帝说,要有光,于是,就有了光。曾经有一段时期,游戏开发者关心的只是如何尽量多地开发出新的游戏并把它们推销给玩家。尽管那时的游戏大多简单粗糙,但每款游戏的平均开发周期也要达到8到10个月以上,这一方面是由于技术的原因,另一方面则是因为几乎每款游戏都要从头编写代码,造成了大量的重复劳动。渐渐地,一些有经验的开发者摸索出了一条偷懒的方法,他们借用上一款类似题材的游戏中的部分代码作为新游戏的基本框架,以节省开发时间和开发费用。根据马克思的生产力学说,单位产品的成本因生产力水平的提高而降低,自动化程度较高的手工业者最终将把那些生

5、产力低下的手工业者淘汰出局,引擎的概念就是在这种机器化作业的背景下诞生的。简而言之,因为想用更短的周期开发游戏,省掉重复编写代码的功夫,于是便有了游戏引擎。首款的3D 引擎诞生于1992 年, 3D Realms 公司/Apogee 公司发布了一款只有2 兆多的小游戏 德军司令部 (Wolfenstein 3D) 。之后这款游戏引申为 Wolfenstein 3D 游戏引擎,这也是史上首款3D 引擎,它的作者是大名鼎鼎的约翰卡马克,这位 id Software 公司的首席程序师正是凭借这款 Wolfenstein 3D 引擎在游戏圈里站稳了脚跟。在此之后,游戏业界都受此启发,各式各样的游戏引擎

6、层出不穷。而各种游戏引擎的出现,使得游戏开发并不需要从零开始,从而使得开发的周期大大缩短,也使开发成本大大降低。游戏引擎崛起,游戏产业的黎明,就此降临。2.什么是游戏引擎游戏引擎好比赛车的引擎,是用于控制所有游戏功能的主程序,从计算碰撞、物理加速系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样一段起控制作用的代码。这里我们丢出一个概念。游戏引擎是指一些已编译好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,

7、其目的在于让游戏设计者能容易和快速地做出一款游戏作品,而不是从零开始写起,这样大大缩短了开发的效率,开发的时间和开发的成本。可以这样说,游戏引擎让我们站在巨人的肩膀上进行游戏的开发,而不是从零开始。3.一款完善的游戏引擎的构成我们很大程度上将游戏引擎都理解为渲染引擎,分为2D 图形引擎和3D 图形引擎,其实游戏引擎并不单单指渲染引擎。渲染引擎只是一款完善的游戏引擎最重要的组成部分,而一款完善的引擎,还包含物理引擎,碰撞检测引擎,音效引擎,脚本引擎,电脑动画引擎,人工智能引擎,网络引擎,场景管理引擎以及 IO 管理引擎等等。其中,3D 引擎的渲染系统通常建立在一套或者多套高级的图形 API 之上

8、,比如我们熟知的 Direct3D 与 OpenGL。4.DirectX 与游戏引擎的区别很多朋友在评论中提到不清楚 DirectX 与游戏引擎到底有何区别,在这里我们就来展开讲一下,其实说起来非常简单。首先,DirectX 是微软旗下的一种应用程序接口(API) ,它为各种品牌的硬件提供了一个共同的硬件驱动标准,无论你是什么牌子的硬件,只要你遵循 DirectX 约定的准则,用 DirectX 这套 API 开发出来的游戏就可以在你的硬件上很好的运行。DirectX,我们可以理解为他为硬件驱动。而 Direct3D,只是 DirectX 之中负责3D 图形渲染的一个组件而已。游戏引擎是为了实

9、现一款游戏雏形而编写的一系列可重用的代码,很多游戏引擎的渲染部分实现了对 Direct3D 的封装。我们可以理解游戏引擎为一系列的软件代码,而我们利用游戏引擎中已经现存的代码,开发起游戏来就能事半功倍。所以,综合一下。DirectX 可以理解为硬件的驱动,它为各种品牌的硬件提供了一个共同的硬件驱动标准。游戏引擎,是一系列构成一款游戏的可重用的代码,是用于控制所有游戏功能的主程序,游戏引擎的前身可为一款完整的游戏作品。5.人气开源游戏引擎介绍想事半功倍地开发出属于自己的游戏,在选择游戏引擎上是必须要下足功夫的。多半的游戏引擎都开源且免费授权的,也就是说,如果我们采用某款开源游戏引擎开发出了自己的

10、游戏,无需任何费用,只要在我们的游戏作品中表示,使用了什么引擎来进行游戏开发的就可以了。也就是我们经常在很多游戏片头会看到的 logo。Power by XXX,比如 Power by Ogre。下面我们就来介绍几款目前比较火热的开源游戏引擎,我们用他们进行游戏开发是完全免费的:.Irrlicht EngineIrrlicht Engine(鬼火引擎)始于2003年,次年即被评为最佳开源游戏引擎。它具有高性能的实时3D 引擎,用 C+编写,也可用于.Net 语言。拓展语言绑定包含 java,perl,ruby,python.跨平台支持,使用 D3D,OpenGL 以及自带 API. Irrli

11、cht Engine 可以在移动平台 Android 以及 iOS 上使用。值得一提的是,鬼火引擎有专门的 Andorid 版。其功能特点可以与商业3D 引擎相比。优点是容易掌握,好学。新手入门建议学习 Irrlicht。.OgreOGRE(面向对象的图形渲染引擎):OGRE 是用 C+编写的,以现场为导向,灵活的三维引擎,它主要用于那些利用硬件加速的3D 图形应用程序。它的类库提取了所有基础系统库的细节,如 Direct3D 和 OpenGL ,并提供了一个基于世界对象和其他直观类的界面。Ogre 支持跨平台,也就是说, Ogre 理论上可以在 Android 以及 iOS 等移动平台上使用

12、,不过需要进行相关的移植。Ogre 人如其名,完全采用面向对象的思想来进行设计,整体结构显得非常优雅,宛如一件艺术品。在开源游戏引擎中,Ogre 有着最华丽的渲染质量,可以和大多数3D 商业引擎的渲染效果一较高下。浅墨非常喜欢这款开源引擎,只可惜它仅仅是图形引擎,而不是功能全面完整的游戏引擎。值得一提的是, 目前非常具人气的 ARPG 游戏火炬之光系列就是采用的 Ogre 引擎。这里我们贴一些2012年9 月20日刚上市的火炬之光2的游戏美图:好了,看完绚丽的游戏截图,下面我们继续来学习。相信总有一天,我们也可以亲手写出这样优秀的游戏作品出来。.Delta3DDelta3D:Delta3D 是

13、一个功能齐全的游戏引擎,可用于游戏,模拟或其他图形应用。其模块化设计集成了其他的开源项目,如开放场景图 , 开放动力学引擎 , 人物动画库和OpenAL 。Delta3D 把这些开源项目集成到一个易于使用的应用程序编程接口中。.NeoEngineNeoEngine:NeoEngine 是一个全功能的用 C+编写的开源3D 三维游戏引擎。该引擎是多平台的,包括 OpenGL和 DirectX 渲染功能,支持 Windows ,Linux 和 Mac OS X 系统,它提供了场景管理,顶点和像素着色,骨骼动画和物理,脚本以及一个完全集成的工具链。.BulletBullet:Bullet 是三维游戏

14、多重物理库,提供最先进的碰撞检测,柔软身体和刚体动力学。这个游戏引擎被许多 AAA级的游戏公司用在 PS3 ,Xbox 360 ,任天堂的 Wii、以及 PC 上 。这个库可以免费用于商业用途。.Power RenderPower Render:Power Render 是一个为游戏和3D 图形准备的软件开发工具包。它为开发者提供了一个 API,为美工准备了一些工具,这些工具可以实时预览3ds Max、Maya 和 Lightwave 的模型。新版本还可以预览高动态范围成像并支持 OpenEXR 文件格式。下载 Power Render 6 (35.1MB exe) 。 6.一些思考很多朋友也

15、会想到,既然都有了现成的游戏引擎为我们封装好各类 DirectX 和 OpenGL 的库函数,甚至做出了各类可视化的设计工具,让我们无需了解调用的细节就可以用这些工具来制作出自己的游戏,那我们是不是就不用去学习图形 API,也就是不用去学习 Direct3D(或者 OpenGL)了?一千个人人眼中有一千个哈姆雷特。如果你是本着快速开发一款游戏就完事交差的心态,知其然不知其所以然,DirectX 其实并不用去学习,直接去学习一款好的游戏引擎的 SDK 就可以了。如果你是本着学习求知的心态,想要把游戏开发的各方面知识和细节做到心中有数,甚至以后想自己写一款游戏引擎,DirectX(或者 OpenG

16、L)是必须要学的。学完 DirectX(或者 OpenGL)之后,再来接触一款游戏引擎,接触它的源码,我们就有资本看懂这些源码的实现细节,就可以很容易地把这款游戏引擎使用 DirectX(或者 OpenGL)进行渲染的细节脉络看得清清楚楚。经常我们还涉及到了各种不同版本硬件渲染的支持问题,比如 DirectX 8与DirectX9,这时候就会考验我们对图像 API 的掌握情况。 同样,掌握了 DirectX(或者 OpenGL)更利于我们对渲染的优化。7.市面上各类游戏引擎的列举最后,下面我们列举出市面上存在的游戏引擎,点击各个引擎的名字就可以跳到相应的引擎官网地址了。需要指出的是,这里的引擎有的只是图形引擎,有的只是物理引擎,也就是说并不都像那些完善的商业引擎

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号