首先,我为这个漫长的职位道歉。我一直在问一些关于haxe和它作为解决我所面临的问题的工具的适用性的问题。我对haxe的知识非常有限,但我所知道的是我对haxe在我的项目中的理想角色不是haxe的正常使用。所以,我想避免的是浪费时间(尽管它看上去很有趣和强大),但却发现它不适合我的目的。所以我希望能从你们哈克斯经验丰富的兽医那里得到一些关于它是否适合于目的的建议。我真的希望是这样。
以下是我正在努力实现的目标:
我在游戏行业工作,我需要在C++和JS中创建一个游戏。C++用于嵌入式系统,JS用于在线和移动。我在C++和JS方面都很有经验。
我开发的游戏我只想写一次。现在,我可以使用像emscripten这样的东西从C++转到JS,但是这将导致编译的JS代码不能很容易地用chrome工具进行调试。据我所知,我将在编译后的JS中遇到边缘案例错误,而我无法轻松地将其返回到原始的C++。另外,游戏的一些平台需要公平的实验室来查看源代码,这将是编译后的JS的一个问题。
我真正需要的是一个源代码编译器,它生成原生和人类可读的c++和JS代码,然后我可以使用这些代码并在必要时以其本机形式进行修改,因此可以使用haxe。我看过haxe为C++和JS生成的代码。JS看起来非常容易理解和使用。C++没有那么多,但还是可以接受的。我甚至可以阻止哈克斯编译和链接C++,这是我不需要的。我只想要源代码。
到目前一切尚好。
现在,我在c++中有了一个游戏框架,它使用了Oxgine2d引擎。它能够显示精灵等,以及我为消息总线和有限状态机(加载更有用的类)创建的框架。我在JS中也有一个类似的框架,它使用Pixijs作为其2d引擎,并且有自己的消息总线等,就像C++引擎一样。
现在,我想要做的是用haxe编写模块,当我将代码转换到C++和JS时,代码可以作为框架的一部分,并与其受人尊敬的语言引擎一起工作。我在haxe中创建的每个对象都将被非常封装,只需要订阅消息总线、处理消息并将消息发回。它还可能需要知道如何使用其引擎状态机。因此,我不知道haxe是否可能这样做,因为消息总线(以及其他对象)不会用haxe编写,而是在模块被转移并在其本地项目中构建后提供给模块。也许我可以写我自己的haxe库,它知道我的两个游戏引擎的语法,并且可以根据目标语言来传输?不确定那是可能的。
感谢你抽出时间阅读,以及你能给出的任何建议。
发布于 2016-06-22 15:35:48
您可以使用
#if cpp
// c++ implementation
#elseif js
// javascript implementation
#end为了允许针对不同目标的一些不同实现,这可以在代码中的任何地方进行,因此您可以将一个Haxe值传递给针对不同目标的不同函数。
使用外部定义:
具体来说,使用c++可能会更复杂,您需要查看CFFI或Linc https://snowkit.github.io/linc/。
它的复杂性很可能是为了让这些类型变得更复杂。请记住,Haxe c++已经管理了内存,您的引擎可能会做不同的事情。此外,HL即将到来,并可能有一些优势。
看看oxygine2d,它看起来有点像Flash吗?我知道pixijs基本上是基于Flash的。我相信OpenFL现在使用pixijs进行WebGL呈现。您可能还想看看NME ( C++的接口与OpenFL几乎相同,但NME有类似Cppia设置的东西,有时更稳定)。如果JS或C++太慢,您需要查看着色器和豪华/Kha进行渲染,您可能也想尝试堆,它使用Lime ( openfl )和一些哈克斯js webgl,我认为。
如果您需要2D物理,那么可以使用Nape --它可以与任何Haxe工具包一起使用(豪华、OpenFL、Kha、Flambe),这里有物理学家,但没有那么多使用。Kha和Nape信息例如:https://github.com/lewislepton/kha-examples/blob/master/NAPE/Sources/Project.hx
我真的怀疑,如果你想要在不同的平台上使用不同的引擎,那么你的生活就会变得很艰难,而HaxeFlixel或朋克可能会让你在跨目标的工具包上使用Nape来满足你的所有需要,但是,用你自己的方式去做是非常可行的。
也许看看Tink或Thx的信号、事件总线等等,宏(如Tink中使用的)允许在编译时构建许多结构,因此可以通过在运行时之前这样做来减少大部分开销,因此编译器可以预计算the。有一个hxcpp调试器,如果您在chrome中运行Haxe,它应该通过js源映射给您哈克斯行号。
希望我已经谈过你大问题的一些方面。
Haxe允许您与本地用户进行混合和匹配,但我认为使用Pixijs和oxygine 2d可能并不理想,因为在内置目标优化的纯Haxe中肯定会有足够好的游戏工具,您只需进入Kha IRC、Luxe、Haxe IRC和OpenFL论坛并问几个问题。
https://stackoverflow.com/questions/37969012
复制相似问题