gpt4 book ai didi

haxe - 使用 haxe 作为 c++ 和 JavaScript 之间的转译器

转载 作者:行者123 更新时间:2023-12-04 21:36:00 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。




Improve this question




首先,我为长篇大论道歉。我一直在问一些关于 haxe 及其作为解决我面临的问题的工具的适用性的问题。我对 haxe 的了解非常有限,但我所知道的是,我在项目中对 haxe 的理想角色不是正常使用 haxe。所以我试图避免浪费时间我没有学习这门语言(尽管它看起来非常有趣和强大)只是发现它不适合目的。因此,我希望从经验丰富的 vert 那里得到一些建议,看看它是否适合目的。我真的希望它是。

这是我想要实现的目标:

我在游戏行业工作,我需要用 C++ 和 JS 创建一个游戏。用于嵌入式系统的 C++ 和用于在线和移动设备的 JS。我在 C++ 和 JS 方面都非常有经验。

我开发的游戏我只想写一次。现在我可以使用 emscripten 之类的东西从 C++ 到 JS,但这会导致编译的 JS 代码无法使用 chrome 开发工具轻松调试。我确信我会在编译的 JS 中遇到边缘情况错误,我不能轻易地回到原始 C++。另外,一些游戏平台需要公平实验室查看源代码,这对于编译的 JS 来说是个问题。

我真正需要的是一个源到源编译器,它可以生成 native 和人类可读的 C++ 和 JS 代码,然后我可以在必要时使用并修改其 native 形式,因此是 haxe。我查看了 haxe 为 C++ 和 JS 生成的代码。 JS 看起来非常容易理解和使用。 C++ 不是那么多,但仍然可以接受。我什至可以阻止 haxe 编译和链接我不需要的 C++。我只想要源代码。

到现在为止还挺好。

现在我有一个使用 oxygine 2d 引擎的 c++ 游戏框架。它能够显示 Sprite 等以及我为消息总线和有限状态机创建的框架(也加载更多有用的类)。我在 JS 中也有一个类似的框架,它使用 Pixijs 作为其 2d 引擎,并拥有自己的消息总线等,就像 C++ 引擎一样。

现在我想要做的是用 haxe 编写模块,当我转译为 C++ 和 JS 时,代码可以作为框架的一部分包含在内,并与它受人尊敬的语言引擎一起工作。我在 haxe 中创建的每个对象都将非常封装,只需要订阅消息总线、处理消息并发送回消息。它可能还需要知道如何使用其引擎状态机。所以我不知道这是否甚至可以使用 haxe,因为消息总线(以及其他对象)不会用 haxe 编写,而是在它被转译并在其 native 项目中构建后提供给模块。也许我可以编写自己的 haxe 库,它知道我的两个游戏引擎的语法,并且可以根据其目标语言进行转换?不确定这是可能的。

感谢您花时间阅读,以及您可以提供的任何建议。

最佳答案

您可以使用

#if cpp
// c++ implementation
#elseif js
// javascript implementation
#end

为了允许针对不同目标的一些不同实现,这可以在代码中的任何位置进行,因此您可以将 Haxe 值传递给不同目标的不同函数。

要使用外部定义:
  • http://haxe.org/manual/lf-externs.html
  • http://old.haxe.org/doc/js/extern_libraries

  • 特别是使用 c++ 可能更复杂,您需要查看 CFFI 或 Linc
    https://snowkit.github.io/linc/
    复杂性可能是使类型得到跨越。请记住,Haxe c++ 已管理内存,您的引擎可能会做不同的事情。 HL 也即将推出,可能会有一些优势。

    看着 oxygine2d 看起来有点像 Flash API?而且我知道 pixjs 大致基于 Flash API。我相信 OpenFL 现在使用 pixjs 进行 WebGL 渲染。您可能还想查看 NME(C++ 的接口(interface)与 OpenFL 几乎相同,但 NME 有 Cppia setup 之类的东西,有时更稳定)。如果 JS 或 C++ 太慢,您需要查看着色器和 Luxe/Kha 进行渲染,并且您可能还想尝试使用 Lime ( openfl ) 和一些 haxe js webgl 的堆。
    如果您需要 2D 物理然后使用 Nape,它可以与任何 Haxe 工具包(Luxe、OpenFL、Kha、Flambe)一起使用,还有 physaxe,但用得不多。 Kha 和 Nape 信息,例如:
    https://github.com/lewislepton/kha-examples/blob/master/NAPE/Sources/Project.hx

    我真的怀疑,如果 HaxeFlixel 或 Punk 可能会为您提供在其中一个跨目标工具包上使用 Nape 运行所需的一切,那么您希望为不同的平台使用不同的引擎,这会让您的生活变得艰难,但按照您的方式去做是非常可行的。

    也许看看 Tink 或 Thx 的信号事件总线等,宏(就像在 Tink 中使用的那样)允许在编译时构建很多结构,因此可以通过在运行时之前执行它来减少大部分开销,所以补间可以由编译器预先计算。有一个 hxcpp 调试器,如果您在 chrome 中运行 Haxe,它应该通过 js 源映射为您提供 Haxe 行号。

    希望我已经涵盖了您的大问题的某些方面。

    Haxe 允许您与原生混合和匹配,但我认为使用 Pixijs 和 oxygine 2d 可能并不理想,因为纯 Haxe 中肯定有足够好的游戏工具内置目标优化,您只需要进入 Kha IRC , Luxe gitter, 和 Haxe IRC 和 OpenFL 论坛,问几个问题。

    关于haxe - 使用 haxe 作为 c++ 和 JavaScript 之间的转译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37969012/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com