2010-08-10 30 views
7

在我準備寫自己的2D(也許是3D)遊戲引擎之前,我正在做一些研究。我在使用C#和XNA之前製作了一個引擎,但是我想通過使用opengl等在C++中創建新引擎來跨平臺。使用C++編寫並暴露給C#或直接在C#中編寫?

但是...我仍然希望從C#開始快速迭代並訪問到那裏的遊戲引擎。

所以我在這裏有幾個選項。

  1. 寫在C發動機和CLI包裝++
  2. 直接寫了整個事情在C#,C++中沒有C++
  3. 編寫和使用單聲道加載C#代碼/組件進入發動機。
  4. 沒有C#
  5. ...也許這是我沒想到的又

我想我需要的速度剔除,場景圖的東西,矩陣計算,粒子系統等

是寺優點和缺點? 你有什麼建議?

+0

可能是愚蠢的問題,因爲我不太瞭解C#:用C#這樣的GC'd語言寫這樣的東西是否可行,或者GC暫停是否可以讓你活着? – dsimcha 2010-08-10 19:58:23

+0

這是可行的,性能是可以接受的。 C++是,並將永遠(我沒有這麼說!)更快。已經有幾個C#遊戲引擎在浮動。例如,扁平紅球。 – WoutervD 2010-08-10 20:11:36

回答

2

如果你想跨平臺,你不能使用C++/CLI。這在Windows以外的任何平臺上都不受支持。

這就是說,對於跨平臺,我要麼使用C# with Tao,要麼使用C++使引擎成爲庫,並且使用Platform Invoke從C#代碼中「使用」庫。這將爲您提供您在覈心引擎(C++)中所需的速度和控制力,以及C#中游戲設計的靈活性。

這提供了一個乾淨的跨平臺手段,用於開發可暴露於C#的遊戲引擎。

+1

Hmm Tao是一個有點陳舊的外觀(5年沒有更新!)和他們的域名(http://taoframework.com)已被佔地者接管...它是否仍然最新或已過時? – FrustratedWithFormsDesigner 2010-08-10 19:45:39

+0

如果您將引擎代碼拆分爲C++,請確保您不會在本機/管理邊界上進行不必要的「聊天」調用。 – 2010-08-10 19:49:29

+0

@FrustratedWithFormsDesigner:它現在在單核心中。由於它是一個直接的OpenGL封裝,並且非常穩定,所以它仍然是一個不錯的選擇。否則,您可以使用OpenTK,但也包括其他內容(這可能對遊戲引擎有用)。 – 2010-08-10 19:56:23

1

陶框架是死的,儘量OpenTK代替

1

優化的C++代碼會顯著更快(在我的情況下ODE在32位和64位的近40%20%; C#是64慢比C#在32位,但這是另一篇文章)。我會利用C++庫中的繁重數學(積分,微分方程等)。