适用于Android和iOS的2D跨平台游戏引擎



我在Unity3d上工作了一段时间,发现它的2D部分使用OnGUI()或GUITures太笨拙了。此外,即使是在Unity3d上完成的最小游戏,下载量也至少为10MB,这对于2D游戏来说太多了。

所以,我目前正在寻找一个2D引擎。我试过Cocos2D,但它只是iOS,我不想把所有东西都重写成Android的另一种语言(例如,Android的Cocos2D的Java端口不是一个选项)。相反,我想写一次代码,并在iOS、Android和可能的Windows Phone 7上轻松部署。我有Mac和Windows。

更详细地说,以下是我对引擎的要求:

  • 必须跨平台
  • 必须高效
  • 应该是C++、Java、C#或Objective C,因为我对它们很熟悉,NOTFlash、Javascript、HTML5,因为我不是网络开发人员
  • 必须有一个大型社区、教程和额外的库,这些库涵盖了你在iOS或Android上直接开发时所拥有的大部分内容(应用内计费、facebook等)
  • 最终交付的包裹不能太大
  • 发动机可以免费,但我也不介意付合理的价格

我发现了以下引擎:

  • Marmalade(及其之上的IwGame引擎)-C++,发现总体上对Marmalade的评价非常积极,但对IwGames不确定EDIT(2013年3月):看起来Marmalade SDK现在包括了Cocos2Dx和一些内置IDE,这使它变得更好(独立开发每年花费150美元,我对此很满意)
  • Corona SDK-Lua(效率存疑),也需要互联网连接来编译代码
  • Cocos2d-x-C++,获得了开发人员的大量评价,大多是正面的,许多人认为它最适合2D
  • 粒子代码-Java+Eclipse,未发现评论或评论
  • Moai-Lua,找不到任何评论/意见
  • Monkey引擎-似乎功能太少
  • Haxemme——这是Flash,我从来没有用过,也不想
  • 使用Unity3d,但使用2D Toolkit等2D软件包
  • SDL到Android(也在这里)和iOS的端口-看起来没有太多支持或当前的开发(?)
  • GLBasic-基本语言,我不喜欢
  • playN-似乎处于早期开发阶段(?)
  • Gamvas-HTML5,在我看来不像是一个成熟的引擎
  • Ignifuga-Python,看起来也不成熟
  • ORX-不确定它是否仍在开发中(?)
  • 构造2-提醒GameMaker,可能适用于快速原型,但绝对不适用于行业级游戏
  • XNA,然后使用ExEn移植游戏(需要Mono Touch移植到iOS,需要Mono for Android移植到Android)-C#,这可能更适合来自微软产品如xBox的人(我来自Android)。此外,对于小型开发人员来说,这些Mono工具总共花费了800美元
  • 影响-JavaScript,使用HTML5。我不太喜欢JavaScript(例如Unity3d上的首选C#),也不确定效率,因为它在浏览器中运行(?)
  • GameMaker自己的脚本语言GML,我实际上记得这是一个非程序员的工具。它真的发展成一个真正的引擎了吗
  • AppGameKit-C++,但似乎仍然很新。没有找到任何评论
  • 使用Cocos2D和Objective C只为iOS开发,然后使用Stella SDK为Android制作APK。有人这样做过吗?我很确定会有限制,谷歌的应用内计费、AdMob和Facebook在安卓系统上的集成如何
  • Moscrif-JavaScript,看起来更适合以前的网络开发人员
  • Starling-Flash 11,我不太喜欢Flash
  • ND2D-还不是1.0,它有很多功能吗

因此,如果您能从您使用发动机的经验中发表意见,并建议列表中的哪一个(或我遗漏的任何其他内容)最符合所描述的要求,我将非常高兴。我对某些发动机的第一印象也可能是错误的。

我目前认为Marmalade+IwGame是最好的选择,但由于我没有太多关于Cocos2d-x和Particle代码的信息,我真的不确定。

谢谢!

EDIT(2013年6月):到目前为止,我制作了两款跨平台的2D游戏,并使用了Unity3D和2D Toolkit插件。对于带有简单GUI的游戏,我使用了一个基于Unity自己的简单自制GUI系统。对于更复杂的插件(例如GUI元素可以重叠的地方),我使用了NGUI插件。最近,2DToolkit为GUI添加了更多的类,这非常方便,因为在将NGUI与2DToolkit结合时,必须使用两个不同的系统来制作纹理图谱。我一定会在下一个2D游戏中尝试这个。选择Unity3D进行2D游戏的主要原因是,我已经深入了解了Unity3D,无论是在经验方面,还是在积累代码片段以供重复使用方面。此外,我为3D游戏购买了Unity3D pro(包括Android pro和iOS pro),只需为2D工具包额外支付60美元就可以获得2D游戏。到目前为止,我并不后悔我的决定,这似乎是我的最佳选择。唯一让我头疼的是用Prime31的插件(安卓和iOS社交插件)添加社交功能,但我认为它们的错误不是Prime31,而是推特/脸书的错,所以我可能会在任何其他引擎或插件上看到同样的错误。

EDIT(2014年1月):我想对于Unity 4.3,我的问题的答案现在很明显了:Unity的新精灵系统,也许还有2DToolkit,完全击败了其他任何东西,尤其是对于那些(像我一样)在Unity上玩了一段时间并购买了带有附加组件的Pro版本的人来说。

LibGDX是我使用过的最好的引擎之一,几乎可以在所有平台上运行,在我所做的大多数测试中,它的执行速度是cocos2d-x的两倍。您可以使用任何您喜欢的JVM语言。这里有一个由13部分组成的Java教程,还有一些使用jruby的教程。这里有一个很好的骨骼动画工具,它也支持平铺的TMX贴图。ui框架非常棒,它有一个类似于cocos2d场景、精灵和动作的场景图和演员风格的API。社区很棒,更新频繁,文档也很好。不要让java部分吓到你,它很快,你可以使用jruby或scala或任何你喜欢的东西。我强烈推荐它用于2d或3d工作,它支持两者。

我使用过Marmalade,我觉得它很令人满意。尽管它不是免费的,开发人员社区也不够大,但您仍然可以使用它的教程来处理大部分任务。(一旦有时间,我也会写教程)
IwGame是一个很好的引擎,由Marmalade的一位用户开发。它适用于基本游戏,但如果你正在寻找一些严肃的高级游戏,你也可以将Cocos2D-x与Marmalade一起使用。我从未使用过Cocos2D-x,但Marmalade的Github上有一个扩展
Marmalade的另一个好处是它是EDK (Extension Development Kit),它允许您为您需要的任何功能进行扩展,这些功能在本机代码中可用,但在Marmalade中不可用。我用它开发了我自己的自定义Admob扩展和Facebook扩展。

编辑
Marmalade现在拥有自己的RAD(快速应用程序开发)工具,仅用于2D开发,名为Marmalade Quick。虽然编码将在Lua中,而不是在C++中,但由于它是在C++Marmalade之上构建的,因此您可以轻松地包含C++库和所有其他EDK扩展。此外,Quick中还预包含了Cocos-2DxBox2D扩展。他们最近推出了它的发布版本(它的测试版持续了3-4个月)。我认为我们真的只是在寻找2D开发,你应该试一试。

更新:
Unity3D最近推出了对2D游戏的支持,由于其GUI和编辑器,它似乎比任何其他2D游戏引擎都要好。物理,精灵等支持是内置的。你可以看一下。

更新2
Marmalade将很快停止他们的SDK,转而支持他们的内部游戏制作。因此,依赖这一点并不是一个明智的决定。

你提到Haxe/NME,但你似乎本能地不喜欢它。然而,我对它的体验非常积极。当然,API是Flash API的一个重新实现,但你不局限于Flash,你也可以编译到HTML5或原生Windows、Mac、iOS和Android应用程序。Haxe是一种令人愉快的现代语言,类似于Java或C#。

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

V-Play(V-Play.net)是一个基于Qt/QML的跨平台游戏引擎,具有许多有用的V-Play QML游戏组件,用于处理多种显示分辨率&纵横比、动画、粒子、物理、多点触摸、手势、路径查找等。API参考引擎核心是用原生C++编写的,结合自定义渲染器,游戏在所有设备上都能达到60fps的稳定性能。

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

如果你对V-Play制作的游戏感到好奇,这里有一个快速选择:

  • 壁球:塔防游戏
  • 鸡爆发:一个类似涂鸦跳跃的平台
  • Blockoban:益智游戏
  • 疯狂的大象:一个类似愤怒的小鸟的游戏
  • 雪球狂热:多人动作游戏
  • 闪电战:脑力游戏

(免责声明:我是V-Play背后的人之一)

这只是Richard Pickup在LinkedIn上对我的一个类似问题的回复:

我在iOS和android上都使用过椰子2dx果酱和unity。对于2d游戏cocos2dx是每次都要走的路。团结实在太过分了对于2d游戏来说太夸张了,正如已经说过的那样,果酱只是一种薄薄的东西抽象层并不是真正的游戏引擎。你甚至可以运行cocos2d在果酱上面。我的方法是在iOS和android在未来将在果酱上运行cocosd2dx代码简单的方式移植到bb10和赢得电话7

几天前我发现了一个漂亮整洁的Wave游戏引擎。它使用C#,并具有Windows Phone和Windows应用商店转换器,这使它成为我的XNA的一个很好的替代品

BadLogicGames的LibGDX怎么样?

检查织机(http://theengine.co)是一种新的跨平台2D游戏引擎,具有热交换代码&设备上的资产。这意味着你可以在Photoshop中处理你的资产,你可以更新你的代码,修改你的应用程序/游戏的UI,然后在应用程序运行时查看设备上的更改。

想想我听说过甚至玩过的其他跨平台游戏引擎,Loom游戏引擎是我职业生涯中最好的,有很多很棒的功能。大多数其他类似的游戏引擎(Corona SDK、MOAI SDK、Gideros Mobile)都是基于Lua的(至少对我来说,语法很奇怪)。Loom游戏引擎使用LoomScripts,这是一种受ActionScript3启发的脚本语言,并借鉴了C#的一些功能。如果您曾经使用ActionScript3、C#或Java开发过,LoomScript对您来说会很熟悉(而且我对这种语法比Lua的语法更熟悉)。

Loom游戏引擎的1年许可证价格为500美元,我认为这对任何独立游戏开发商来说都是一个负担得起的价格。几周前,该公司还免费提供了一年的许可证。许可证到期后,您仍然可以使用Loom创建和部署自己的游戏,但不会得到任何进一步的更新。Loom的创建者非常有信心,他们承诺会不断改进他们的宝宝,使其值得购买另一个许可证。

事不宜迟,以下是Loom的伟大功能:

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

  2. 受Rails启发的工作流可以让你花时间处理游戏(一个命令用于创建新项目,另一个命令则用于运行它)

  3. 快速编译器

  4. 实时代码和资产编辑

  5. 整合第三方图书馆的可能性

  6. 使用Cocos2DX渲染

  7. XML、JSON支持

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

  9. UI库

  10. 依赖注入

  11. 单元测试框架

  12. 花栗鼠物理学

  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

我试过AppGameKit,它既是c++又是Basic。在基本变体中编写2d游戏非常容易,包括物理、碰撞和堆。它也在积极开发中,而且非常便宜(65美元)。主要的问题是它真的很难为Android编译(你需要下载大量的文件,并遵循困难的指南和诸如此类的东西)我的观点是,它还不足以用于商业用途,但对独立程序员来说是好的它有一个中等规模的社区

我目前在商业应用程序中使用Corona,并取得了巨大成功。就游戏而言,我的印象是它没有提供其他一些跨平台开发引擎所能提供的性能。值得注意的是,Carlos(Ansca Mobile/Corona SDK的创始人)已经在一个竞争引擎上创办了另一家公司;用于Appcelerator Titanium的Lanica Platino发动机。虽然我没有亲自处理过这个问题,但它看起来确实很有希望。不过,请记住,它的价格是999美元/年。

尽管如此,我已经研究Moai有一段时间了(因为我已经熟悉Lua语法),它看起来确实很有前景。事实上,它可以为多个平台编译,而不限于移动环境,这很有吸引力。

考虑到制作的游戏的复杂性和实现的性能,多媒体融合2也是一个有价值的竞争者。文斯·托图斯·阿斯特鲁姆(http://gamesare.com)脑海中浮现。

最近我使用了一个AS3引擎:PushButton(现在已经死了,但它仍然可以工作,你可以使用其他东西)来完成这项工作。为了使其适用于Android和iOS,该项目在AIR中为这两个平台进行了编译,并且一切正常,没有性能损坏。由于FlashBuilder有点贵(249美元),你可以使用FlashDevelop(有一些教程可以用它在AIR中编译)。

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

最新更新