OGRE 3D游戏开发框架指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 引言

1.OGRE 3D的起源

在20世纪八九十年代,世界上似乎还只有id公司的约翰卡马克开发的3D游戏引擎。幸好他信奉自由,把代码放在自己的网站上公开,才让很多人了解到相关的技术细节和实现。

当时在英国有一个叫做“Steve Streeting”的软件工程师,他在互联网上称自己的昵称为“Sinbad”(辛巴达)。所以我们也可以叫他为“Steve‘sinbad’Streeting”。他看了卡马克写的代码,认真地想了一下。从一个做了10年软件工程的技术人员的角度,他认为还有很多可以改进的地方,特别是在软件结构和框架上。当然这不是说卡马克写的有什么问题,只不过他和当时一些正在开发的引擎往往是为了一些游戏而制作的,在设计中过分注重相应的效率和效果,而忽视了通用性和扩展性。这个发现让Steve Streeting觉得自己有能力在另外一条道路上让3D引擎走得更远。

Steve Streeting从来都不是一个游戏开发人员,直到今天为止也没有开发过任何完整的游戏。所以他不用为明天的进度加班,也不需要为某个发行商需要的特性妥协设计。他可以闭上眼睛,幻想10年后游戏是如何开发的,然后写一个“未来”的三维引擎。今天看来,有时游戏引擎的设计会和恋爱一样,局外的人可能会有更准确的见解。

Steve Streeting不是一个重复制造轮子的人,这是任何开源软件领袖的信条,所以他制定了如下有别于其他图形引擎的原则。

(1)相对卡马克的“先商业后开源”的半吊子发布方法,Steve Streeting决定从第1天就用最开放的GPL发布授权(几年后的版本改成亲和商业的LGPL及MIT授权)。

(2)卡马克太喜欢自己实现的BSP场景管理了,所以它的引擎很难更改成其他场景图管理器。Steve Streeting决定把这块作为一个外部的插件来用,让更多的人可以提供更多的场景管理器。为了实现这个想法,Steve Streeting把场景管理器的节点和场景的实体采用组合,而不是继承的关系,后来成为这款图形引擎的重要特点之一。

(3)Steve Streeting之前也写过一款基于微软D3D的三维引擎,不过这次他决定跨平台。所以不仅实现了跨OpenGL和D3D两个底层3D API,也实现了对Windows、Linux和Max OS这3个操作系统的支持。

(4)Steve Streeting认为未来一定有人可以进行更漂亮的扩展,所以他设计了强大的插件系统。把所有能划分为扩展插件的系统全部分离到核心之外,除了操作系统和渲染API之外,还包括外部纹理源、粒子系统及场景管理器等,他幻想着未来有无数个免费打工仔为其引擎添砖加瓦。

(5)Steve Streeting不仅熟悉三维引擎,也了解开源工程师的想法。他们不喜欢被别人强迫什么,所以他决定把软件制作成一款“图形引擎”,而不是“游戏引擎”。他有信心在未来的10年里创建一个开源游戏开发的生态系统,任何用户可以选择搭配不同的图形引擎和其他音频、物理或者输入等其他组件,而不是完全由自己一个人开发,然后强迫用户吃这款“套餐”。如同《教堂与市集》书里面所说,其实“懒惰”是一个开源领袖很好的优点。

(6)Steve Streeting曾经写过一个叫做“DIMClass”的面向对象的Direct3D库,可能大部分人不会记得这个名字。所以他吸取了教训,决定为新的软件起一个好记并且有趣的名称。不论是PHP还是GNU,在开源领域中的软件都是琅琅上口的缩写。那么我们就叫做OGRE吧,不仅仅是面向对象图形引擎(Object-Oriented Graphics Rendering Engine)的缩写,还有食人魔(OGRE)的意思。这没什么不好,不是还有一款跨平台的图像处理库叫做“恶魔”(DeviL)吗,相对黑色或者红色的恶魔而言,食人魔至少是绿色的,显得更环保一些。

这一年是公元2001年,也就是OGRE 3D图形引擎诞生的那一年。在这一年里,另外一头食人魔红遍了世界——它叫做“史瑞克”。绿色的怪物和绿色的公主颠覆了大家对童话的认识,原来就算开始外表很丑陋,只要心灵正直和坚强,总会走向幸福。OGRE 3D图形引擎坚守“好的结构重于更多特性”的原则,任何进入OGRE的图形特性都需要严格的试验和设计。虽然在初期OGRE因此发展缓慢,但随着开发人员的不断增加应验了“优良的结构能带来更多的特性,而反之则不能”。OGRE在漫长的发展中不断完善,朝着Steve Streeting希望的方向前进。在2006年《怪物史瑞克3》电影中,史瑞克对着公主大声说:“I’m just a Ogre!”(我只不过是一头食人魔)时,OGRE图形引擎已经发展到1.4版本,并被成功地运用到大量的商业游戏中。这一年在中国,搜狐畅游发布了基于OGRE图形引擎的《天龙八部》网络游戏,著名的http://bbs.gameres.com论坛上面也开设了OGRE专区,OGRE 3D中文网开始翻译大量的OGRE文档和教程。

开源软件往往和商业软件不同,Steve Streeting深刻地知道OGRE需要长时间的完善和改进,并需要众多开发人员的参与。这是OGRE设计中有别于大部分商业引擎的初衷。在2008年OGRE发布了1.6版本,我们很高兴看到这样一款“不要钱”的游戏开发工具可以一直陪伴我们成长。希望这样的软件可以继续健康发展下去,并带给我们更好的体验。今天,让我们如同史瑞克自豪地说:“I’m just an Ogre!”