縱觀近年來程式語言的發展,我想大家應該都會同意動態、腳本語言可以縮短程式開發的時間。例如:
- 網頁開發:Agile web development with rails
- 遊戲開發:Game Programming with Python, Lua, and Ruby
- 知名MMORPG魔獸世界內建Lua Script
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
當然,有其利必有其弊。這些動態語言的開發速度雖然勝過C++,但執行速度是一定比不過C++的,如何平衡當然就看你的應用囉。例如:
- 格鬥遊戲、3D射擊遊戲:別鬧了,乖乖用C++寫吧。動態語言可以拿來輔助做流程控制用。
- 益智遊戲、冒險解迷:在運算量不大的前題下,整個遊戲都使用動態語言寫也是有可能的。