2013-03-17 104 views
2

我用C#製作一個簡單的遊戲引擎(在VB 2008中,主要是爲我自己)。有一個主要的應用程序可以完成圖形和內容,而實際上游戲中的大部分數據都將在一個dll中生成,這些工具可以提供給遊戲設計人員。我聽說過很多關於C#的腳本編寫偉大的東西(它看起來比它更適合我的需求比其他任何方式都好),但我無法真正找到它的完成方式的答案。我遇到了這個問題:如何編譯遊戲的C#腳本

我顯然不想給出我的主要exe文件的源代碼,但它將包含腳本所需的所有主要方法(因爲它們作用於主要的exe文件)。

當它沒有定義它將在父exe文件中調用的方法時,如何生成一個dll?主要的exe文件將使dll作爲依賴來使用它。這意味着該DLL不能依賴於會導致循環的exe文件。

我可以創建另一個exe文件和庫都使用的dll,但那裏的方法將無法直接使用它的主exe文件。

我想出的唯一合理的解決方案是這樣的:

  • 與我需要的類的梗概的DLL。
  • 一個包含遊戲數據的dll。這將有一個繼承自dll的類。
  • Exe依賴於A和B.它將覆蓋B中的A方法以表現它應該的方式。

雖然這看起來不太優雅。

在我的研究中(MAF,MEF,Roslyn等),我已經看到了很多單詞,但我太累了,無法進一步閱讀。我一個人花了好幾個小時。

在你看來,我應該如何去做這件事?有我忽略的東西嗎?

+0

使用腳本你的意思是插件的C#架構? [插件教程](http://www.codeproject.com/Articles/6334/Plug-ins-in-C)或類似[用c#編寫lua腳本](http://www.gamedev.net/page/resources/_/technical/game-programming/using-lua-with-c-r2275) – 2013-03-17 04:18:54

+0

「我聽說過很多關於C#非常適合腳本編寫的問題」。 Powershell非常適合腳本編寫。 C#是一種編譯語言。 – 2013-03-17 04:18:56

+0

還有微軟腳本主機 – 2013-03-17 04:22:48

回答

0

這聽起來像是你通過dll和可擴展性混合了可擴展性,通過腳本

讓我們先看看dll方法。

執行這一標準的方法是相當接近,你已經概述了:

  1. 有一個interfaces.dll
  2. 你的切入點DLL將採取對interfaces.dll
  3. 擴展DLL的依賴將採取依賴於interfaces.dll
  4. 在運行時,要擴展main,請掃描entention dll以獲取在interfaces.dll中實現所需接口的類,根據需要調用這些方法。

對於腳本,您通常需要使用腳本語言 - PowerShell是流行的.NET和也有some experiments with JavaScript

+0

這是我得到C#腳本的想法:http://www.doolwind.com/blog/why-you-should-use-csharp-for-your-scripting-language/但我認爲接口方法可能會工作最好。出於某種原因,我只是癡迷於在一個額外的DLL中擁有一切的想法。 – Theevina 2013-03-17 16:49:51

1

我不知道你聽到C#對於腳本來說「很棒」的地方。 Rosyln的一半嘗試並不是真正的「腳本」。

爲什麼不嘗試其中一種DLR語言 - 比如IronPython和IronRuby?

此外還有.NET的Lua綁定。現在大多數遊戲開發人員在Lua中執行其腳本。因此,如果你打算保持它的源代碼,那麼mod的社區肯定會喜歡你的遊戲引擎。

+0

我嘗試過Lua,但是爲它製作.NET庫的人沒有任何文檔和以我想要的方式設置它是一團糟。 – Theevina 2013-03-17 16:40:15