2012-02-25 66 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