最全面、最前沿、最专业的游戏研发实战

提供最全面的游戏研发技能分享,让您在最短时间变成高级游戏工程师

查看:0|回复:4

【行业】如何评价开源游戏图形引擎OGRE的设计?

 attach_img

7

帖子

2

回复

7

积分
最后登录:
2025-04-09 22:00
注册时间:
2023-03-12 22:56
楼主
  发表于:2025-04-09 22:39:01|查看用户信息

OGRE这款以设计为初衷的引擎,到底设计得如何?

5

帖子

5

回复

10

积分
最后登录:
2025-04-09 19:11
注册时间:
2023-03-12 17:23
1 楼
  发表于:2025-04-09 22:43:53|查看用户信息

在Ogre之前的图形引擎(卡马克的时代)突出的是运行速度和效率,所以在决策设计结构和效率的时候一般选择后者,比如“尽量少用虚函数”,“尽量少用RTTI”。这些都是为了提高效率的选择,


而Ogre的优点和缺点都是,过分注重软件结构而相对忽视运行效率,这在当时没有成功作品前是一直被诟病的(当时有一种说法Ogre用来学习可以但是做不出来东西,当时攻击Ogre的很重要的一个点竟然是“有这么多虚函数”)。但在设计上,至少在它的那个时代,很强悍。


有两个显著的特点(今天来看已经很寻常,但是十几年前当时确实算是创举),

1 大量的使用设计模式。

2 节点和挂接物使用组合而不是继承。

Ogre的老大“辛巴达”除了是一个图形学大师之外,更重要的他是一个面向对象编程的大神。多年的面向对象编程方式让他的架构设计在当时脱颖而出。


另外一件事情,就是“辛巴达”的偏执,坚决认为不应该捆绑用户去使用其他的工具,提出“我是渲染引擎而不是游戏引擎”。要开发者自己去组合相关的其他工具(比如物理碰撞人工智能等等)。在提供给开发者自由的好处下同时也带来了对开发者要求的提高。这也是后期萧条的原因。用Ogre开发游戏,开发公司至少要自己写游戏架构和工具。当初我也在写,每个用Ogre的人都有一套自己的游戏架构。


是Unity的横空出世,虽然Unity不是开源,但是价格大家也承受得起,开发起来比Ogre容易很多,大家也不用写工具和架构了。更重要的是,在结构上Unity是基于组件组合,而不是面向对象的继承,任何人都应该知道组合优于继承。


2010年,我离开了Ogre社区,所以之后的发展我就没有资格去评价了。


回过头来看,Ogre之前是效率重于结构,Ogre之后是结构重于效率。Ogre很多设计,在那个时代都是前瞻性的,也教育了很多人,比如我,对面向对象设计的理解和启蒙。Ogre在软件结构上做得很好,但Ogre在简化设计上做得不好(甚至反其道来做),导致后来(在廉价引擎上)被Unity超越。


今天来看,可能用Ogre的人并不多了,但是从学习图形学的角度来看,Ogre仍然是一个很好的选择,并且,在一些仿真学的领域中,Ogre仍然是一个很棒的东西。


最后作为开源软件,可能用的人会越来越少,但是消亡也很难,这是开源软件的共性。


搞Ogre的,在我前面是MAGE小组和燕尘,现在都没人记得了吧


5

帖子

5

回复

8

积分
最后登录:
2025-04-09 20:53
注册时间:
2024-04-21 00:39
2 楼
  发表于:2025-04-09 22:45:44|查看用户信息

在移动端大火之前(2012年),Ogre是举足轻重的。不仅在学校的游戏设计课上(USC Gamepipe)会当作范例来教学,开发者做项目也会真正去选择它。


Ogre是围绕图形为目的的,所以自己也说自己是渲染引擎,而不是更为广泛意义的游戏引擎——还需包括物理、AI、网络、声音、UI工具等等,当年大家会再整合fmod或者havok,box2D等等,有AI的解决方案。


Ogre的代码写的非常之规范,接口、抽象类、命名方式犹如面向对象的教科书一般(是PC和游戏界喜欢的匈牙利命名法则,而不是Java那种面向对象命名)。对于培养良好的C++习惯蛮有益的。


后来Ogre也有跨平台的野心,可以生成项目并在iphone上测试运行。只不过跨平台这一块被手机厂商牵着鼻子走,需要花很多人力物力去维护,而比如Apple这种三天两头升级iOS搞个beta 1/2/3/4版本换接口和库的,对于一个开源项目来说耗不起。两三个月不更新就没法在iPhone上用了,没有了财路,开发者自然就离开了。


即使到2012年,Unity的效率比起Ogre还是非常非常差的,Just in time和native C++比起来高下立判。但是Unity这个compositioin或者组建的思想,简单易用,很容易拼出东西,让非常多的爱好者可以使用。


即使是Thinking in Java也提到composition和inheritance(继承)到底孰优孰劣——composition其实还是比起继承更flexible有扩展性。尤其是对于游戏里的物体,它是不是trigger?它需要渲染么?它要不要碰撞检测?它走不走AI?这些用封装继承的思想似乎不能够最好地诠释。


即使到今天游戏领域仍是performance critical(VR跑得动吗?),追求最后一个bit的效率永远是引擎最大目的之一(或者没有之一)。而和硬件端的结合和优化,会慢慢杀掉很多中间层面的公司(或者被并购),而开源引擎的地位就像ogre这般尴尬。


2

帖子

5

回复

6

积分
最后登录:
2025-04-09 18:54
注册时间:
2023-10-10 18:18
3 楼
  发表于:2025-04-09 22:47:06|查看用户信息

1.从图形技术上来说,属于quake3和unreal2时代的东西,基本的场景组织结构可以参考,其他的和现代图形技术已经相差很远了。


2.代码设计上中规中矩,比较规范,可读性不错


3.功能上来说,虽然ogre自己标榜只是一个渲染引擎,但是还是功能上包含的比一个scene graph要多,不是一个纯粹的渲染,比如资源管理方面。但是又与一个完整的游戏引擎功能相差甚远,所以有点尴尬。


4.对于很多人说的ogre运行效率上有问题这点,呵呵,只能说是外行的评论了,不知道为什么很多人这么认为


3

帖子

8

回复

10

积分
最后登录:
2025-04-09 21:29
注册时间:
2023-02-26 10:06
4 楼
  发表于:2025-04-09 22:47:47|查看用户信息

他的OO架构,是真的优秀。

共 1/1 页

0

帖子

0

回复

0

积分
最后登录:
1970-01-01 08:00
注册时间:
1970-01-01 08:00
会员必须登录才能发布帖子! 点击登录