3D游戏开发框架指南前言

2006年,我们翻译了《PRO OGRE 3D编程》一书,创建了OGRE 3D引擎中文社区,并将这本书的电子版提供给国内的朋友下载学习。几年后,OGRE 3D图形引擎已经在国内遍地开花,包括九城、九游、千兆、搜狐畅游、麒麟游戏、域等游戏公司都在不同程度的使用这个图形引擎,越来越多的朋友开始关注它。经电子工业出版社批准,作者有幸写了一本关于Ogre3D的使用和发展的书。

这本书的起源

自从2006年我们建立了OGRE3D的中文社区,得到了热心朋友的帮助,翻译了大量OGRE 3D的相关文档,包括OGRE 3D手册、基础教程、中级教程以及一系列相关文章,以至于当我今天准备从头开始写一本关于OGRE 3D的书时,发现大部分知识已经可以在网上找到,再创作一本专门介绍OGRE 3D使用的书几乎是不可能的。

我绝对不敢冒险东拼西凑提供一本“学术腐败”的文集给大家看。与其在网上重复已有的知识,不如另辟蹊径,从代码入手,讲解学习完OGRE 3D引擎后,如何通过游戏开发框架进一步完成完整的游戏。

本书不会告诉读者图形引擎的基础知识,而是希望告诉读者在了解一个图形引擎之后,完成一个完整的游戏还缺少哪些工具。这本书是针对想了解更多关于如何开发一个完整的基于食人魔3D的游戏的朋友。

我们在光盘上提供了《PRO OGRE 3D编程》中文版的下载地址,里面详细介绍了OGRE 3D的相关知识和细节。希望读者可以结合阅读这两本书。在这里我需要感谢我的编辑袁女士,因为有了她的肯定,我才有信心完成这本书。

基于以上定位,本书应该是第二本学习OGRE 3D游戏开发的书,帮助读者从一个引擎研究者成为一个实用的游戏开发者。读者可能没有接触过OGRE 3D图形引擎,但他们在书店里偶然看到了这本书,并正在决定是否加入OGRE 3D开发团队。本书第1章将帮助读者解惑,从宏观角度描述OGRE 3D图形引擎的发展历史和相关资源。我们尽量做到言简意赅,让读者站在书店的书架旁阅读,决定是否有必要学习OGRE 3D,是否为这本书付费。如果你找到了任何你感兴趣的游戏开发工具,那么这本书一定会在某一天带给你“雪中送碳”的效果。

这本书的阅读指南

这本书最大的特点就是依靠代码来推进进度。从第2章开始几乎每门课程都有相关的代码工程供读者参考,可以让读者更直观的理解本书介绍的内容。

对上网行为的研究表明,如果你坚持21天,你很可能会改变或形成一种新的习惯。虽然我不是这方面的专家,但我还是按照“21天掌握XXX”的惯例,把这一章的课程分成三周。每周讲解一个完整的项目,至少让读者方便安排阅读时间。

每周1日(周日)讲解本周课程的具体内容和背景知识。在接下来周一到周六的课程中,一个完整的项目会被分解成六个部分,依次逐步完善和讲解。

OGRE 3D将自己定位为纯图形引擎。优秀的独立性带来的副作用是,如果需要完成一个完整的游戏,食人魔3D是不够的。还需要像音频引擎、网络引擎、输入引擎这样的功能库,以及一个高效、稳定、强大的框架。不管读者有没有玩过完整的游戏,都应该能感受到一个好的框架对于一个游戏来说有多重要。本书将重点介绍这方面的知识。在第二章第1周的课程中,我们介绍了OGRE 3D演示程序中读者使用的框架,并完成了一个“打老鼠”的游戏。虽然这个框架还不足以强大到完成一个商业游戏,但至少可以帮助读者理解框架在游戏开发中的重要作用。

除了大量的翻译文档,OGRE 3D中文社区还在做一件很有意义的工作,那就是开发和完善一个基于OGRE 3D的商业游戏开发框架Orz(开放资源区)。在它宣布开源的一年时间里,我们得到了很多业界朋友(甚至海峡两岸的朋友)的肯定和支持。

课程第二周,我们用Orz框架代替OGRE 3D demo框架实现了经典游戏《太空入侵者》。在本周的课程中,我们用快速开发的方法来完成游戏原型,并没有过多使用Orz框架中的高级特性。这样可以让读者在不掌握复杂背景知识的情况下,理解如何通过框架提高游戏的开发速度和质量。在实际的商业应用中,Orz确实带来了工作效率的大幅提升。

如果读者接触到其他公司的一些内部开发框架,会发现Orz并不比这些商业产品差,甚至在很多方面比其他产品更好。

Orz框架有自己的野心。它不仅是帮助读者提高开发效率的工具,也为框架设计中“理想的分布式开发”的游戏设计提供了方法论基础。我们使用消息系统、插件系统、ID管理器等强大的工具,尽可能降低开发者之间的沟通成本,实现开发者可以用很少的协调成本合作开发庞大游戏的基础。

基于这个理念,OGRE 3D中文社区曾经组织了一些开发者自己完成代码,实现了一个类似搏击俱乐部的游戏,没有相互交流。因此,在第三周的课程中,我们以这个真实的活动为背景,讲解如何使用“理想的分布式开发”模式来完成一个游戏。这里我们用Orz的大量高级特性和工具,从更高的层面来审视Orz游戏开发框架带来的“甜点”。

不知道这些“甜点”有没有吸引读者的胃口。如果没有,我们还在接下来的第3章准备了“大餐”,详细介绍了Orz框架的使用细节。

Orz在框架的设计上尽可能遵循MVC模式,我们认为一个好的设计等于一个简单的框架和丰富的工具。在设计框架的过程中,我们尽量将相关章节中的一些游戏开发模块解释为独立的工具,读者可以选择性地使用这些工具来简化游戏开发过程。如果读者打算从零开始构造一个游戏,并准备采用完整的Orz框架,这里也有一个简单框架的详细介绍。当然,和之前的课程一样,我们不仅提供了Orz框架的所有代码,还提供了每门课程对应的例程。

我相信很多在中国长大的游戏开发者都希望实现一个在线的MMO游戏,而不是单机的“俄砖”。

感谢熊先生的无私奉献,在Orz确实有这么一个独立的游戏开发网库OrzAsio。OrzAsio是一个高效、可扩展的跨平台异步网络库,旨在为用户提供高效、可靠、灵活的网络程序开发组件,方便用户构建高效、灵活的网络程序。OrzAsio的一个重要目标是为大型多人在线游戏开发网络模块,满足高吞吐量、高负载的在线游戏服务器需求。OrzAsio的网络基础基于boost::asio,这是一个高效的、可扩展的、跨平台的网络库。如果你关心我们的社区,读者会知道熊先生正在完成一个更前卫的基于CORBA规范的网络游戏网络开发架构。

OrzAsio network library及其依赖工具Toolkit_Plus的文档在本书附带的CD中提供。

我希望读者会喜欢我们精心准备的晚餐。如果你能愉快地享受它,那将是我们的荣幸。但是,制作一个完整的游戏并不是一本书就能完全解释清楚的,所以我们在这本书的最后提供了一张创建天堂的地图。在本书的附录中,我们提供了Boost库、设计模式和OGRE 3D的简要概述。

表示感谢/感激

好莱坞奥斯卡的获奖者会在最重要的时候说些感谢的话。我们想说的如下。

谢谢我现在和以前的老板和同事对我的支持和鼓励。当然,请相信我没有在办公时间写作,没有耽误工作进度。

感谢OGRE 3D社区提供这么好的软件。虽然该引擎的核心开发人员大多不懂中文,但在这本书里我还是要衷心感谢他们。

感谢为OGRE 3D引擎在中国的普及付出努力的人。Mega的游戏开发团队,盛崇山老师,严琛和谢建华先生让我分享你们的荣誉。

感谢熊先生捐赠网络库及相应文档,感谢Mega游戏开发团队任晓宇先生为OGRE用户指南部分章节提供授权,感谢的“附录C”,感谢兄弟们发现错别字。

感谢家人对我的关心,感谢父母对我任性的包容。多亏了女朋友的支持,她接受了我每天在外地写稿,而不是给他们打电话。

如果我没有想到我的家人会看这本书,我会第一个感谢你们——现在在这里看过的读者们。如果你买了这本书,你已经在经济上帮助了我;如果你让身边的朋友看了这本书,你在梦里帮了我。

这个梦是:

让每个看电视的人都去开发游戏。