标题：3D游戏开发框架指南
图书信息
书名：OGRE 3D游戏开发框架指南  
作者：邸锐  著
出版社：电子工业出版社 
ISBN：978-7-121-10691-0 
出版日期：2010年5月 
定价：42.00元（含CD光盘1张）
开本：16开 
页码：208页
宣传语
OGRE创始人Steve Streeting作序推荐
免费打工仔呕心力作
国内第一本OGRE编程经典
内 容 简 介
本书主要用来帮助读者从一个引擎研究者成为一个游戏开发人员，本书的最大特点是依靠代码来推进进度，以三周21天的时间顺序来编排主体内容，帮助读者熟悉OGRE 3D演示程序所使用的框架，并完成一款《打地鼠》游戏，采用Orz框架来代替OGRE 3D演示程序框架实现《太空侵略者》这款经典游戏，以及Orz框架的使用细节。每一个课程都有相关的代码提供给读者参考，读者可以更直观地了解学习本书内容。 
本书适合有一定的OGRE 3D基础知识、希望进一步学习游戏开发的游戏爱好者，以及需要一款稳定的开发框架作为开发基础的个人和小型游戏开发公司。
推荐序
当我在2001年开始做OGRE项目的时候，我的初衷只是想做一些可以帮助开发者（当然首先也是为了我自己）尽可能减少实时3D的开发难度而同时又增加开发灵活性的事情。这在那个时候确实不是什么宏伟的计划，而仅仅是出于个人角度的原本应该做的事情，而最终却被全世界范围内大量开发者所支持，这着实令我惊讶。我以前从没有想过OGRE能在当今如此流行，更没有想到我能有幸被邀请为本书做一个简短的序言。即使我无从阅读一本用中文撰写的书籍，我依然非常欣慰地看到，在地球的另一侧会有这样一群人满怀激情地加入到OGRE事业中，并且投入大量时间来完成此书，更重要的是，有这样一群人，比如你，出于对OGRE的热衷，来阅读此书。
因此我要感谢本书作者为此而做出的不懈努力，并且希望你能从本书中收获对OGRE更多的满意，就像我设计之初所希望的那样。哪天我们真应该见个面，或许你还可以教我一些有关3D的中文词汇。
Since I began the Ogre project in 2001, my primary goal was to create something that helped developers (and by that I mean myself first of all!), to do what they wanted to with real-time 3D, with as little difficulty and with as much flexibility as possible. There really wasn't a grand plan at the time, just a personal vision of how I thought things should be done, which as it happens turned out to be very compatible with the visions of a lot of other people around the world too. This was a surprise to me - I never imagined Ogre would become as popular as it is today, and as such I'm very honoured to have been invited to write a small foreword for this book. Even though I won't be able to read it - since I can't read Chinese - it's very pleasing to know that there are people on the other side of the world who care enough about the project I started to invest their own time in writing such a book, and that there are people, like you, who want to read about it. 
So my thanks go to the authors for their efforts, and I hope you all get as much satisfaction out of using Ogre as I did creating it. Should we meet one day, perhaps you can teach me some 3D-related words in Chinese. 
I hope that sounds ok. 
Good look with the book! 
Best regards Steve
前  言
2006年，我们翻译了“PRO OGRE 3D PROGRAMMING”这本书，创建了OGRE 3D引擎的中文社区，并把这本书的电子版本提供给国内的朋友下载学习。几年之后，OGRE 3D图形引擎在中国已经遍地开花，包括九城、久游、吉比特、搜狐畅游、麒麟游戏，以及网域等游戏公司都在不同程度地使用这款图形引擎，同时也有越来越多的朋友开始关注它。得到电子工业出版社的首肯，笔者有幸能撰写一本关于Ogre3D使用开发的图书。 
本书缘起
从2006年我们建立OGRE 3D中文社区开始，不断地得到热心朋友的帮助，翻译了大量的OGRE 3D相关文档，其中包括《Ogre手册》、《基础教程》、《中级教程》，以及相关的一系列文章，以至于今天笔者准备从头撰写一本OGRE 3D相关知识的书籍时，竟然发现大部分的知识内容已经可以在网络上找到，几乎不可能再原创一本专注于OGRE 3D使用的书籍。 
笔者绝对不敢冒险东拼西凑提供一本“学术腐败”的论文集给大家看，与其重复那些网络上已有的知识，不如另辟蹊径，即从代码入手讲解如何通过游戏开发框架，在学会OGRE 3D引擎之后进一步完成完整的游戏。
这本书不会告诉读者图形引擎的基础，而是希望告诉读者在了解一款图形引擎之后还缺少哪些工具来完成一个完整的游戏。本书定位于希望进一步了解如何以OGRE 3D为基础开发一款完整游戏的朋友们。
我们在光盘中提供了“PRO OGRE 3D PROGRAMMING”中文版本的下载地址，那里详细地介绍了OGRE 3D相关的知识和细节。希望读者可以结合这两本书来阅读。在这里需要感谢我的编辑袁金敏女士，正是因为她的肯定才让笔者有信心来完成这本书。 
基于以上定位，这本书应该是学习OGRE 3D游戏开发的第2本书，帮助读者从一位引擎研究者成为一位可以实战的游戏开发人员。读者可能还没有接触OGRE 3D图形引擎，偶然在书店中看到这本书，正在决定是否加入OGRE 3D的开发人员队伍中来。这本书的第1章将会帮助读者解决疑惑，从一个宏观的角度来描述OGRE 3D图形引擎的发展史及相关资源。我们尽量做到简短和精辟，让读者站在书店的书架旁边就能看完，决定是否有必要学习OGRE 3D，以及是否需要掏钱买这本书。如果发现其中有您感兴趣的游戏开发工具，那么本书一定在某一天会给您的工作带来“雪中送碳”的效用。
本书阅读指南 
这本书的最大特点是依赖代码来推进进度。从第2章开始的几乎每一个课程都有相关的代码工程提供给读者参考，这样做可以让读者更直观地了解本书介绍的内容。 
网上说行为学的研究表明，如果坚持21天，你就很可能改变或养成一个新的习惯。虽然我不是这方面的专家，但是还是按照《21天精通XXX》书籍的惯例把这个章节的课程划分到3个星期中。每周讲解一个完整工程，至少这样做可使读者很方便地安排自己的阅读时间。 
在每个星期的第1天（星期日），我们会讲解一下本周课程的具体内容和背景知识，在接下来的星期一～星期六的课程中会把一个完整的工程分解成为6个部分逐渐完善并依次讲解。 
OGRE 3D把自身定位成一个纯粹的图形引擎，优秀的独立性带来的副作用是如果需要完成一款完整的游戏，OGRE 3D并不足够，还需要类似音频引擎、网络引擎、输入引擎等功能性库，以及一个高效稳定且功能强大的框架。不论读者是否做过完整的游戏，都应该能感觉到一个好的框架对于一款游戏是多么重要。本书将着重介绍这方面的知识，在第2章第1周的课程中，我们介绍读者熟悉的OGRE 3D演示程序所使用的框架，并完成一款《打地鼠》游戏。虽然这个框架不足以强壮到完成一款商业游戏，但是至少可以帮助读者了解框架在游戏开发中的重要作用。 
OGRE 3D中文社区除了有翻译的大量的文档之外，同时在做一件很有意义的工作，就是开发并完善一款商业强度且基于OGRE 3D思想的游戏开发框架Orz（Open Resources Zone）。在其宣布开源的一年的时间里，我们得到了业内很多朋友的肯定和支持（甚至包括海峡对岸的朋友）。 
在第2周的课程中，我们采用Orz框架来代替OGRE 3D演示程序框架实现了《太空侵略者》这款经典游戏。在这周的课程中我们采用快速开发方式来完成游戏原型，没有过多使用Orz框架中的高级特性。这样做可以使读者在不用掌握复杂背景知识的前提下，了解如何通过框架来提高游戏的开发速度和质量。而在实际的商业应用中，Orz确实带来了工作效率的大幅度提升。 
如果读者接触了一些其他公司内部的开发框架，会发现Orz并不比这些商业的产品差，甚至在很多方面强于其他产品。 
Orz框架有自己的野心，它不仅仅是一款帮助读者提高开发效率的工具，还在框架设计上提供了“理想式分布式开发”的游戏设计方法学基础。我们通过强大的消息系统、插件体系及ID管理器等工具，尽可能减少开发人员之间的沟通成本，实现可以让开发人员在很少协调成本的情况下合作开发巨大型游戏的基础。 
基于这个理念，OGRE 3D中文社区曾经组织了一些开发人员各自完成自己的代码，在没有互相沟通的情况下实现了一个《搏击俱乐部》的类游戏。故而，我们在第3周的课程中以这个现实活动作为背景，讲解如何采用“理想的分布式开发”模型来完成一款游戏。在这里我们使用了大量Orz的高级特性和工具，从一个更高的层次来审视Orz游戏开发框架所带来的“甜品”。 
不知道这些“甜品”有没有吸引读者的胃口，如果没有，我们在之后的第3章还准备了“大餐”，详细地介绍了Orz框架的使用细节。 
Orz在框架的设计上尽可能遵循MVC模式，我们相信一个良好的设计等于简单的框架加上丰富的工具。在框架的设计过程中，我们尽量把一些游戏开发的模块作为独立的工具在相关章节中来依次讲解，读者可以有选择地采用这些工具来简化游戏开发过程。如果读者打算从头构造一款游戏，并准备采用完整的Orz框架，这里也有对其中简单框架的详细介绍。当然和之前的课程一样，我们不仅提供了所有Orz框架的代码，还提供了与每一课程对应的例程。 
我相信，在中国土壤中成长出来的游戏开发人员，很多都希望实现一个网络MMO游戏，而不是单机的“俄罗斯方砖”。 
感谢熊小磊先生的无私奉献，在Orz中确实存在这样一个独立的游戏开发网络库OrzAsio。OrzAsio是一个高效并可扩展的跨平台异步网络库，目的是为用户提供高效、可靠和灵活的网络程序开发组件，方便用户构建高效且灵活的网络程序。而OrzAsio的一个重要目标是为大型多人在线游戏开发网络模块，并能良好地满足大吞吐量及高负载的网络游戏服务器需求。OrzAsio的网络底层基于boost::asio，这是一个高效、可扩展和跨平台的网络库。如果关心我们的社区，读者会了解熊小磊先生正在完成一个更加前卫且基于公共对象请求代理体系结构规范（CORBA规范）的网络游戏的网络开发架构。 
在本书的随附光盘中提供了OrzAsio网络库及其依赖工具Toolkit_Plus的文档。 
笔者希望读者都能喜欢我们精心准备的大餐。如果您能开心享用，那是我们的荣幸。然而制作一款完整的游戏并不是一本书能够完全讲清楚的事情，所以我们在这本书的最后提供了这个创造乐园的地图。在  本书的附录中我们提供了Boost库、设计模式及OGRE 3D的简单概述。
致谢
好莱坞奥斯卡的获奖者都会在最重要的时间讲一些感谢的话，我们要说的话如下。
谢谢我现在和之前的老板及同事的支持与鼓励，当然请相信我并没有在上班时间来写作，也没有耽误工作进度。 
感谢OGRE 3D社区提供了这么好的软件，虽然引擎的核心开发人员大部分都不懂中文，但是在这本中文书中我还是由衷地感谢他们。 
谢谢那些为OGRE 3D引擎在中国普及而努力的人们，Mega的游戏开发小组、盛崇山老师、燕尘，以及谢建华（音译）先生，让我分享了你们的荣誉。 
感谢熊小磊先生捐献的网络库和相应文档，感谢Mega的游戏开发小组的任晓宇先生提供《OGRE使用指南》部分章节的授权，感谢梁国栋的“附录C”，感谢兄弟们找的错字。 
感谢我的家人对我的关心，感谢父母能容忍我的任性。感谢女朋友对我的支持，竟然接受我每天在外地写稿子，而不是给他们打电话。 
如果不是觉得我家里人会看到这本书，那我一定第一个感谢的就是您——现在看到这里的读者。如果您买了这本书，那么便是在经济上援助了我；如果您让身边的朋友阅读了这本书，那就是在梦想上援助了我。 
这个梦想是：
让每个看电视的人都能开发游戏。
目  录
第 1 章  引言 1
1．OGRE 3D的起源 1
2．关于Orz游戏开发框架 3
3．如何使用本书的随附光盘 5
4．本书使用指南 7
第 2 章  21天课程 8
准备工作 9
第1周•星期日  从OGRE 3D演示框架开始 11
第1周•星期一  第1个3D程序 13
第1周•星期二  打地鼠 17
第1周•星期三  地鼠出击 23
第1周•星期四  动起来 30
第1周•星期五  击中地鼠 35
第1周•星期六  记录在案 43
第2周•星期日  Orz开发框架的简单使用 47
第2周•星期一  准备出发 48
第2周•星期二  战斗机起飞 54
第2周•星期三  侵略者来袭 60
第2周•星期四  开火！ 63
第2周•星期五  击中要害 69
第2周•星期六  震耳欲聋 75
第3周•星期日  搏击俱乐部 78
第3周•星期一  插件系统 82
第3周•星期二  有限状态机 86
第3周•星期三  A*寻径 89
第3周•星期四  事件驱动 94
第3周•星期五  完备 98
第3周•星期六  搏击 102
第 3 章  高级开发框架 105
3.1  对象ID管理器 107
3.2  任意类型存储器 111
3.3  消息系统 115
3.4  时钟工具 131
3.5  定时器管理器工具 133
3.6  基于有限状态机的逻辑管理工具 137
3.7  单件工具 150
3.8  自动列表工具 153
3.9  异常处理工具 156
3.10  动态库及插件管理工具 160
3.11  Orz游戏框架 163
3.12  使用逻辑层 168
3.13  系统层 173
3.14  未来 177
附录A  Boost部分工具 179
附录B  部分设计模式概述 183
附录C  OGRE 3D概述 189