游戏开发论坛

 找回密码
 立即注册
搜索
查看: 23977|回复: 13

基于Ogre3D的游戏框架——Orz

[复制链接]

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2009-12-2 10:33:00 | 显示全部楼层 |阅读模式
关于Orz游戏开发框架

女怕嫁错郎,男怕入错行。让我在初中一年级的时候就决定这辈子要开发游戏而且坚持到今天的原因有以下几个:
我玩游戏很臭,经常输掉。总是希望这辈子可以自己做一个游戏,让别人赢不了我。
如果你梦想是做游戏设计,那么就可以有借口从父母那里拿到钱去买GBA。
有人告诉我“玩一个游戏是好的,制作一个游戏是伟大的。”
电子工业出版的《DOOM启示录》,里面告诉能做一款游戏的人,一定是个英雄。

一个虚拟的世界,一个比现实世界更好玩一点的世界,这就是游戏。当你在游戏环境中增加新的角色,搭建新的场景,然后布置新的逻辑,不禁认为上帝的乐趣也不过如此。而且这几年网络游戏环境的改善,让行业内的薪水也比其他的工作要高一些。就像看了《搏击俱乐部》之后经常和别人提起这部电影一样,所以这么好的事情怎么能不与别人分享呢?

就算到了今天,我仍然坚信上面所说的事情。而Orz游戏开发框架的起源,就是这些想法在现实世界的具化产物。在官方的场合下,Orz代表Open Resources Zone的缩写,即是开放资源地带,而不是“失意体前屈”。在2009年春节的时候Orz游戏开发框架在http://ogre3d.cn网站上遵守LGPL协议开源。在之后一年的时间里,得到了众多朋友们的关注,大家报告问题,改善并提交代码。

为了避免老王卖瓜的嫌疑,我们在下面提供一些朋友对Orz的评价:

以下是在台湾的博客“兔子也会的游戏设计上”对Orz的评价:

基于Ogre3D的游戏框架——Orz,看到Orz就可以猜得是亚洲人写的;这的确是对岸的Ogre3D玩家“免费打工仔”所写的一个开源游戏引擎框架,还在雏形阶段,话虽如此,此框架已使用了许多现代程式设计架构,包括Boost函式库的使用,以MVC模式作为整个框架的主轴:包含Event管理,外挂抽合(插件管理)、有限状态机、pimpl技法等,麻雀虽小,五脏俱全,程式简单易懂,值得C++新手学习。


真让人感动。如果您能看到这本书的话,我希望告诉您:现在已经不是雏形阶段了。

以下是幻想森林论坛里面FantasyDR朋友对Orz的评价:

它不是一个残疾的东西,它是完整的,你可以用它来开发一个游戏。(话说么有网络……算了,么网络不是残疾)
它是OO的,它不是引擎而是框架,所以你可以在框架下快速开发,而不必长时间徘徊在底层。(这两个名词的区别其实没有那么大=_=)
它是开源的,而且它还在成长中。
我很喜欢它的风格所以就来做广告了。


谢谢您的喜爱,也感谢熊小磊先生,我们现在已经有一个很不错的网络库OrzAsio。

以下是我大学的学弟对Orz的评价,放在他的blog上面:

这是一则广告:
内容是Orz,不要曲解他的意思。Orz即Open Resource  Zone,即开放资源地带。一个朋友做的,也可以说是带我入行的老大作品。我们深受开源引擎带来益处,终于他开始反哺了。我还没有,或者我的水品还不够,或者是被开源宠坏了。Orz项目是一个基于LGPL的开源工程,目前他主要服务于小型休闲游戏开发(但不代表其职能开发小型游戏按游戏)。白话点就是一个游戏引擎,我们知道Ogre3D是个开源图形引擎,但是有了图形引擎你想做游戏是远远不够的,这就需要游戏引擎,Orz就是这样的东西。

我的评价:
从Orz的雏形开始我就看起,直到现在新的版本。代码很漂亮,比你我写的都漂亮,建议一看,很软件工程,如果也很喜欢拉风的软件工程,你绝对会与我有共鸣。
整体的思想有了很大的进步,尽管架构上还有很多以前的影子(特别是逻辑架构)。小工具我很喜欢,写的也很赞。实用性也不错。逻辑架构我不太喜欢,我觉得学习曲线会太高。我的意见是摈弃到以前的旧东西,或许会更好。
现在东西还很少,以后或许会慢慢多,如果你关注,应该有收获。
太新的新手不建议看,包括Ogre我也不建议看源代码。


关于学习曲线高的问题,现在已经经过了大量的改善,增加了很多易于使用的接口和工具。

以下是熊小磊先生在捐献网络引擎OrzAsio之前对Orz的评价:

今天大体看了下Orz0.0.6的结构,设计的确实很好,结构思路清晰,代码标准化,也灵活易扩展,这方面正是我不足的地方,我准备把Orz的一些结构和设计思路应用到我以后的开发中,准备重写下这个网络引擎。


Ogre3D中文社区里面的朋友huzht对Orz的评价:

一口气把Orz的所有源码都拜读了一遍,可以说作者倾注了好多心血,很用心在写,思路也清晰,我也学到了不少东西,十分感谢!各个部分抽象封装后不知性能有多大影响。


一般来说,框架核心的功能代码仍然是交给Ogre3D等功能引擎来实现的,Orz框架一般不会成为游戏的瓶颈。就算这样,在一些关键性能上面我们也做了很多的优化工作,比如通过对象池来处理消息构造等等,你可以在本书第三章节了解更多的细节。

Ogre3D中文社区里面的朋友bowdar对Orz的评价:

3D引擎我接触得晚,刚刚开始就看到了Orz,当时没有认真看是干什么的。研究了一段时间的Ogre3D,要着手写工程的时候系统的设计却感到棘手。在Ogre3D的官方论坛上找了很多示例代码,想找个好的代码框架居然没发现,当我再次看到Orz的时候发现这就是我需要的东西啊。非常感谢坛主无私的奉献!

感谢您的关注。

Ogre3D中文社区里面的朋友asiantao对Orz的评价

下载了代码,初次看就喜欢上了,一直在关注。建议把Toolkit_base和Framework_base的实现也可以用到服务器,Toolkit_base可以用在服务器(IDManager还要改改),Framework_base的Entity等在服务器也会有,但不能重用。


谢谢您的建议,现在我们已经有比较完善的OrzAsio服务器引擎了。

读者看到这里可能会怀疑,是不是真的这么好啊?如果你水平不差,可以看看光盘中的相应代码。如果你觉得这真是个好东西并且计划在之后的项目中使用,那是我的荣幸。如果你觉得这个框架设计的不怎么样,就过来我们的社区告诉我,只要您说的有道理,我们一定尽快重构到你满意为止。


http://bbs.ogre3d.cn

2

主题

132

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
发表于 2009-12-3 09:42:00 | 显示全部楼层

Re:基于Ogre3D的游戏框架——Orz

楼主把斜体字改下  看不清楚

4

主题

137

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
发表于 2009-12-3 17:51:00 | 显示全部楼层

Re:基于Ogre3D的游戏框架——Orz

虽然是广告贴。。还是要顶一下 牛人啊 呵呵

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2009-12-6 15:14:00 | 显示全部楼层

Re: 基于Ogre3D的游戏框架——Orz

看了一下网络部分的代码


其中关于


//! 数字选择器
/*!
*        \note 线程安全
*        \note 使用递增循环或者随机的方式选择指定范围内的一个数字
example:
\code
        NumChooser nc(0,9, 234));        // 创建一个从0~9种选择数字的数字选择器,随机种子数设为234
        Number num1 = nc.choose();        // 线程1
        Number num2 = nc.choose();        // 线程2
        // num1 和 num2 不会相同
\endcode
*/


        Number choose()
        {
                Number curr;
                if (m_random)
                        curr = m_rdr->generate(m_min, m_max);
                else
                {
                        curr = m_curr;
                        ++curr;
                        if (curr > m_max)
                                curr = m_min;
                        m_curr = curr;
                }
                return curr;
        }

虽然没有实际测试,但光是看代码这个是无法做到线程安全的。
// num1 和 num2 不会相同
是错误的 是有可能相同的

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2009-12-14 12:57:00 | 显示全部楼层

Re:基于Ogre3D的游戏框架——Orz

呵呵看那不懂

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2009-12-16 23:10:00 | 显示全部楼层

Re:基于Ogre3D的游戏框架——Orz

不是很清楚```

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
 楼主| 发表于 2009-12-28 13:09:00 | 显示全部楼层

Re: Re: 基于Ogre3D的游戏框架——Orz

你好,下面是网络部分开发者的回复,你可以参考一下
yukun84: Re: 基于Ogre3D的游戏框架——Orz

看了一下网络部分的代码


其中关于


//! 数字选择器
/*!
*        \note 线程安全
*        \note 使用递增循...


的确可能会相同,那段注释没写全,所谓的线程安全是指得选择数字的那段代码是安全的。相同也没有关系,因为Agency<typename T>是直接用的数组,只要保证不超出数组范围,多个线程同时访问同一个数组元素,也是ok的;

至于每个数组元素是否是线程安全,那个不再Agency的处理范围之内,需要用户自己决定。

Agency的意义在于从一个数组中选择出来一个近似随机的一个元素,用于多个线程大规模长时间不断访问这个数组中的元素,从概率角度讲,长时间的多次访问对于每个线程来说会自然的将访问的元素分布到整个数组上,也就是说同一时间,多个线程访问的元素会大部分不相同,从而保证多线程下线程wait-free的进行访问。


还有,他们可能质疑那个m_curr = curr;这个代码在vc和gcc下都是原子操作,32位整形的写和读都是原子的。
已经经过了充分的测试。


18

主题

211

帖子

419

积分

中级会员

Rank: 3Rank: 3

积分
419
发表于 2010-1-5 12:58:00 | 显示全部楼层

Re: 基于Ogre3D的游戏框架——Orz

什么时候更新到1.7版本啊?

0

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2010-1-21 17:51:00 | 显示全部楼层

Re:基于Ogre3D的游戏框架——Orz

顶起

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
 楼主| 发表于 2010-2-4 19:10:00 | 显示全部楼层

Re: Re: 基于Ogre3D的游戏框架——Orz

njw1985: Re: 基于Ogre3D的游戏框架——Orz

什么时候更新到1.7版本啊?


目前Ogre3D1.7还是rc版本,等正式版出来了我们会马上跟进的。还希望您能继续关注
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-11 08:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表