2008-10-22 50 views
3

我想知道是否有可能在Microsoft XNA中嵌入Ruby作爲腳本語言,以及如何做到這一點。我正在尋找類似Xnua的東西,除了Ruby。如何將Ruby嵌入到XNA引擎中?

我偶然發現了Ruby.NET和IronRuby,兩者似乎都處於非常早期的階段,所以我不確定它們有多可用。此外,我不確定他們是否會在Xbox 360上工作。例如,這個topic at XNA forums表示IronPython不起作用。

回答

8

IronRuby和IronPython的,因爲它們是基於DLR(動態語言運行時)和DLR大量使用System.Reflection.Emit類型的當前不可用在Xbox 360上的.Net框架(修改不會在Xbox 360上運行Compact .Net框架的版本)。

至於最好的辦法,不幸的是,這取決於你的遊戲的其餘部分。在XNA程序的上下文中對IronRuby腳本進行評估的工作相當簡單,例如,請查看此blog post。除此之外,您還希望向腳本公開一些有趣的對象,這完全取決於遊戲代碼/設計的其餘部分。您可以查看scripting docs for Unity以瞭解要公開哪些類型和命令。

+0

Ruby.net會在Xbox360上工作嗎?我的理解是,它不是基於DLR,但我甚至不確定它是否仍在開發中。 – 2009-03-12 11:11:07

+0

我不知道,但如果Ruby.Net也使用System.Reflection.Emit類型,我不會感到驚訝。你可以看一下源代碼,只是對那個命名空間的警告應該告訴你。 – 2009-03-13 17:42:11

2

這幾乎可以保證IronRuby不能在Xbox上工作,但如果你只是想爲Windows開發一個XNA遊戲,那麼你應該可以像其他任何應用程序一樣使用它。

我真的不能告訴你如何你會這樣做,只是它應該是可能的。

+0

這很有趣。我仍然想知道這是否也適用於Ruby.NET或其他我不知道的解釋器。也許嘗試寫我自己的'簡單的'.NET綁定在Xbox上工作? – 2008-10-22 10:14:24

1

雖然我與葉花環的意見達成一致,讓我爲您提供一種替代方案:

「首選」的腳本語言遊戲是Lua的。例如,Crysis和Far Cry遊戲廣泛使用LUA。點擊wikipedia查看使用它的着名遊戲列表。我只是用XNA開發自己開始自己創建自己的表面,但是我知道的是,你不能直接在XNA中使用LUA。這是因爲LUA使用C++(非託管)構建,因此您將無法將其部署到XBOX360。

有一個正在開發的項目正在構建一個XNA版本的lua,在http://www.xnua.com/。這也是一個免費的產品,源代碼也可以下載。

如果遊戲行業belives是LUA是AAA級商業遊戲不夠好,我會親自遵循的方向以及(其依據是他們在這方面比我做的方式方法更多的經驗)

+0

我喜歡Lua,但問題對於Ruby來說非常特殊,因爲我已經有很多Ruby代碼。真正的答案可能是在XNA中嵌入ruby是不可能的,但我仍然想看看其他人的想法。 – 2009-03-12 11:09:22

0

爲什麼不使用Ruby進行PC開發,而使用Lua進行360開發?

編輯:也許this將是有用的。

0

雖然它不是Ruby,但這是一個老問題,我想讓你知道我一直在構建的新腳本引擎。它基本上可以在任何有.Net框架的地方運行,包括XNA下的Xbox360。它不使用Reflection.Emit,所以它適用於其他語言不能使用的地方。它也是完全託管的代碼,因此不需要像Lua一樣調用P /。

您可以從my blog獲得更多的信息,並可以在此demo page

這幾乎準備beta測試嘗試一下,但公測後的測試將是商業授權的組件