2012-02-25 65 views
2

任何人都可以告诉我,Ruby gems rubysdlruby-sdl-ffi之间的区别,就像速度差异一样吗?如果是这样,你会更喜欢吗?我想知道我写的宝石,Rubydraw(位于here)。ruby​​sdl与ruby-sdl-ffi

在此先感谢!

回答

9

我是ruby-sdl-ffi的作者。这个问题今天引起了我的注意,所以我正在回答那些仍然好奇的人的好处。

主要区别在于ruby-sdl-ffi是通过FFI(外部函数接口)访问SDL(和相关库)的纯Ruby代码,而rubysdl是用C语言编写的扩展,链接到SDL(以及相关库)。每种方法都有优点和缺点。 (显然,我觉得FFI是更好的方法,或者我不会为编写ruby-sdl-ffi而烦恼。)

尽管存在一些差异(下文提到),但两个库都提供了相似的功能集。他们都可以通过图像,声音/音乐以及键盘,鼠标和/或游戏杆/游戏手柄的用户输入进行2D游戏。他们也可以与OpenGL(通过ruby-opengl或ffi-opengl)一起使用来创建硬件加速的3D游戏。它们都可以在Windows,MacOS X和Linux(也可能是其他平台)上使用,但是如果您使用称为“rsdl”的特殊Ruby解释器包装器,则rubysdl仅适用于MacOS X.

我还没有运行任何严重的基准测试,所以我无法提供任何有关原始性能的明确数据。我的一般印象是,rubysdl可能会有轻微的性能优势,但它们足够接近,性能不是决定两个库之间的主要因素。

这是我会怎么总结这两个库的利弊:

红宝石SDL-FFI

  • 更便于用户安装宝石。它不需要编译,所以用户不需要安装C编译器或工具链。
  • 适用于核磁共振成像(“常用”Ruby解释器),JRuby和可能Rubinius。
  • 没有专用解释是必需的MacOS X上但是,MacOS X的支持,可能需要更新以获得正确MacOS X上的最新版本完全工作(苹果公司在不断变化的东西。)
  • 低级别API,更接近镜像C库。这可能是好的或坏的取决于你的观点。
  • 当前具有SDL,SDL_gfx,SDL_image,SDL_mixer和SDL_ttf库的绑定。 (与rubysdl相比,它增加了SDL_gfx,但缺少SGE和SMPEG。)为其他库添加绑定非常简单。
  • 不积极开发或维护了。我没有时间或兴趣了,但欢迎有人接管,我可以提供指导。
  • 有点实验性,并有一些粗糙的边缘。

ruby​​sdl

  • 更多成熟和抛光,经受了时间的考验。
  • 更好地支持日文文本输入和渲染。
  • 更高层次,更抽象的API。
  • 绑定SDL,SGE,SMPEG,SDL_image,SDL_mixer和SDL_ttf库。
  • 要求用户使用C编译器来安装gem。这在Windows和MacOS X上可能会非常令人头疼。
  • 需要MacOS X用户使用特殊的“rsdl”Ruby解释器来运行您的游戏。因此,据我所知,它不适用于Mac OS X上的JRuby或Rubinius。
  • 似乎没有被积极开发或维护了。
+0

嗨,约翰,有关SDL和你的宝石如何比较使用Gosu的想法? – Andrew 2013-08-25 06:19:25