2010-07-29 88 views
7

我在尋找的是一個Java的腳本引擎,它允許用戶編寫簡單的腳本來控制遊戲的行爲和事件。東西:什麼是嵌入Java遊戲引擎的好的簡單腳本語言?

  • 很簡單 - 一些容易回暖,特別是對人的一些基本的編程/腳本經驗

  • 提供了大量的控制 - 我可以很容易地啓動/停止/暫停腳本和控制多少執行時間各得到,或許他們能有多少內存空間,使用

  • 從Java環境本身分離 - 從劇本到任何Java無法訪問對象或類,只有那些功能我明確規定

我已經考慮過犀牛JavaScript引擎,它適合我的目的,但是從我讀過的內容(example),它被設計爲與Java集成以至於很安全地對其進行沙盒處理會非常棘手。我寧願用一個引擎,默認情況下讓腳本無法訪問任何東西,而不是完全打開一個我必須關閉的引擎。腳本可能並不總是可信的,所以環境不應該很容易被打破。

我還考慮開發自己的東西,如ANTLR語言,但它比我想投入可能更多的努力。

有什麼建議?

回答

4

你有沒有考慮過Lua?

關於該主題的pdfGoogle docs preview

LYRIO,G.H.S.O; Seixas,R.B .;在Java中,北美模擬和AI在遊戲會議論文集編碼遊戲中使用Lua作爲腳本語言 - GAMEON-NA,EUROSIS,加拿大蒙特利爾,2008年

+1

它是Lua,而不是LUA。請參閱http://www.lua.org/about.html#name – lhf 2010-07-30 22:39:52

+0

感謝您向我指出,編輯。 – 2010-07-30 23:09:44

2

你應該給一個嘗試Groovy,一腳本語言easily integrates與Java平臺。

它的語法與Java 100%兼容,但它也有一個簡化的語法,使其成爲DSLs實現的合適語言。

我不確定如果您可以停止/暫停從Java程序執行Groovy代碼,您應該閱讀Groovy API

從Java程序中執行Groovy代碼時,可以指定傳遞給腳本的上下文,並且可以查詢腳本修改的上下文以查找輸出變量。通過創建GroovyShell和適當的CompilerConfiguration,腳本可以與底層Java環境完全隔離。

1

JACL就是這樣一種語言。它基於TCL。無論你做什麼,都不要發明另一種語言。那裏有很多很好的選擇。

0

在我看來,不僅語言,而且接口的方式很重要。 JSR 223在不同語言之間是最兼容的,但「本地」似乎是最好的(即groovy的全部對象集成)