2012-07-27 144 views
5

我意識到上述問題相當廣泛,所以我會縮小範圍。我有一個簡單的opengl C++遊戲引擎,它存在於一個靜態庫中(可以轉換爲動態庫)。將C++遊戲移植到網絡上的最佳方法

我一直在想辦法讓它在網上運行。從我所看到的我可以使用ActiveX或Google NaCl在瀏覽器中運行C++代碼。但是這些技術似乎不容易跨平臺?或者我可能誤解了。

我看到的另一個選擇是將引擎轉換爲JavaScript和WebGL,並在HTML5畫布中運行。這會比C++慢嗎?這將是非常跨平臺的。

您認爲最好的選擇是什麼,或者更好,還有其他的選擇我錯過了嗎?

編輯:自定義插件類似於統一網頁遊戲怎麼樣?

+0

恐怕沒有簡單便攜的方法。所涉及的技術差異太大。我知道Quake III被「移植」到網絡上,但我相信他們必須重寫很多。 – ereOn 2012-07-27 07:47:50

+0

因此,如果我要使用ActiveX類型技術,那麼我必須爲每個Web瀏覽器編寫不同的版本? – Constan7ine 2012-07-27 07:50:21

回答

4

實際上有幾種技術可以幫助解決這個問題。這三個我碰到過,但有極少/沒有經驗:

+0

果醬看起來不錯!非常感謝! – Constan7ine 2012-07-27 08:01:44

+0

Emscripten看起來很有趣 - 它實際上可以將C++代碼編譯爲Javascript。 – 2012-12-16 19:24:50

5

有一個由@kripken創建的庫,它仍在開發中。它需要LLVM位碼並轉換成Javascript。

您可以在這裏看到項目頁面,並附帶工作示例。 https://github.com/kripken/emscripten/

1

如果你想在瀏覽器中的東西隨身攜帶,那麼它必須依賴於Javascript(可能是WebGL,儘管IE不支持)。

ActiveX和NaCL不能以任何方式,形狀或形式進行移植。

我不能說哪個更容易,但是您可以選擇使用Javascript重寫您的遊戲,或使用類似Emscripten的工具將您的C++編譯爲JavaScript。

請注意,如果您使用後者,它仍然不是一顆銀色的子彈。您可能需要對代碼進行大量更改(例如,因爲您的C++遊戲中使用的庫和API在瀏覽器中不可用)

+0

請注意,PNaCL是完全便攜的。目前用於X86(-32,-64)和ARM,但它可以擴展到其他平臺,因爲它基於LLVM位代碼。操作系統明智 - 目前它的工作原理是:Linux,Mac,ChromeOS,Windows ...目前它還沒有在移動設備上(但我沒有看到技術障礙,它看起來像時間問題)。由於問題不是框架,如果它是關於桌面/移動或只是跨桌面兼容性,我會說這是它的便攜式跨平臺 - http://stackoverflow.com/a/11685887/544721。 – 2014-02-15 22:18:28

3

我強烈建議移植到NaCl。

優點:

  1. 性能:可以使用CPU的全部功能,以使您的遊戲。如果您的遊戲使用良好的3D圖形或物理效果,即使在舊的系統配置中,也可以使其看起來平滑。 NaCl的性能與Native OS應用相當,當我將相同的遊戲與Win32版本進行比較時,它的性能僅下降了近5%至10%。
  2. 有很多已經移植過的例子,NaCl遊戲可以幫助你輕鬆做到。
  3. 它已經是跨平臺的。 Chrome可在Windows,Linux,Mac OSX上運行。

缺點:

  1. 可能需要你一個星期左右到端口。您必須移植到OpenGL ES 2.0(但是,它應該與任何基於瀏覽器的方法相同,尤其是HTML5)
  2. 僅在Chrome上運行。
+1

我已將Irrlicht渲染引擎移植到NaCl,與任何基於JavaScript的遊戲性能相比,性能非常好。 – codetiger 2012-07-27 10:21:44