簡體   English   中英

我可以使用 C 作為我的引擎的腳本語言嗎?

[英]Can I use C as a scripting language for my engine?

我現在有一個游戲引擎,我正在為它尋找一種腳本語言。 我嘗試了 Lua 並發現它非常好,但我希望我的腳本看起來像 C 或更好的 C++ 或看起來像虛幻引擎的腳本會更好。

這甚至可能嗎?

當然可以:P 如果你願意,你可以做任何事情。

我目前看到這三種方式:

  • 要么您自己編寫代碼來解析 C/C++ 代碼,這確實不是一件容易的事
  • 您使用分析和解釋 C 代碼的解析器。 Ch 標准版應該可以解決問題,因為它可以作為腳本語言包含在自己的項目中。
  • 另一種方法是創建一個腳本,將用戶生成的代碼動態編譯到一個共享庫中,該共享庫由您的引擎動態加載。 盡管這不再是“腳本”了。

檢查 AngelScript、GameMonkey,還有很多其他的

http://codeplea.com/game-scripting-languages

或者可能是 go 硬方式並將 CINT C/C++ 解釋器 (http://root.cern.ch) 與 ROOT 庫集成。 這個想法是您將解釋您正在積極處理的所有 your.c/.cpp 文件,同時編譯 rest(您的選擇)。

例如,您是音頻程序員,您希望非音頻代碼的 rest 非常快,而您正在積極工作的東西不是這樣,而是要快速迭代 - 熱加載、動態更改等.

此外,CINT 解釋器具有額外的動態語言工具 - 您可以自省(反射) - 允許您創建例如用於打包游戲資產或任何您可能需要的序列化程序。

還有 UnderC 和 Ch(如前所述)和許多其他...

Metalua是基於 Lua 代碼庫的語言實現系統,它公開了各種語言內部結構,例如解析器 ( gg/mlp ),因此允許您擴展語言或完全更改語法。 想想 yacc 和 Lispy 元循環解釋器之間的交叉。

我不太清楚你想要什么,看起來像 C 或更好的 C++ ,但我認為這聽起來是正確的,並且在實現簡單性和靈活性之間提供了很好的平衡。

有許多腳本語言或多或少具有類似 C 的語法。 其他人已經提到過 ECMAScript,另一種選擇是s-lang ,它被設計為一種腳本語言,易於嵌入,並且語法非常接近 C。

TCC有一個允許動態編譯 C 代碼的庫,並且認為它與 C 編譯器一樣快,它可以用來(幾乎)即時編譯東西,這里有一個非常基本的示例,但是 TCC header 中的文檔在解釋內容方面要好得多。

它還附帶了一個更好的示例,展示了如何在使用 libtcc 時向編譯器公開符號,如果您禁用編譯器的某些部分(主要是導入外部庫而不是安全列表),這是可能的,因為它是完全開源的,而且不太復雜,它的內部結構上有一些基本的文檔。

就像@Charles 所說的那樣,如果您想要一些易於實現並具有靈活性的東西,請使用 Metalua。 如果您想要一種類似 C 的腳本語言,您可以嘗試 ECMAScript 或其任何超集(JavaScript、JScript、ActionScript)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM