2007年2月14日 星期三

OGRE language binding

縱觀近年來程式語言的發展,我想大家應該都會同意動態、腳本語言可以縮短程式開發的時間。例如:
等等...

OGRE本身是使用C++寫的,但其龐大的社群使得我們可以找到一些其他語言binding的資源:

PyOgre

PyOgre的歷史應該滿悠久的,使用SWIG將OGRE與Python語言做結合,讓我們可以在Python中直接取用OGRE的物件。

PyOgre最新的版本應該是1.2版,但是官網的binary release竟然停留在2005年的1.0.6版,不知道在想什麼 =.= Wiki上面有熱心的網友自己編譯的win32 binary,但連結已失效了。目前取得最新版本的唯一方式就是自己去SVN checkout然後編譯。

PyOgre的優點應該是比較stable(應為已經開發很久了)、官網tutorial(在PyOgre的下半部)一定可以work。除此之外,官網論壇上的人似乎都比較推薦Python-Ogre。

Python-Ogre

Python-Ogre是另外一套Ogre的Python binding,相較於PyOgre使用SWIG,Python-Ogre使用Py++來自動化的做Warpper的動作。當然使用者可以不用理會這些,重點是Python-Ogre雖然發展不到半年的時間,但開發的動作相當迅速,應該可望完全取代掉PyOgre。

Shattered Ruby

Shattered Ruby是一套使用OGRE為底層的Game Framework,他不僅是做Warpper的動作而已,還開發了一些工具來加速遊戲設計的流程。

我想這個開發者一定對於Ruby on Rails的網頁框架十分熟悉,而把Rails這個網頁開發的很多概念拿到遊戲開發上,如:
  • DRY: Don't repeat yourself
  • CoC: Convention before configuration
  • Generator
  • Domain Specific Language
等等...我覺得是一個相當有潛力的project,可惜使用者族群沒有Python的多。




當然,有其利必有其弊。這些動態語言的開發速度雖然勝過C++,但執行速度是一定比不過C++的,如何平衡當然就看你的應用囉。例如:
  • 格鬥遊戲、3D射擊遊戲:別鬧了,乖乖用C++寫吧。動態語言可以拿來輔助做流程控制用。
  • 益智遊戲、冒險解迷:在運算量不大的前題下,整個遊戲都使用動態語言寫也是有可能的。

沒有留言: