适用于 Android 和 iOS 的 2D 跨平台游戏引擎? [关闭]

Posted

技术标签:

【中文标题】适用于 Android 和 iOS 的 2D 跨平台游戏引擎? [关闭]【英文标题】:2D cross-platform game engine for Android and iOS? [closed] 【发布时间】:2012-08-27 09:35:39 【问题描述】:

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

所以,我目前正在寻找 2D 引擎。我已经尝试过 Cocos2D,但它只是 ios,我不想将所有内容都重写为 android 的另一种语言(因此,例如 Cocos2d for Android 的 Java 端口不是一个选项)。相反,我想编写一次代码,并在 iOS、Android 和可能的 Windows Phone 7 上轻松部署它。我有 Mac 和 Windows。

为了更详细,以下是我对引擎的要求:

必须是跨平台的 必须高效 应该是 C++、Java、C# 或 Objective C,因为我对它们很熟悉,不是Flash、javascripthtml5,因为我不是网络开发人员 必须有一个大型社区、教程和其他库,涵盖了您在 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,未找到评论或 cmets Moai - Lua,找不到任何评论/意见 Monkey engine - 功能似乎太少了 Haxenme - 是 Fl​​ash,我没用过也不想用了 使用 Unity3d,但使用 2D 工具包等 2D 软件包 SDL 到 Android(还有 here)和 iOS 的端口 - 看起来没有太多支持或当前的开发(?) GLBasic - 基本语言,我不喜欢 playN - 似乎处于开发早期(?) Gamvas - HTML5,在我看来并不像一个成熟的引擎 Ignifuga - Python,看起来也不成熟 ORX - 不确定它是否还在开发中(?) Construct 2 - 提醒 GameMaker,可能适用于快速原型,但绝对不适用于行业级游戏 XNA,然后使用ExEn 移植游戏(需要Mono Touch 移植到iOS,Mono for Android 移植到Android)- C#,可能更适合来自微软产品(如xBox)的人(我来了)来自安卓)。此外,对于小型开发人员来说,这些 Mono 工具的总成本为 800 美元 Impact - JavaScript,使用 HTML5。我不太喜欢 JavaScript(例如 Unity3d 上的首选 C#),也不确定效率,因为它在浏览器中运行(?) GameMaker - 自己的脚本语言 GML,我记得这个是为非程序员提供的工具。它是否真的成长为真正的引擎,我的意思是进行认真的开发? AppGameKit - C++,但似乎还是很新。没有找到任何关于它的评论 使用Cocos2D 和Objective C 只为iOS 开发,然后使用Stella SDK 为Android 制作APK。有人做过吗?我很确定会有限制,那么 Google 在 Android 上的应用内结算、AdMob 和 Facebook 集成怎么样? Moscrif - JavaScript,看起来更适合以前的网络开发人员 Starling - Flash 11,我不太喜欢 Flash ND2D - 还没有 1.0,它有很多功能吗?

所以,如果您能根据您使用引擎的经验发表评论,并建议列表中的哪一个(或我遗漏的任何其他内容)最适合所描述的要求,我会很高兴。我对某些引擎的第一印象也可能有误。

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

谢谢!

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

编辑(2014 年 1 月):我想 Unity 4.3 对我的问题的答案现在非常明显:Unity 的新精灵系统和 2DToolkit 可能完全击败了其他任何东西,尤其是对于那些拥有(和我一样)使用 Unity 有一段时间了,并购买了带有附加组件的 Pro 版本。

【问题讨论】:

你选择了哪一个? libgdx 或 andEngine 呢,你甚至没有提到它们,我认为它们是最受欢迎的 @kosnkov - 他指定的要求包括一次编写一次部署两次(iOS 和 Android 以及 Windows Phone 选项)。 andEngine 仅适用于 Android,而 libgdx 不针对 iOS(也不针对 Windows Phone),因此它们不符合条件。 我最终用 Unity3D 和用于 GUI 的 NGUI 插件做了一个 3d 游戏。如果我必须做 2D 游戏,我想我会选择 Cocos2d-x 和 Marmelade 从网站上看,我很确定libgdx 现在支持 iOS。不过还是没有windows phone。 为什么像这样一个非常有用的问题总是被关闭为“离题”?也许 SO 应该为“信息”和意见创建一个单独的平台 【参考方案1】:

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

【讨论】:

现在 LibGDX 也适用于 iOS。但是 Monotouch 许可证的成本约为 400 美元 :) 从 0.9.9 版开始,它使用免费的 iOS 版 RoboVM 我曾广泛使用过 LibGDX 和 cocos2dx。并且会说 cocos2dx 更好(更快的开发 + 性能 + 工具)。如果您只使用 android,则可以使用 LibGDX,否则不要! LibGDX 的跨平台支持非常非常糟糕,这取决于 RoboVM 或 Xamarin。 Xamarin 和 RoboVM 使得 iOS 上的编译和执行都非常慢。它最终变得非常难以维护。【参考方案2】:

我曾与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 扩展。 Cocos-2DxBox2D 扩展也预包含在 Quick 中。他们最近推出了它的发布版本(它是 3-4 个月的测试版)。我想我们你真的只在寻找 2D 开发,你应该试一试。

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

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

【讨论】:

您也可以阅读这个 SO 问题 - ***.com/questions/12059539/cocos2d-or-iwgame 谢谢,看起来像带有 Cocos2D-x 的果酱可能确实是我的最佳选择。 出现这种问题时忘记[LibGDX][1]是不可原谅的!!! ;) [1]: libgdx.badlogicgames.com 检查更新:-) 虚幻引擎 4.3.0 也可以成为竞争者。它是带有编辑器的 C++。【参考方案3】:

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

如果你有兴趣,我写了一些关于我使用 Haxe/NME 的经验:link

【讨论】:

谢谢,来自您的文章:“如果您有一个 HTML5/Javascript(或 Flash/ActionScript)游戏,并且您想将它带到 Windows、iOS 及更高版本”。我猜这个引擎正是为想要切换到移动平台的网络开发者准备的。 Haxe/NME 不是游戏引擎,它是一个构成您的技术堆栈一部分的平台。它不适合想要切换到移动平台的 Web 开发人员。它适用于希望将他们的游戏带到尽可能多的平台而不必处理 JavaScript 等劣质语言的游戏开发者。 HAXE/NME 非常强大,但从事物的声音来看,我认为这不是您想要的。【参考方案4】:

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

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

如果您对使用 V-Play 制作的游戏感到好奇,以下是它们的快速选择:

Squaby:一款塔防游戏 Chicken Outbreak: 像 Doodle Jump 这样的平台游戏 Blockoban:益智游戏 Crazy Elephant:类似愤怒的小鸟的游戏 Snowball Mania:多人动作游戏 Blitzkopf:脑力游戏

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

【讨论】:

【参考方案5】:

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

我在 iOS 和 android 上都使用过 cocos 2dx marmalade 和 unity。为了 2d 游戏 cocos2dx 是每次都要走的路。团结太多了 2d 游戏的过度杀伤力,如前所述,果酱只是一种薄薄的 抽象层并不是真正的游戏引擎。你甚至可以运行 cocos2d 在果酱之上。我的方法是在 iOS 上使用 cocos2dx 和 android 然后在未来在 marmalade 上运行 cocosd2dx 代码作为 移植到 bb10 并赢得手机 7 的简单方法

【讨论】:

【参考方案6】:

几天前我发现了一个漂亮整洁的Wave game engine。它使用 C# 并具有 Windows Phone 和 Windows Store 转换器,这使它成为我 XNA 的绝佳替代品

【讨论】:

【参考方案7】:

BadLogicGames 的LibGDX 呢?

【讨论】:

我不知道 libGDX 在 iOS 上运行。它需要 MonoDroid 许可证,现在(可能,我没有看到该应用程序低于 32kb 的 MSIL)999 美元,而不是每年 399 美元。【参考方案8】:

查看 Loom (http://theengine.co) 是一个新的跨平台 2D 游戏引擎,具有在设备上热交换代码和资产的特点。这意味着您可以在 Photoshop 中处理资产、更新代码、修改应用/游戏的 UI,然后在应用运行时查看设备上的更改。

考虑到我听说过甚至玩过的其他跨平台游戏引擎,Loom 游戏引擎是迄今为止我认为最好的,具有许多出色的功能。大多数其他类似的游戏引擎(Corona SDK、MOAI SDK、Gideros Mobile)都是基于 Lua 的(至少对我来说语法很奇怪)。 Loom 游戏引擎使用 LoomScripts,这是一种受 ActionScript 3 启发的脚本语言,具有从 C# 中借用的几个功能。如果您曾经使用 ActionScript 3、C# 或 Java 进行过开发,那么 LoomScript 对您来说会很熟悉(我更喜欢这种语法而不是 Lua 的语法)。

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

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

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

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

    快速编译器

    实时代码和资产编辑

    可以集成第三方库

    使用 Cocos2DX 进行渲染

    XML、JSON 支持

    用于设置 UI 元素样式的 LML(标记语言)和 CSS

    UI 库

    依赖注入

    单元测试框架

    花栗鼠物理学

    实时查看您的更改使多设备开发变得容易

    下载体积小

    专为团队打造

你可以在这里找到更多关于 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

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

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

综上所述,我已经研究 Moai 有一段时间了(因为我已经熟悉 Lua 语法),它看起来确实很有希望。它可以为多个平台编译,不仅限于移动环境,这一事实很有吸引力。

考虑到制作的游戏的复杂性和从中实现的性能,Multimedia Fusion 2 也是一个有价值的竞争者。想到了 Vincere Totus Astrum (http://gamesare.com)。

【讨论】:

【参考方案11】:

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

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

【讨论】:

以上是关于适用于 Android 和 iOS 的 2D 跨平台游戏引擎? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

2D 跨平台游戏开发引擎 [关闭]

适用于 Android 和 iOS 的跨平台开发

适用于 Android、iOS 和 PC 的通用跨平台应用程序 - 理论上 [关闭]

如何在适用于 Android 和 iOS 的 C++ 跨平台库中正确链接 OpenCV?

适用于移动设备的跨平台工具:什么时候有用?

iOS 和 Android 跨平台游戏开发 [关闭]