最近正為游戲引擎選擇一款較好的邏輯腳本而頭疼不已
1. Lua
Lua用了5,6年的樣子,從LuaPlus到lua-tinker再到lua_bind. 雖然lua本身很小巧方便,但是其不支持面向?qū)ο筇匦?讓很多人在使用時(shí)模擬了很多面向?qū)ο蟮奶匦?但是這種做法在調(diào)試時(shí)簡(jiǎn)直是噩夢(mèng).
我覺得游戲腳本最好是能預(yù)編譯成byte code,讓編譯器在編譯期將很多的bug暴露出來,而不是像lua那樣.很多空訪問錯(cuò)誤必須要等到runtime才能暴露.讓調(diào)試效率大大降低.這點(diǎn),mono C#就是極好的選擇.
2. Mono
由于Unity的流行,Mono被帶入游戲開發(fā)者的視線內(nèi).其內(nèi)置的很多系統(tǒng)腳本都是用C#寫成,而且邏輯腳本用C#編寫也是非常清晰嚴(yán)謹(jǐn)?shù)?
據(jù)說Mono在Windows下編譯異常麻煩,而且嵌入方式也沒有太多例子,現(xiàn)在這塊嚴(yán)重缺乏資料.
3. V8
Google V8正是由于Chrome而風(fēng)靡起來.直接JIT方式就是Chrome速度飛快的原因.
最近down了一個(gè)下來試了下,果然名不虛傳,API也非常的易用.不過由于不是很熟悉JavaScript的原因, 自己用scons編譯出一個(gè)v8的shell,跑了一個(gè)帶類繼承的例子,居然不識(shí)別class關(guān)鍵字.這才感嘆還不如用小巧的lua呢.在我看來,JavaScript與Lua比較,也就是個(gè)能new,但是沒class的語(yǔ)言.也被別人稱為半吊子面向?qū)ο?都是使用prototype方式來實(shí)現(xiàn)類功能.
4. JavaScriptCore
在Google V8的類測(cè)試碰壁后,馬上研究了下Unity下的JavaScript到底用了什么庫(kù),沒錯(cuò)就是Apple Safari里的JavaScriptCore. 這東西資料比Mono還少,都是高齡庫(kù)了.想必整合不是一般的麻煩.但是還是不確定這個(gè)腳本引擎是否原生支持類
5. Python
Python? 沒想過這種格式詭異的語(yǔ)言,正如Unity里支持Boo(一種很類似Python的語(yǔ)言)很少有人用一樣, 上次用過Python是在一個(gè)build系統(tǒng)里, 游戲里是不會(huì)考慮這種腳本系統(tǒng)的,效率也是很大的原因.
6. AngleScript, GameMonkey
這兩種語(yǔ)言都是很老的游戲腳本語(yǔ)言,不過都是類c++方式的,不過由于項(xiàng)目使用不多,或許是有一定的bug,資料也相對(duì)較少,所以可能最后考慮