2.关于Orz游戏开发框架
OGRE 3D本身被定位成一个纯粹的图形引擎,所以开发人员还需要通过一个游戏框架来完成整个游戏。在OGRE 3D英文社区中提供了Yake和Goof等游戏开发框架,而我们也提供了一款Orz(Open Resources Zone,即开放资源地带)游戏开发框架。
有一些优秀的开发人员把多年积累的代码开源提供给社区的朋友们使用,并逐渐在此基础上修改、重构和整合。在2009年春节时一套完整Orz游戏开发框架在http://ogre3d.cn网站上遵守LGPL协议开源。之后一年的时间里得到了众多社区内朋友们的关注。人们报告问题,改善并提交代码。
Orz和其他商业及非商业游戏开发架构不同,它更专注于开发人员的感受,简化其工作。在保证运行效率的前提下,提供尽可能大的扩展性。为了避免“老王卖瓜”的嫌疑,下面提供一些朋友对Orz的评价。
以下是在一位中国台湾朋友的博客“兔子也会的游戏设计”上对Orz的评价:
基于OGRE 3D的游戏框架——Orz,看到Orz就可以猜到是亚洲人写的,这的确是对岸的OGRE 3D玩家“免费打工仔”所写的一个开源游戏引擎框架,还在雏形阶段。话虽如此,此框架已使用了许多现代程式设计架构,包括Boost函式库的使用,以MVC模式作为整个框架的主轴:Event管理、外挂抽合(插件管理)、有限状态机及pimpl技法等。麻雀虽小,五脏俱全。程式简单易懂,值得C++新手学习。
真让人感动,要说明的是Orz现在已经不是雏形阶段了。
以下是幻想森林论坛中FantasyDR朋友对Orz的评价:
(1)它不是一个残疾的东西,它是完整的,你可以用它来开发一个游戏(话说要么有网络……算了,要么网络不是残疾)。
(2)它是OO的,它不是引擎,而是框架,所以你可以在框架下快速开发,而不必长时间徘徊在底层(这两个名词的区别其实没有那么大=_=)。
(3)它是开源的,而且还在成长中。
我很喜欢它的风格,所以就来做广告了。
我们现在已经有一个很不错的网络库OrzAsio。
以下是笔者大学的学弟对Orz的评价,在他的blog中:
这是一则广告:
内容是Orz,不要曲解它的意思。Orz(Open Resource Zone,即开放资源地带)是一个朋友做的,也可以说是带我入行的老大作品。我们深受开源引擎所带来的益处,它终于开始反哺了。我还没有,或者我的水平还不够,或者是被开源宠坏了。Orz项目是一个基于LGPL的开源工程,目前主要服务于小型休闲游戏开发(但不代表其只能开发小型游戏)。白话点就是一个游戏引擎,我们知道OGRE 3D是个开源图形引擎。但是有了图形引擎你想做游戏是远远不够的,为此需要游戏引擎,Orz就是这样的东西。
笔者的评价:
(1)从Orz的雏形开始,直到现在新的版本,我一直关注。代码很漂亮,比你我写得都漂亮,建议一看。如果很喜欢拉风的软件工程,你绝对会与我有共鸣。
(2)整体的思想有了很大的进步,尽管架构上还有很多以前的影子(特别是逻辑架构)。小工具我很喜欢,写得也很赞,实用性也不错。逻辑架构我不太喜欢,学习曲线会太高。我的意见是摒弃以前的旧东西,或许会更好。
(3)现在东西还很少,以后或许会慢慢增多。如果你关注,应该有收获。
(4)新手不建议看,包括OGRE,我也不建议看源代码。
关于学习曲线高的问题,现在已经大量改善,增加了很多易于使用的接口和工具。
以下是熊小磊先生在贡献网络引擎OrzAsio之前对Orz的评价:
今天大体看了下Orz0.0.6的结构,设计得确实很好,结构思路清晰,代码标准化。也灵活易扩展,这方面正是我不足的地方。我准备把Orz的一些结构和设计思路应用到我以后的开发中,准备重写这个网络引擎。
OGRE 3D中文社区里面的朋友huzht对Orz的评价:
一口气把Orz的所有源码都拜读了一遍,可以说作者倾注了好多心血。很用心在写,思路也清晰。我也学到了不少东西,十分感谢!各个部分抽象封装后不知对性能有多大影响。
一般来说,框架核心的功能代码仍然是交给OGRE 3D等功能引擎来实现的,Orz框架一般不会成为游戏的瓶颈。就算这样,在一些关键性能上面我们也做了很多的优化工作。如通过对象池来处理消息构造等,你可以在本书后半部分中了解更多的细节。
OGRE 3D中文社区里面的朋友bowdar对Orz的评价:
3D引擎我接触得晚,刚刚开始就看到了Orz,当时没有认真看是干什么的。研究了一段时间的OGRE 3D,要着手写工程时系统设计却感到棘手。在OGRE 3D的官方论坛上找了很多示例代码,想找个好的代码框架居然没发现。当我再次看到Orz时,发现这就是我需要的东西啊,非常感谢坛主无私的奉献!
OGRE 3D中文社区里面的朋友asiantao对Orz的评价:
下载了代码,初次看就喜欢上了,一直在关注。建议把Toolkit_base和Framework_base的实现也可以用到服务器,Toolkit_base可以用在服务器(IDManager还要改改),Framework_base的Entity等在服务器也会有,但不能重用。
谢谢网友的建议,现在我们已经有比较完善的OrzAsio服务器引擎了。
如果你的水平不低,可以查看光盘中的相应代码;如果认为这真是个好工具并且计划在之后的项目中使用,那是我们的荣幸;如果认为这个框架设计得不怎么样,请到我们的社区说明。只要说得有道理,我们一定尽快重构,直到你满意为止。