本系列文章由zhmxy555(毛星云)编写,转载请注明出处。
文章链接: http://blog.csdn.net/zhmxy555/article/details/8250057
作者:毛星云(浅墨) 邮箱: happylifemxy@163.com
------------------------------------------------------------------------------------------------------------------------------
浅墨历时一年为游戏编程爱好者锻造的著作:《逐梦旅程:Windows游戏编程之从零开始》
如果你喜欢浅墨写的【Visual C++】游戏开发系列博客文章,那么你一定会爱上这本书。
这是浅墨专门为热爱游戏编程的朋友们写的入门级游戏编程宝典。![]()
------------------------------------------------------------------------------------------------------------------------------
看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们《Visual C++游戏开发》专栏的游戏引擎导论,也希望能通过这篇文章,能让大家有所启发,对游戏引擎,对渲染流水线的概念有更深刻的认识。
文章首先分析了学习游戏引擎的必要性,然后介绍了游戏引擎的概念和相关知识,接着介绍了几款最具人气的开源游戏引擎,然后对市面上存在的所有游戏引擎进行了列举,并为所有列出的游戏引擎都给出了官方网站的链接。文章末尾回归了我们Direct3D的主题,为后续内容的讲解进行了铺垫。
一、学完DirectX,我们该干什么?
浅墨觉得,历代DirectX龙书的作者Frank Luna在龙书中忽视了非常重要的一方面内容的讲解,那就是就是学完了DirectX我们接着该做什么。
这大概是很多怀揣游戏开发梦想的热血青年们曾经思考过的问题。
浅墨也曾经在这问题上迷茫过,也因为没人指明前路而走了不少弯路。
不过后来在黑暗中不断地摸索,将荆棘变成坦途之后,终于摸索出了一条正确的道路。
也就是看完龙书《DIRECTX.9.0.3D游戏开发编程基础》之后,我们需要如何学习,来把学到的知识立体化,最终转化为开发游戏的实际能力。首先我们需要再看一本书,《Real-Time Rendering》,也就是(RTR)实时渲染技术,目前出到第三版了。(这本书并没有中文版,大家如果要走游戏开发的道路,读完龙书之后,剩下基本上都要靠读英文书了。)
学完龙书,也可以选择自己喜欢的游戏引擎来接触并掌握了。看完龙书后浅墨首推学习Irrlicht,然后进阶推荐Ogre。两者都是开源游戏引擎,都有着源代码提供下载学习,而且网上对这两种引擎的研究热情很高,资料丰富,引擎代码字里行间都是哲思,掌握其中的代码并纳为己用,自己写出像样的游戏demo来是不成任何问题的。
下面,就开始看看我们这篇文章的主角——游戏引擎
二、站在巨人的肩膀上:游戏引擎导论
1.游戏引擎的起源和意义
上帝说,要有光,于是,就有了光。
曾经有一段时期,游戏开发者关心的只是如何尽量多地开发出新的游戏并把它们推销给玩家。尽管那时的游戏大多简单粗糙,但每款游戏的平均开发周期也要达到8到10个月以上,这一方面是由于技术的原因,另一方面则是因为几乎每款游戏都要从头编写代码,造成了大量的重复劳动。渐渐地,一些有经验的开发者摸索出了一条偷懒的方法,他们借用上一款类似题材的游戏中的部分代码作为新游戏的基本框架,以节省开发时间和开发费用。根据马克思的生产力学说,单位产品的成本因生产力水平的提高而降低,自动化程度较高的手工业者最终将把那些生产力低下的手工业者淘汰出局,引擎的概念就是在这种机器化作业的背景下诞生的。
简而言之,因为想用更短的周期开发游戏,省掉重复编写代码的功夫,于是便有了游戏引擎。
首款的3D引擎诞生于1992年,3D Realms公司/Apogee公司发布了一款只有2兆多的小游戏——《德军司令部》(Wolfenstein 3D)。之后这款游戏引申为Wolfenstein 3D游戏引擎,这也是史上首款3D引擎,它的作者是大名鼎鼎的约翰·卡马克,这位id Software公司的首席程序师正是凭借这款Wolfenstein 3D引擎在游戏圈里站稳了脚跟。
在此之后,游戏业界都受此启发,各式各样的游戏引擎层出不穷。而各种游戏引擎的出现,使得游戏开发并不需要从零开始,从而使得开发的周期大大缩短,也使开发成本大大降低。
游戏引擎崛起,游戏产业的黎明,就此降临。
2.什么是游戏引擎
游戏引擎好比赛车的引擎,是用于控制所有游戏功能的主程序,从计算碰撞、物理加速系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样一段起控制作用的代码。
这里我们丢出一个概念。游戏引擎是指一些已编译好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出一款游戏作品,而不是从零开始写起,这样大大缩短了开发的效率,开发的时间和开发的成本。
可以这样说,游戏引擎让我们站在巨人的肩膀上进行游戏的开发,而不是从零开始。
3.一款完善的游戏引擎的构成
我们很大程度上将游戏引擎都理解为渲染引擎,分为2D图形引擎和3D图形引擎,其实游戏引擎并不单单指渲染引擎。渲染引擎只是一款完善的游戏引擎最重要的组成部分,而一款完善的引擎,还包含物理引擎,碰撞检测引擎,音效引擎,脚本引擎,电脑动画引擎,人工智能引擎,网络引擎,场景管理引擎以及IO管理引擎等等。
其中,3D引擎的渲染系统通常建立在一套或者多套高级的图形API之上,比如我们熟知的Direct3D与OpenGL。
4.DirectX与游戏引擎的区别
很多朋友在评论中提到不清楚DirectX与游戏引擎到底有何区别,在这里我们就来展开讲一下,其实说起来非常简单。
首先,DirectX是微软旗下的一种应用程序接口(API),它为各种品牌的硬件提供了一个共同的硬件驱动标准,无论你是什么牌子的硬件,只要你遵循DirectX约定的准则,用DirectX这套API开发出来的游戏就可以在你的硬件上很好的运行。DirectX,我们可以理解为他为硬件驱动。而Direct3D,只是DirectX之中负责3D图形渲染的一个组件而已。
游戏引擎是为了实现一款游戏雏形而编写的一系列可重用的代码,很多游戏引擎的渲染部分实现了对Direct3D的封装。我们可以理解游戏引擎为一系列的软件代码,而我们利用游戏引擎中已经现存的代码,开发起游戏来就能事半功倍。
所以,综合一下。
DirectX可以理解为硬件的驱动,它为各种品牌的硬件提供了一个共同的硬件驱动标准。
游戏引擎,是一系列构成一款游戏的可重用的代码,是用于控制所有游戏功能的主程序,游戏引擎的前身可为一款完整的游戏作品。
5.人气开源游戏引擎介绍
想事半功倍地开发出属于自己的游戏,在选择游戏引擎上是必须要下足功夫的。
多半的游戏引擎都开源且免费授权的,也就是说,如果我们采用某款开源游戏引擎开发出了自己的游戏,无需任何费用,只要在我们的游戏作品中表示,使用了什么引擎来进行游戏开发的就可以了。也就是我们经常在很多游戏片头会看到的logo。Power by XXX,比如Power by Ogre。下面我们就来介绍几款目前比较火热的开源游戏引擎,我们用他们进行游戏开发是完全免费的:
Ⅰ.Irrlicht Engine
Irrlicht Engine(鬼火引擎)始于2003年,次年即被评为最佳开源游戏引擎。它具有高性能的实时3D引擎,用C++编写,也可用于.Net语言。拓展语言绑定包含java,perl,ruby,python.跨平台支持,使用D3D,OpenGL以及自带API. Irrlicht Engine可以在移动平台Android以及iOS上使用。值得一提的是,鬼火引擎有专门的Andorid版。
其功能特点可以与商业3D引擎相比。优点是容易掌握,好学。新手入门建议学习Irrlicht。
Ⅱ.Ogre
OGRE(面向对象的图形渲染引擎):OGRE是用C++编写的,以现场为导向,灵活的三维引擎,它主要用于那些利用硬件加速的3D图形应用程序。它的类库提取了所有基础系统库的细节,如Direct3D和OpenGL ,并提供了一个基于世界对象和其他直观类的界面。Ogre支持跨平台,也就是说,Ogre理论上可以在Android以及iOS等移动平台上使用,不过需要进行相关的移植。
Ogre人如其名,完全采用面向对象的思想来进行设计,整体结构显得非常优雅,宛如一件艺术品。在开源游戏引擎中,Ogre有着最华丽的渲染质量,可以和大多数3D商业引擎的渲染效果一较高下。浅墨非常喜欢这款开源引擎,只可惜它仅仅是图形引擎,而不是功能全面完整的游戏引擎。值得一提的是, 目前非常具人气的ARPG游戏《火炬之光》系列就是采用的Ogre引擎。
这里我们贴一些2012年9月20日刚上市的《火炬之光2》的游戏美图:
好了,看完绚丽的游戏截图,下面我们继续来学习。相信总有一天,我们也可以亲手写出这样优秀的游戏作品出来。
Ⅲ.Delta3D
Delta3D:Delta3D是一个功能齐全的游戏引擎,可用于游戏,模拟或其他图形应用。其模块化设计集成了其他的开源项目,如‘开放场景图’,‘开放动力学引擎’,‘人物动画库’和‘OpenAL’ 。Delta3D把这些开源项目集成到一个易于使用的应用程序编程接口中。
Ⅳ.NeoEngine
NeoEngine:NeoEngine是一个全功能的用C++编写的开源3D三维游戏引擎。该引擎是多平台的,包括OpenGL和DirectX渲染功能,支持Windows ,Linux和Mac OS X系统,它提供了场景管理,顶点和像素着色,骨骼动画和物理,脚本以及一个完全集成的工具链。
Ⅴ.Bullet
Bu
【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上 游戏引擎导论
最新推荐文章于 2024-05-15 10:08:50 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)