我现在是一名 C#/Java 开发人员,我在 XNA 和 C#.NET 上玩得很开心。
但我想尝试在 Java 上开发 3d,因为它是可移植的,而且我还没有尝试过 OpenGL。
我遇到了一个问题,这里有很多可能性:
我主要研究了 JME,事实证明它更像是一个引擎而不是一个框架(我从名字中想到了这一点,尽管有人告诉我它不是)。
基本上我希望从特定的框架中得到什么:
请注意,我已经很长时间没有关注 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/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI