【问题标题】:Where to find a framework similar to XNA on Java在哪里可以找到类似于 XNA on Java 的框架
【发布时间】:2012-03-11 15:53:23
【问题描述】:

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

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

  • jMonkeyEngine
  • Avatrix3D
  • Ardor3D
  • Java3D - 我实际上并没有仔细研究过,这看起来很有趣,但我更愿意先看看人们实际说了什么。如果这真的是我一直在寻找的东西,那就太棒了。缺点是我认为支撑位非常低。

我主要研究了 JME,结果证明它更像是一个引擎而不是一个框架(通过这个名字我想到了,虽然有人告诉我不是)。

基本上我想从一个具体的框架中得到什么:

  • 漂亮的自动渲染(请参阅 XNA,可能比他们做的多一点,但在那个附近)
  • 包含向量数学,他们在 JME 中使用 nodes 所做的一切都很好
  • 最好易于移植到应用程序中(与 XNA 不同,最终用户必须安装 .NET 和 XNA)
  • 没有不必要的实现不一定是通用的:这可能需要解释,我的意思是,我讨厌 JME 中他们已经有一堆重物理实现,例如他们的子弹类和简单物理更新。他们不一定总是按照你的意愿去做,而且你自己的实现也不是很容易。在 XNA 中,他们完全开放了所有这些主题。
  • 真正的 OOP 方法。真的。在 XNA 中,我认为它是一种真正的 OOP 方法,因为您有一个控制器类,其中包含所有 GameComponent。这也是使构建您自己的用于个人输入管理等的库变得如此容易的原因。物理也变得更容易处理。

请注意,我很长时间没有关注 JME,所以我可能会误会它。如果我是,请说出来,并提供示例说明它如何实现我要求的内容。

否则,请给我一些想法,可能是这样的,也就是说,一个框架而不是一个引擎

另外,值得注意的是我已经问过类似的问题here。这就是我最终研究 JME 的方式。我还在我的待办事项列表中查看了 Java3D。
这个问题是不同的,因为我专门针对 framework 而不是 engine。 (对我来说,不同之处在于引擎会尝试让一切游戏就绪,而框架只是让制作适合您的需求的实际引擎变得更容易)。

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

【问题讨论】:

    标签: java frameworks 3d xna


    【解决方案1】:

    一些想法,但跳到正题:没有这样的 Java 框架,你可以停止寻找 - 或者非常失望。

    XNA 是微软的一项重大投资,其范围和工具令人惊叹。难怪:XNA 是微软 XBox 战略的一部分,同时也是他们的移动战略的一部分。它背后有大量的资源。 Java 方面从来没有人进行过类似的投资,因为没有主要参与者有兴趣将 Java 推广为游戏平台(这可能会随着 Android 和 JavaFX 而改变,但我不会屏住呼吸)。

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

    至于技术方面,两点说明:

    • 我反对将“一个控制器统治所有这些”称为真正的 OO 方法(并且可能反对将任何东西称为“真正的 OO 方法”);它当然是一个有好的方面的设计选择,但它也有它的取舍。除了将依赖项粘贴到某个中心对象之外,还有其他提供依赖项的方法。

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

    【讨论】:

    • 请注意,在实际渲染方面,JME 实际上做了同样的事情(一个控制器来统治它们):rootNode。真的没有框架支持我要求的 5 个功能吗?我相信从某些产品中破解大块是一件可怕的事情,所以我将研究 Java3D,如果不这样做,我可能会使用 LWJGL/JOGL 自己制作,或者只是留在我的 .NET 世界中XD
    • 我对单控制器没什么意见,真的;我的许多最好的朋友都是单身人士。我只是反对考虑他们(或其他任何事情)“唯一真正的 OOP 技术”:) 至于你的疑问,好吧 - 自己看。 XNA 不是一般的开源项目。这是一个巨大的平台,只能由拥有大量资源的大供应商提供。没有一家 Java 供应商认为投资构建 Java 游戏平台是一个好主意,所以我们有很多很棒的开源东西,只是没有你习惯的成熟度。顺便说一句,Java3D 太低级了,你会哭的。
    • 是的,您在查看我背后的事实之前授予其他答案,确实伤害了:-)
    • 是的,现在我已经检查过了,我会把它给你,虽然两个答案都很好,你的(现在)更完整了。顺便说一句,关于 java3D,它到底有多低级? OGL - 纯 - 功能低,或者“我只会渲染你的东西,你做剩下的”低?
    • 哎呀,java3D真的很低级! Jogamp/LWJGL 有那么糟糕吗?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-05
      • 2018-09-13
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      相关资源
      最近更新 更多