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个回答

43

LibGDX 是我用过的最好的引擎之一,可以在几乎所有平台上运行,并且在我做的大多数测试中表现比cocos2d-x快两倍。你可以使用任何JVM语言。这里是一个使用Java的13部分教程 链接,这里有一堆使用jruby的教程 链接。它有一个很好的骨骼动画工具,在这里可以找到,同时还内置支持Tiled TMX地图。其UI框架非常棒,具有场景图和类似于cocos2d场景,精灵和动作的actor style API。社区非常强大,更新频繁,文档也很好。不要被Java吓到,它速度快,你可以使用jruby或scala或其他任何你喜欢的语言。我强烈推荐它用于2d或3d工作,它都支持。


5
现在LibGDX也可以在iOS上运行。但是获取Monotouch许可证需要大约400美元 :) - JavaRunner
5
从版本0.9.9开始,它使用免费的RoboVM用于iOS。 - James McCracken
1
我曾广泛使用过LibGDX和cocos2dx。我认为cocos2dx更好(开发速度更快+性能更好+工具更好)。如果你只是做Android,那么使用LibGDX还可以,否则不要用!LibGDX的跨平台支持非常差,这取决于RoboVM或Xamarin。Xamarin和RoboVM使iOS上的编译和执行都变得非常缓慢。最终会变得非常难以维护。 - user18853

33

我曾经使用过Marmalade,发现它很令人满意。虽然它不是免费的,开发者社区也不够大,但你仍然可以通过它的教程完成大部分任务。(我也会在有时间的时候写一些自己的教程)
IwGame是一个由Marmalade用户开发的良好引擎,适用于基本游戏,但如果你正在寻找一些严肃的高级游戏内容,你也可以使用Cocos2D-x与Marmalade。我从未使用过Cocos2D-x,但在Marmalade的Github上有一个扩展。
Marmalade的另一个好处是它的EDK(Extension Development Kit),它可以让你为你需要的任何功能制作扩展,这些功能在原生代码中可用,但在Marmalade中不可用。我用它来开发了自己的定制Admob扩展和Facebook扩展。

Edit: Marmalade现在有自己的RAD(快速应用程序开发)工具,专门用于2D开发,名为Marmalade Quick。虽然编码将使用Lua而不是C ++,但由于它是建立在C ++ Marmalade之上的,您可以轻松地包含C ++库和所有其他EDK扩展。此外,Cocos-2DxBox2D扩展已预装在Quick中。他们最近推出了发布版本(测试版持续了3-4个月)。我认为,如果您真正在寻找只针对2D开发的引擎,那么应该试试它。
Update: Unity3D最近推出了对2D游戏的支持,似乎比任何其他2D游戏引擎都要好,因为它具有GUI和编辑器。物理、精灵等支持是内置的。你可以看一下。
Update 2: Marmalade很快就会停止他们的SDK,转而支持他们的内部游戏制作。所以依靠它不是一个明智的决定。

你也可以阅读这个SO问题 - https://dev59.com/XGfWa4cB1Zd3GeqPh4dh - 0xC0DED00D
谢谢,看起来Marmalade并搭载Cocos2D-x可能确实是我这种情况下最好的选择。 - iseeall
2
当提出这样的问题时,忘记了LibGDX是不可原谅的!!! ;) - Ewoks
检查更新 :-) - 0xC0DED00D
Unreal Engine 4.3.0也可以成为一款竞争对手。它是带有编辑器的C++引擎。 - ervinbosenbacher

13

您提到了Haxe/NME,但似乎本能地不喜欢它。然而,我对它的经验非常积极。当然,API是Flash API的重新实现,但您不仅限于针对Flash,还可以编译为HTML5或本机Windows、Mac、iOS和Android应用程序。Haxe是一种类似于Java或C#的现代语言,非常愉悦。

如果您感兴趣,我已经写了一些关于使用Haxe/NME的经验:链接


谢谢,根据你的文章:“如果你有一个HTML5/Javascript(或Flash/ActionScript)游戏,并且想将其移植到Windows、iOS等平台。”我猜这个引擎正是为了让Web开发人员能够切换到移动平台。 - iseeall
Haxe/NME不是游戏引擎,而是您技术栈的一部分平台。它不适用于想要切换到移动平台的Web开发人员。它适用于游戏开发人员,他们希望将自己的游戏带到尽可能多的平台上,而无需处理像JavaScript这样劣质的语言。HAXE/NME非常强大,但从事情的声音来看,我认为这不是您正在寻找的东西。 - anber

12

V-Play (v-play.net)是一个基于Qt/QML的跨平台游戏引擎,具有许多有用的V-Play QML游戏组件,可处理多个显示分辨率和宽高比、动画、粒子、物理、多点触控、手势、路径查找等等。 API参考文档。 该引擎核心采用本机C++编写,结合自定义渲染器,使游戏在所有设备上达到坚实的60fps性能。

V-Play还提供了最成功的游戏类型(如塔防、平台游戏或益智游戏)的现成游戏模板。

如果你对使用V-Play制作的游戏感到好奇,这里是其中一些游戏的快速选择:

(免责声明:我是V-Play团队中的一员)


7

几天前我发现了一个非常整洁的Wave游戏引擎。它使用C#,并且还有Windows Phone和Windows Store转换器,这使得它成为我替代XNA的绝佳选择。


7

以下是LinkedIn上Richard Pickup对我类似问题的回复:

我曾经使用过cocos2dx、marmalade和unity在iOS和android平台上开发2D游戏。对于2D游戏来说,cocos2dx是首选。Unity对于2D游戏来说太过臃肿,而且marmalade只是一个薄薄的抽象层,并非真正的游戏引擎。你甚至可以在marmalade上运行cocos2d。我的建议是在iOS和android平台上使用cocos2dx,然后未来可以在marmalade上运行cocos2dx代码,这是一种简单的方式来移植到BB10和Windows Phone 7。


6

那么BadLogicGames的LibGDX呢?


1
我不知道libGDX可以在iOS上运行。它需要一个MonoDroid许可证,现在(可能,我没有看到该应用程序在MSIL低于32kb)每年的价格是999美元,而不是399美元。 - ashes999

6

推荐一下 Loom (http://theengine.co),这是一个全新的跨平台2D游戏引擎,具备在设备上热交换代码和资源的功能。这意味着你可以在Photoshop上制作你的资源,更新你的代码,修改你的应用/游戏的UI,并在设备上看到变化,同时应用程序正在运行。

相较于其他跨平台游戏引擎(Corona SDK、MOAI SDK、Gideros Mobile),我认为Loom Game Engine是目前最好的,拥有许多出色的功能。大多数其他类似的游戏引擎都是基于Lua(至少对我来说,语法很奇怪)。Loom Game Engine使用LoomScripts,这是一种受ActionScript 3启发的脚本语言,借鉴了C#的一些特性。如果你曾经开发过ActionScript 3、C#或Java,LoomScript的语法将会很熟悉(我比Lua的语法更加舒适)。

Loom Game Engine的1年许可证价格为500美元,我认为对于任何独立游戏开发者来说都是一个合理的价格。几周前他们还提供了免费的1年许可证。许可证过期后,你仍然可以使用Loom来创建和部署自己的游戏,但你将不会得到任何进一步的更新。Loom的创作者非常有信心,并承诺不断改进他们的产品,使其值得再次购买许可证。

以下是Loom的出色功能:

  1. 跨平台(iOS、Android、OS X、Windows、Linux/Ubuntu)

  2. 类似Rails的工作流程,让你花更多时间与你的游戏一起工作(一个命令创建新项目,另一个命令运行它)

  3. 快速编译器

  4. 实时代码和资源编辑

  5. 可能集成第三方库

  6. 使用Cocos2DX进行渲染

  7. XML、JSON支持

  8. LML(标记语言)和CSS用于样式化UI元素

  9. UI库

  10. 依赖注入

  11. 单元测试框架

  12. Chipmunk物理引擎

  13. 实时查看变化,轻松进行多设备开发

  14. 小下载大小

  15. 团队合作

你可以在这里找到更多有关Loom的视频:http://www.youtube.com/user/LoomEngine?feature=watch

同时查看这个4部分深入教程:http://www.gamefromscratch.com/post/2013/02/28/A-closer-look-at-the-Loom-game-engine-Part-one-getting-started.aspx


5

我尝试过AppGameKit,它既支持C++又支持Basic语言。 使用Basic语言编写2D游戏非常容易,具有物理、碰撞等功能。 它也在积极开发中,价格非常便宜(65美元)。 主要问题是编译Android版本非常困难(需要下载大量文件并遵循复杂的指南等)。 我认为它还不够成熟以供商业使用,但对独立程序员来说很不错。 它拥有一个中等规模的社区。


4
我目前在商业应用中使用Corona取得了很大成功。就游戏而言,我认为它提供的性能不如其他跨平台开发引擎。值得注意的是,Ansca Mobile/Corona SDK的创始人Carlos已经开始使用竞争引擎创建了另一家公司; Lanica Platino Engine for Appcelerator Titanium。虽然我个人没有使用过它,但它看起来很有前途。但请记住,它需要支付每年999美元的费用。
话虽如此,我已经研究了Moai一段时间了(因为我已经熟悉Lua语法),它似乎很有前途。它可以编译多个平台,不仅限于移动环境,这很吸引人。
Multimedia Fusion 2也是一个值得考虑的竞争者,考虑到它所制作的游戏的复杂性和性能。Vincere Totus Astrum (http://gamesare.com)是一个很好的例子。

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