Android和iOS的2D跨平台游戏引擎?

263
我曾经使用过Unity3d,并发现其2D部分的OnGUI()或GUITextures太笨重了。此外,即使是最简单的Unity3d游戏也至少需要下载10MB,这对于一个2D游戏来说太大了。
因此,我目前正在寻找一个2D引擎。我尝试过Cocos2D,但它只适用于iOS,而我不想为Android重新编写所有内容(因此,例如Cocos2d的Java端口对于Android不是一个选项)。相反,我希望只写一次代码,并且尽可能轻松地在iOS、Android和可能的Windows Phone 7上部署它。我有Mac和Windows两个系统。
更详细地说,以下是我对引擎的要求:
  • 必须跨平台
  • 必须高效
  • 应该使用C++、Java、C#或Objective C,因为我熟悉它们,而不是Flash、Javascript、HTML5,因为我不是网页开发者
  • 必须拥有庞大的社区、教程和其他库,涵盖了在iOS或Android上直接开发时所需的大部分内容(应用内购买、Facebook等)
  • 最终交付的包不能太大
  • 引擎可以免费使用,但我也不介意支付合理的价格

我找到了以下引擎:

  • Marmalade(和IwGame engine)- C++,发现Marmalade总体评价非常积极,但不确定IwGame如何。 编辑(2013年3月):看起来Marmalade SDK现在包括Cocos2Dx和一些内置IDE,使其更好(对于独立开发者每年150美元的费用还可以接受)。
  • Corona SDK - Lua(效率值得怀疑),还需要互联网连接才能编译代码
  • Cocos2d-x - C++,收到许多开发人员的评论,大多数是积极的,并且许多人认为它最适合2D
  • Particle code - Java + Eclipse,没有找到任何评论或意见
  • Moai - Lua,找不到任何评论/意见
  • Monkey engine - 功能似乎太少了
  • Haxenme - 它是Flash,我从未使用过,也不想使用
  • 使用Unity3d,但使用2D工具包,例如2D Toolkit
  • SDL的移植到Android(也在here)和iOS - 看起来没有太多支持或当前开发(?)
  • GLBasic - 基本语言,我不喜欢它
  • playN - 看起来还处于早期开发阶段(?)
  • Gamvas - HTML5,对我来说不像成熟的引擎
  • Ignifuga - Python,也看起来不成熟
  • ORX - 不确定它是否仍在开发中(?)
  • Construct 2 - 类似GameMaker,可能适用于快速原型设计,但绝对不适用于产业级游戏
  • XNA然后使用ExEn移植游戏(需要Mono Touch移植到iOS和Mono for Android移植到Android)- C#,可能更适合从Microsoft产品(例如xBox)转来的人(我来自Android)。此外,这些Mono工具对于小型开发人员总共需花费800美元
  • Impact - JavaScript,使用HTML5。我不太喜欢JavaScript(例如在Unity3d上更喜欢C#),也不确定效率,因为它在浏览器中运行(?)
  • GameMaker - 自己的脚本语言GML,我记得这是一个面向非程序员的工具。它实际上已经发展成为真正的引擎了吗,我是说用于严肃的开发?
  • AppGameKit - C++,但似乎仍然很新。没有找到任何评论
  • 使用Cocos2D和Objective C仅为iOS开发,然后使用Stella SDK将其制作成Android的APK。有人这样做过吗?我相当确定会有限制,那么在Android上的Google应用内计费、AdMob和Facebook集成怎么办?
  • Moscrif - JavaScript,看起来更适合以前的Web开发人员
  • Starling - Flash 11,我不太擅长Flash
  • ND2D - 还没有1.0版本,它有很多功能吗?
所以,如果您能从引擎方面的经验进行评论并建议列表中最适合所述要求的引擎(或我可能错过的任何其他引擎),我会很高兴。我目前认为Marmalade+IwGame是最佳选择,但由于我对Cocos2d-x和Particle代码没有太多信息,所以我不太确定。谢谢! 编辑(2013年6月):到目前为止,我已经制作了两个跨平台的2D游戏,并且都使用了Unity3D和2D Toolkit插件。对于简单GUI的游戏,我使用了基于Unity自己的简单自制GUI系统。对于更复杂的游戏(例如GUI元素可以重叠的游戏),我使用了NGUI插件。最近,2D Toolkit添加了一些GUI类,这非常方便,因为在将NGUI与2D Toolkit组合时,必须使用2种不同的纹理集系统。我肯定会在下一个2D游戏中尝试这个。选择Unity3D制作2D游戏的主要原因是我已经深入研究了Unity3D,无论是经验还是积累的代码片段都很多,而且我购买了Unity3D Pro(带有Android Pro和iOS Pro)用于3D游戏,只需要额外支付60美元就可以获得2D Toolkit以覆盖2D游戏。到目前为止,我没有后悔我的决定,似乎对我的情况来说是最优的。唯一让我头痛的事情是使用Prime31的插件(Android和iOS社交插件)添加社交功能,但我认为它们的错误不是Prime31的问题,而是Twitter / Facebook的问题,所以我可能会在任何其他引擎或插件上看到相同的错误。

编辑 (2014年1月): 我猜随着Unity 4.3的推出,对于我的问题答案已经非常明显了:Unity的新精灵系统以及可能还有2DToolkit完全击败了其他任何东西,特别是对于那些已经用Unity并购买了专业版附加功能的用户(像我一样)。


1
@kosnkov - 他指定的要求包括编写一次,部署两次(iOS和Android,并且支持Windows Phone是一个加分项)。AndEngine仅适用于Android,而Libgdx不针对iOS(也不针对Windows Phone),因此它们不符合条件。 - sprite
1
我最终使用Unity3D和NGUI插件制作了一款3D游戏。如果我需要制作2D游戏,我想我会选择Cocos2d-x和Marmalade。 - iseeall
1
从网站上看,我相当确定libgdx现在支持iOS。但是仍不支持Windows手机。 - Ehtesh Choudhury
你为什么没有添加jMonkey引擎? - Simon
1
为什么像这样非常有用的问题总是被关闭为“离题”?也许SO应该为“信息”和观点创建一个单独的平台。 - Bogdan Alexandru
显示剩余4条评论
11个回答

3

最近我使用了一个AS3引擎:PushButton(现在已经停止更新,但仍然可用,并且您可以使用其他引擎)来完成这项工作。为了使它能够与Android和iOS配合使用,该项目在AIR中编译,一切都没有性能损失。由于Flash Builder有点昂贵($249美元),您可以使用FlashDevelop(有一些教程可以在其中使用AIR进行编译)。

Flash可能是一个选择,因为它非常容易学习。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接