新书预告《OGRE 3D 游戏开发框架指南》

新闻图片: 
新闻日期: 
Wed, 2010/05/05

        当我在2001年开始OGRE项目的时候,我的初衷只是想做一些可以帮助开发者(当然首先也是为了我自己)尽可能减少实时3D的开发难度而同时又增加开发灵活性的事情。这在那个时候也确实不是什么宏伟的计划,而仅仅是一个出于个人角度的原本应该做的事情,而最终却被全世界范围内大量开发者所支持,这着实令我惊讶。我以前从没有想过OGRE能在当今如此流行,更没有想到我有幸能被邀请为本书做一个简短的序言。即使我无从阅读一本用中文撰写的书籍,我依然非常欣慰的看到,在地球的另一侧会有这样一群人满怀激情的加入到OGRE事业中,并且投入大量时间来完成此书,更重要的是,有这样一群人,比如你,出于对OGRE的热衷,来阅读此书。

 

        因此我要感谢本书作者为此而做出的不懈努力,并且希望你能从本书中收获对OGRE更多的满意,就像我设计之初所希望的那样。哪天我们真应该见个面,或许你还可以教我一些有关3D的中文词汇。

 

———Steve Streeting OGRE创始人和ogre3d.org项目主管。

http://www.china-pub.com/196735#ml  互动出版社

http://book.douban.com/subject/4844140/   豆瓣

Ogre3D的起源

 

    在上个世纪不是最后的那几年里,世界上似乎还只有id公司的约翰卡马克开发的3D游戏引擎。

幸好他信奉自由,把代码放在自己的网站上公开。这才让很多人了解到相关的技术细节和实现。
 
  
    当时在英国有一个叫做 Steve Streeting的软件工程师,他在互联网上称自己的昵称为 sinbad(辛巴达)。所以我们也可以叫做他为 Steve ’sinbad’ Streeting。他看了卡马克写的代码,认真的想了一下:从一个做了十年软件工程工人的角度来说,认为还有很多可以改进的地方,特别是在软件结构和框架上。当然这不是说卡马克写的有什么问题,只不过卡马克和当时一些正在开发的引擎往往是为了一些游戏而制作,在设计中过分注重相应的效率和效果,而忽视了通用性和扩展性。而这个发现让 Steve Streeting觉得自己有能力在另外一条道路上让3D引擎走得更远。
 
    Steve Streeting从来都不是一个游戏开发者,就算到今天为止,他也没开发过任何完整的游戏。所以他不用为明天的进度加班,也不需要为某个发行商需要的特性妥协设计。他可以闭上眼睛,幻想一下十年后游戏是如何开发的,然后写一个“未来”的三维引擎。今天看来,有时候游戏引擎的设计会和恋爱一样,局外的人可能会有更准确的见解。
 
    Steve Streeting不是一个重复制造轮子的人,这是任何开源软件领袖的信条。所以他制定了几个有别于其他图形引擎的原则。
  1. 相对卡马克的先商业后开源的半吊子发布方法,Steve Streeting决定从第一天就是用最开放的GPL发布授权(几年后的版本改成亲和商业的LGPL以及MIT授权)。
  2. 卡马克太喜欢自己实现的BSP场景管理了,所以它的引擎很难更改成其他的场景图管理器。Steve Streeting决定把这块作为一个外部的插件来用,让更多的人可以提供更多的场景管理器。为了实现这个想法,Steve Streeting把场景管理器的节点和场景的实体采用组合而不是继承的关系,后来这成为了这款图形引擎的重要特点所之一。
  3. Steve Streeting之前也写过一款基于微软D3D的三维引擎,不过这次他决定跨平台了,所以它不仅实现了跨OpenGL和D3D两个底层3D API。也实现了对Windows、Linux、Max OS三个操作系统的支持。
  4. 这样他仍然不满足,Steve Streeting觉得未来一定有人可以进行更漂亮地扩展,所以他设计了强大的插件系统。把所有能划分为扩展插件的系统全部分离到核心之外,除了操作系统和渲染API之外还包括外部纹理源、粒子系统、场景管理器等。他幻想着未来有无数个免费打工仔为他的引擎添砖加瓦。
  5. Steve Streeting不仅熟悉三维引擎,也了解开源工程师的想法。他们不喜欢被别人强迫什么,所以他决定把软件制作成一款“图形引擎”而不是“游戏引擎”,他有信心在未来的十年里创建一个开源游戏开发的生态系统,任何用户可以选择搭配不同的图形引擎和其他的音频、物理或者输入什么的其他组件,而不是都自己一个人开发,然后强迫用户吃这款“套餐”!就如同《教堂与市集》那本书里面所说,其实“懒惰”是一个开源领袖很好的优点。
  6. Steve Streeting曾经写过一个叫做DIMClass的面向对象的Direct3D库,可能大部分人不会记得这个名字。所以他吸取了教训,决定给新的软件起一个好记并且有趣的名称,不论是PHP还是GNU,开源届都是琅琅上口的缩写。那么我们就叫做OGRE吧,不仅仅是面向对象图形引擎(Object-Oriented Graphics Rendering Engine)的缩写,还有食人魔(Ogre)的意思。这没什么不好,不是还有一款跨平台的图像处理库叫做“恶魔(DevIL)”么。相对黑色或者红色的恶魔而言至少食人魔是绿色的,显得更环保一些。
 
    这一年是公元2001年,也就是Ogre图形引擎诞生的那一年。在相同的一年里,另外一头食人魔红遍了世界——它叫做史瑞克。绿色的怪物和绿色的公主颠覆了大家对童话的认识,原来就算开始外表很丑陋,只要心灵上面正直和坚强,总会走向幸福。Ogre图形引擎坚守“好的结构重于更多特性”的原则,任何进入Ogre的图形特性都需要严格的试验和设计。虽然在初期Ogre因此发展缓慢,但随着开发人员的不断增加应验了“优良的结构能带来更多的特性,而反之则不能!”。Ogre在漫长的发展中不断完善,朝着 Steve Streeting希望的方向前进。在2006年《怪物史瑞克3》电影中,史瑞克对着公主大声说:“I'm just a Ogre!(我只不过是一头食人魔)”的时候。Ogre图形引擎已经发展到1.4版本,并被成功地运用到大量的商业游戏中。这一年在中国,搜狐畅游发布了基于Ogre图形引擎的《天龙八部》网络游戏,著名的http://bbs.gameres.com论坛上面也开设了Ogre专区,Ogre3D中文网开始翻译大量的Ogre文档和教程。
 
    开源软件往往和商业软件不同, Steve Streeting深刻的知道Ogre需要长时间的完善以及改进,并需要众多开发人员的参与。这是Ogre设计中有别于大部分商业引擎的初衷。在2008年Ogre发布了1.6版本,今年2009也就是Ogre图形引擎诞生的第八个年头,我们很高兴看到这样一款“不要钱”的游戏开发工具可以一直陪伴我们成长。希望这样的软件可以继续健康发展下去,并带给我们更好的体验。今天,让我们如同史瑞克自豪地说:“I'm just a Ogre!”
 

 希望做你书架上的第二本Ogre3D读物。

 

你可能感兴趣的:(游戏,框架,图形,引擎,跨平台,Direct3D)