遊戲編程領域中有哪些鮮為人知的腳本語言,且為什麼它們沒有像lua一樣普及?

在遊戲編程領域lua已經得到了極大的普及,但是題主也發現一些非常優秀的腳本語言(諸如AngelScript、Squirrel)甚至是專門面向遊戲開發的,卻很少被人提及或用於實際的項目之中。這些語言出現的時間也很久了,相對於lua也有很多優異的特性(比如AngelScript的C++綁定、比如Squirrel內置的面向對象),但是為什麼始終沒有什麼人提及?


每個語言的普及程度不在於這個語言有多少優勢。而是在於這個語言有沒有如下三類人進行參與:

1,願意造輪子並分享,技術可靠,能發揮這個語言特性的。

2,熱心分享,經常針對具體問題寫出該語言解決方案文章的。

3,公布完整範例,甚至是成功商業化項目開源的。

如有以上三類人,新人就如黃河之水連綿不絕,又如洪水決堤一發不可收拾。

因為他們首先知道這個語言有可靠的技術支持,然後在入門時能夠很方便的在網上找到具體問題的解決方案,最後還能看到用這個語言能做些什麼,甚至直接拿來借鑒學習。

然後這個語言就會慢慢普及成為一個生態。


AngelScript - AngelCode.com

http://AngelCode.com is maintained by Andreas J?nsson since 2001.

說說AngelScript,這個我以前用過在遊戲開發中,還真正的寫過遊戲引擎的綁定。

我很喜歡它,不過我現在換成Lua了,雖然也有喜歡Lua精簡的一些原因,但主要還是因為Lua用的人多。

在市場上已經有一個大致尚可的腳本解決方案的時候,後來想居上就得有壓倒性的優勢才行,可惜現實是技術的突破大體都是漸近的,一點點的優勢並不能讓天平傾斜。而且大部分的人,在手頭有一個東西夠用的情況下,大多並不會主動積極的去尋找看看有沒有更優秀的東西。

AngelScript是我用過對C++最友好的腳本語言,其語法也盡量貼合C++,面向對象,強類型,傳引用,any,map等等C++里你熟悉的東西。可惜的是國內基本很少有人知道這個腳本語言,當初最早發現它的時候也是機緣巧合,當時遊戲開發要使用腳本做戰鬥系統,那時2dx的lua還處於萌芽,而且當時我也還不會Lua,反正都是從頭用起,就想想看去找找國外的遊戲圈子使用的腳本語言都有哪幾種,對比一番後,就一見傾心AngelScript了。因為跟C++貼得那麼近的緣故,實際遊戲開發使用過程中間的綁定和調用也是異常的舒暢。當時我還把AngelScript給整到C++伺服器端也跑了起來,客戶端伺服器一部分邏輯代碼共用。

像Lua之面向C,用原始API,註冊一個複雜點的函數到C中,得寫得手抽筋,所以就有各種各樣的Lua綁定庫。而AngelScript的官方API只需要一行。可以看出作者是很用心在為C++服務。

它甚至還能註冊C++模板:

腳本大體長這個樣子,超像C++有沒有!

支持介面,繼承,多態,操作符重載,多線程,垃圾回收,枚舉,typedef,函數指針,模塊插件,單步執行調試,動態編譯載入……簡直就像是C++的翻版。性能支持二進位編譯,實測也很優秀。跨各CPU平台是必須的了,移動平台我也都跑過。

如果你的遊戲本體是C++的話,用AngelScript,意味著腳本只是你本體的一個延伸,其基本的架構和思路是一以貫之的。而用C++和Lua的話,你得在強類型面向對象和弱類型Table的靈活中不停的轉換腦袋。

有利也有弊,AngelScript貼合C++的代價是,它不能很好的移植到其他的語言平台上去,比如和C#,java綁定,應用面就會受限,雖然想做的話也可以通過一個小的C層也可以簡單的實現,但畢竟從腳本風格上來說不如Lua那樣自身畢竟純粹,AngelScript太有C++味道了。而Lua因為小而美,學的人用的人,掌握的概念不多,不折騰,就更容易傳播。

用雙重標準來說,跟mono C#比,AngelScript顯然功能要弱得多,但是要小得多,源碼只有幾十個文件。跟Lua比,AngelScript功能要強大的多,體積性能上大家差不多。AngelScript是中間的選擇,所以有時候也很尷尬。

雖然很遺憾它沒有流行開來,但客觀來說絕對是一個優秀的腳本語言。作者維護的頻率也很快,而且C++源碼風格少有的清晰,提供的介面異常的友好,想想看你用一個腳本語言卻不需要在官方API上再封裝一層是什麼體驗。想學習腳本開發的話,是非常不錯的資料。

另外BMFont 這個也是在作者名下!遊戲界字體生成圖片fnt的大名鼎鼎的工具。


之前看到日本的一個同人遊戲《東方紅輝心》在用Squirrel。

我覺得遊戲開發商一般是不會去提及自己用了什麼工具、什麼語言的,不僅沒有必要,還會泄露技術細節,宣傳和提及主要還是看這個語言的創造者、或者社區。


推薦閱讀:

如何想學點編譯原理,又不想直接看龍虎之類的書籍,太多理論,乾燥?
目前,網頁腳本語言三個主流:PHP,JSP,.NET。究竟是一種怎麼樣的形勢?是三國鼎立,還是其他的形勢呢?各自的真正優勢,又是在哪裡?
Lua 5.3為何很慢?該不該升級?

TAG:遊戲開發 | 腳本語言 | 遊戲編程 |