【问题标题】:Best way to port c++ game to web [closed]将 C++ 游戏移植到网络的最佳方式 [关闭]
【发布时间】:2012-07-27 07:43:32
【问题描述】:

我意识到上述问题相当广泛,因此我将缩小范围。我有一个简单的 opengl c++ 游戏引擎,它位于静态库中(可以转换为动态库)。

我一直在想办法让它在 web 中运行。据我所知,我可以使用 ActiveX 或 Google NaCl 在浏览器中运行 c++ 代码。但这些技术似乎不容易跨平台?或者我理解错了。

我看到的另一个选择是将引擎转换为 javascript 和 WebGL 并在 HTML5 画布中运行。这会比 c++ 慢吗?不过,这将是非常跨平台的。

您认为最好的选择是什么,或者更好的是我错过了任何其他选择吗?

编辑:类似统一网络播放器的自定义插件怎么样?

【问题讨论】:

  • 恐怕没有简单便携的方法可以做到这一点。所涉及的技术差异太大。我知道 Quake III 被“移植”到网络上,但我相信他们必须重写很多内容。
  • 所以如果我要使用 ActiveX 类型的技术,我必须为每个 Web 浏览器编写不同的版本?

标签: javascript c++ html activex google-nativeclient


【解决方案1】:

@kripken 创建了一个仍在开发中的库。它需要 LLVM 位码并转换为 Javascript。

您可以在此处查看项目页面,其中包含工作示例。 https://github.com/kripken/emscripten/

【讨论】:

    【解决方案2】:

    我强烈建议移植到 NaCl。

    优点:

    1. 性能:您可以使用 CPU 的全部功能来渲染您的游戏。如果您的游戏使用良好的 3D 图形或物理效果,即使在旧系统配置上,您也可以让它看起来很流畅。 NaCl 的性能与 Native OS 应用程序相当,当我将相同的游戏与 Win32 版本进行比较时,它仅损失了近 5% 到 10% 的 FPS。
    2. 有很多已经移植的示例,NaCl 游戏可以帮助您轻松完成。
    3. 它已经是跨平台的。 Chrome 可在 Windows、Linux、Mac OSX 上运行。

    缺点:

    1. 可能需要大约一周的时间才能移植。您必须移植到 OpenGL ES 2.0(但是,它应该与任何基于浏览器的方法相同,尤其是 HTML5)
    2. 仅在 Chrome 上运行。

    【讨论】:

    • 我已将 Irrlicht 渲染引擎移植到 NaCl 中,与任何基于 JavaScript 的游戏性能相比,它的性能非常好。
    【解决方案3】:

    如果你想在浏览器中移植一些东西,那么它必须依赖 Javascript(可能还有 WebGL,尽管 IE 不支持)。

    ActiveX 和 NaCL 不能以任何方式、形状或形式移植。

    我不能说哪个更容易,但你可以选择用 Javascript 重写你的游戏,或者使用像 Emscripten 这样的工具将你的 C++ 编译为 JavaScript。

    请注意,如果您使用后者,它仍然不是灵丹妙药。您可能需要对代码进行大量更改(例如,因为 C++ 游戏中使用的库和 API 在浏览器上不可用)

    【讨论】:

    • 请注意,PNaCL 是完全可移植的。目前适用于 X86(-32,-64) 和 ARM,但它可以扩展到其他平台,因为它基于 LLVM 位码。操作系统方面 - 目前它适用于:Linux、Mac、ChromeOS、Windows ......目前还没有在移动设备上运行(但我没有看到技术障碍,这看起来像是时间问题)。如果问题是关于桌面/移动或只是跨桌面兼容性,我会说它是可移植的跨平台 - stackoverflow.com/a/11685887/544721
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多