2009-11-23 84 views
6

我正在寻找一个很好的图形框架来制作一个漂亮的2D游戏。我做了3个非常简单的测试,看看哪个图形Ruby框架在GosuRubygame之间更快。该测试会创建1000个“Square”类的实例,通过使用框架的方法以最简单的方式移动并绘制红色正方形。第三个测试是一样的,但在纯OpenGL实现中(没有任何框架)。下面是结果:为什么rubygame和gosu比纯opengl慢?

PURE OPENGL(使用红宝石的OpenGL)80FPS: alt text http://grab.by/JTM

古薮(使用红宝石的OpenGL +古薮)46Fps: alt text http://grab.by/JTC

RUBYGAME(使用红宝石的OpenGL + ruby​​game + rsdl)32Fps: alt text http://grab.by/JTw

为什么纯OpenGL测试和Rubygame或Gosu测试之间会有这么大的fps差异? (他们都使用opengl)

这些框架是真的可靠还是有我应该使用的更好的框架? (我没有看到自己在纯OpenGL中加载图像声音和字体的整个过程:p)

您的意见是什么?

回答

5

当您使用框架时,任何简化和加速开发的框架都会立即招致性能损失。 OpenGL是一个好的和快速的库,但是当你用像Ruby这样的高级语言和框架来包装它时,你绝对可以期待减速。 OpenGL仍然很快,你的缓慢来自这些框架内的任何事情的开销。尽管如此,46fps看起来并不算太坏,但如果你要强调引擎比你的例子更多,你可能会得到一个无法玩的游戏。

+1

我同意,但差距是巨大的:)有没有更好的框架,以实时在红宝石上做2d(或3d)图形? – XPac27 2009-11-23 18:23:42

0

如果这是一个使用框架的点球,我不知道什么是对实际执行游戏逻辑...我使用红宝石gamedev希望都更快下沉的惩罚。

+0

一个框架为你自己做很多工作是很常见的。所以你会看到像这样的初始放缓,但是当你开始添加你的游戏代码时,你可能看不到更多的放缓,因为它有效地使用框架来完成任务。 – Kylotan 2009-11-24 11:03:29

+0

你想一次移动1000张图片吗?即使你这样做,你仍然会得到45 FPS。这并不糟糕。 – horseyguy 2010-10-03 07:39:48

0

您使用的是YARV吗?你应该尝试一个替代的ruby实现,比如jruby或rubinius。

+0

不,我正在使用红宝石1.8.1(mac)。但它看起来就像是最好的解决办法:http://programmingzen.com/2010/07/19/the-great-ruby-shootout-july-2010/ 也许问题来自于一个事实,即Rubygame基于SDL。 – XPac27 2010-07-20 08:40:20

+1

如果您使用的是Mac,请查看http://www.macruby.org/。 – mk12 2010-08-01 00:53:19

2

我刚刚用Ruby 1.9.2和Gosu做了一个正方形的项目。我能够在我的MacBook Pro上获得1000平方和60 fps的性能问题。使用eval展开我的对象数组,我以60 fps获得了4000个正方形。 正方形具有随机速度并从显示器边缘反弹。