開始了把腳本語言加入遊戲引擎的工作,心目中的候選語言有 Lua,Python,Ruby,Javascript V8 等等;最後選擇了這一隻小可愛 - Squirrel。小松鼠 Squirrel 由 Alberto Demichelis 所創立,他曾經是知名遊戲引擎公司 Crytek 的 System Architect,Far Cry/CRYEngine 裡的 Lua binding 庫都由他負責。就憑著他對 Lua 的透徹認識和深厚的編程功力,他決定打造一套比 Lua 更優秀的語言。
一向有使用 Lua 的我非常欣賞它的堆疊設計與小巧的機器碼,可惜它的語法對我來說不太自然,甚至未有對類別和標準字元編碼作直接支援。Squirrel 正好解決了這些已困擾我多時的問題,除此之外還加入了類似 C# 的 delegate 和 attribute。以下是 Squirrel 擁有的特色:
- 動態型別檢查 - Dynamic typing
- 委托模式 - Delegation
- 類別與繼承 - Classes & inheritance
- 類別属性 - Attribute
- 運算元重載 - Operator overloading
- 高階函數 - Higher order functions
- 迭代發生器 - Generators
- 協程 - Cooperative threads (coroutines)
- 最佳化遞歸 - Tail recursion
- 異常 - Exception handling
- 實時自動內儲管理 - Automatic memory management (CPU bursts free; mixed approach ref counting/GC)
- 弱引用 - Weak references
- C/C++ 風格的語法
- 可支援 16 bit 字串
- 支援運行期即時編譯 - Just in time compilation
- 支援 32 位和 64 位架構
- 整個運行庫不用七千行源碼,200k byte 的機械碼
- 遠程調試 - Remote debugging though TCP/IP
- 與 Visual Studio 的整合
在技術層面來看,Squirrel 絕對適合用作遊戲腳本語言,現在還欠缺的是一群使用者。小弟也希望它能夠茁壯成長,正在為它開發一套模板式的 C++ 結合庫,下次再和大家分享。