我现在是C#/ Java开发人员,我一直在使用C#.NET在XNA上玩得很开心。
但我想尝试在Java上开发3d,因为它是可移植的,我还没有尝试过OpenGL。
我遇到了一个问题,那里有很多可能性:
我主要研究了JME,结果发现它更像是一个引擎,然后是一个框架(通过这个名字发生在我身上,虽然我被告知它不是)。
基本上我想要的是一个专门的 framerwork :
请注意,我很长一段时间没有看过JME,所以我可能会误解它。如果我是,请说出来,并提供一些示例,说明如何实现我要求的东西。
否则请告诉我可能是什么样的想法,也就是说框架而不是引擎。
另外,值得注意的是我已经问了类似的问题here。这就是我如何看待JME。我也在我的待办事项清单上查看Java3D 这个问题不同,因为我专门要求框架而不是引擎。 (对我而言,不同之处在于引擎会尝试让所有内容准备好游戏,而框架只会让实际的引擎更容易制作出适合你的需求的引擎。
编辑:在阅读了2个答案之后,我会调查Java3D,即使它似乎很少得到支持,因为我不想要JME的沉重,如果我是不打算使用它,并考虑破解产品的大块有些不对(我的意思是,如果需要的话,可以这样做,但我更愿意先考虑其他解决方案)。如果这也不起作用,我将研究jogamp和LWJGL,可能从它们构建我自己的框架(看起来像一个有趣的项目)。如果我不构建它,我会坚持使用XNA(虽然我将失去将我的任何创作安装到楼下的linux机器的可能性:()
答案 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进行绘制。