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

标签 java frameworks 3d xna

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

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

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

我主要研究了 JME,事实证明它更像是一个引擎而不是一个框架(我从名字中想到了这一点,尽管有人告诉我它不是)。

基本上我希望从特定的框架中得到什么:

  • 相当自动的渲染(参见 XNA,可能比他们做的多一点,但围绕着它)
  • 包括 vector 数学,他们在 JME 中使用节点所做的很好
  • 最好易于移植应用程序(不像 XNA,最终用户必须安装 .NET 和 XNA)
  • 没有不必要的实现不一定是通用的:这可能需要解释,我的意思是,我讨厌 JME 的是他们已经有一堆沉重的物理实现,比如他们的子弹类和简单的物理更新。他们不一定总是按照您的要求去做,而且实现您自己的也不是很容易。在 XNA 中,他们将所有这些主题完全开放。
  • 真正的 OOP 方法。真的。在 XNA 中,我认为这是一种真正的 OOP 方法,因为您只有一个 Controller 类,其中包含所有 GameComponent。这也是为个人输入管理等构建自己的库如此容易的原因。物理学也变得更容易处理。

请注意,我已经很长时间没有关注 JME 了,所以我可能会误会它。如果我是,请这样说,并可能提供示例说明它如何实现我要求的事情。

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

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

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

最佳答案

几个想法,但跳到正题:Java 没有这样的框架,您可以停止寻找 - 否则会非常失望。

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

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

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

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

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

关于java - 在哪里可以找到类似于 Java 上的 XNA 的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9656446/

相关文章:

java - Libgdx:骨架存储动画和移动网格部件

java - 在运行时加载内部类

java - 如何在虚拟机/远程计算机上的工作区中启动本地 html 文件

java - 使用 apache solr 6.1.0 时由于 maven 依赖而出错

php - 如何以使用不同模型的形式实现 kartik yii2 FileInput

.net - .Net 项目从 Framework 1.1 迁移到 Framework 4.0(Windows 应用程序)

java - 如何转换nativeselect选择的值vaadin

java - 在Java中执行windows命令

matlab - 在 MATLAB 中根据一组内部 3D 散点绘制表面

opengl - 基于四元数的相机