哪里可以找到类似于Java上的XNA的框架

时间:2012-03-11 15:53:23

标签: java frameworks 3d xna

我现在是C#/ Java开发人员,我一直在使用C#.NET在XNA上玩得很开心。
但我想尝试在Java上开发3d,因为它是可移植的,我还没有尝试过OpenGL。

我遇到了一个问题,那里有很多可能性:

  • jMonkeyEngine
  • Avatrix3D
  • Ardor3D
  • Java3D - 我实际上没有大量调查,看起来很有趣,但我更希望看到人们实际上先说的是什么。如果这实际上是我一直在寻找的那将是非常棒的。缺点是我认为支撑位非常低。

我主要研究了JME,结果发现它更像是一个引擎,然后是一个框架(通过这个名字发生在我身上,虽然我被告知它不是)。

基本上我想要的是一个专门的 framerwork

  • 漂亮的自动渲染(参见XNA,可能比他们做的还要多一点)
  • 包含矢量数学,他们在JME中使用节点所做的很好
  • 最好使用应用程序轻松移植(与XNA不同,最终用户必须安装.NET和XNA)
  • 没有必要的实现不一定是通用的:这可能需要一个解释,我的意思是,我讨厌JME的是他们已经有一堆重的物理实现,比如他们的子弹类和simplePhysicsUpdate。他们并不总是按照你的意愿去做,而且实现你自己并不容易。在XNA中,他们将所有主题完全打开。
  • 真正的OOP方法。真。在XNA中,我认为它是一个真正的OOP方法,因为你有一个控制器类,它包含所有的 GameComponent 。这也是为个人输入管理等构建自己的库非常容易的原因。物理学也变得更容易处理。

请注意,我很长一段时间没有看过JME,所以我可能会误解它。如果我是,请说出来,并提供一些示例,说明如何实现我要求的东西。

否则请告诉我可能是什么样的想法,也就是说框架而不是引擎

另外,值得注意的是我已经问了类似的问题here。这就是我如何看待JME。我也在我的待办事项清单上查看Java3D 这个问题不同,因为我专门要求框架而不是引擎。 (对我而言,不同之处在于引擎会尝试让所有内容准备好游戏,而框架只会让实际的引擎更容易制作出适合你的需求的引擎。

编辑:在阅读了2个答案之后,我会调查Java3D,即使它似乎很少得到支持,因为我不想要JME的沉重,如果我是不打算使用它,并考虑破解产品的大块有些不对(我的意思是,如果需要的话,可以这样做,但我更愿意先考虑其他解决方案)。如果这也不起作用,我将研究jogamp和LWJGL,可能从它们构建我自己的框架(看起来像一个有趣的项目)。如果我不构建它,我会坚持使用XNA(虽然我将失去将我的任何创作安装到楼下的linux机器的可能性:()

2 个答案:

答案 0 :(得分:2)

有几个想法,但跳过追逐:没有这样的Java框架,你可以停止寻找 - 或者非常失望。

XNA是微软的一项重大投资,其范围和工具都令人惊叹。毫无疑问:XNA是微软XBox战略及其移动战略的一部分。它背后有足够的资源。没有人在Java方面做过类似的投资,因为没有主要的玩家有兴趣推动Java作为游戏平台(这可能会因Android和JavaFX而改变,但我不会屏住呼吸)。

我们在Javaland中所拥有的是许多较小的图书馆,社区和项目。更多的兴奋和想法,不那么成熟。减少工具,更多交叉授粉。我目前最喜欢的是PlayN,它是一个非常酷的跨平台库,可以让你为Android和桌面构建游戏,然后将其编译为Javascript,并在任何现代浏览器上播放,无需任何插件。

至于技术方面,有两个注意事项:

  • 我反对称“一个控制器来统治所有人”是一种真正的OO方法(并且可能反对调用任何“真正的OO方法”);它当然是一个具有良好优势的设计选择,但它有其权衡取舍。除了将它们粘贴到某个中心对象之外,还有其他提供依赖关系的方法。

  • JME不是 - AFAIR - 硬连接到任何特定的物理引擎,它是在假设一切都应该可以交换的情况下构建的。它可能以与XNA不同的方式完成,但它很好。

答案 1 :(得分:1)

我认为jMonkeyEngine可能是你最好的选择。

它被设计为一个相当功能完备的游戏引擎,但没有什么可以阻止你将它用作框架,只是选择和选择你需要的位。它也是开源的,所以如果你想做一些不同的事情,那么总是可以按你想要的方式破解它: - )

例如,如果您不喜欢更高级别的jMonkeyEngine场景图功能,您可以使用LWJGL(jME在内部使用它进行渲染)并直接使用OpenGL进行绘制。